From cc8ddc457495d0f6c77aaf62b326dab68392bc34 Mon Sep 17 00:00:00 2001 From: Valentin Lab Date: Mon, 8 Aug 2022 17:23:52 +0200 Subject: [PATCH] new: [vps] add `rocketchat drop-indexes` command Signed-off-by: Valentin Lab --- bin/vps | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/bin/vps b/bin/vps index a817cea..8598cea 100755 --- a/bin/vps +++ b/bin/vps @@ -636,6 +636,13 @@ compose:psql() { } export -f compose:psql +compose:mongo() { + local project_name="$1" dbname="$2" container_id + container_id=$(compose:charm:container_one "$project_name" "mongo") || return 1 + docker exec -i "${container_id}" mongo --quiet "$dbname" +} +export -f compose:mongo + compose:pgm() { local project_name="$1" container_network_ip container_ip container_network @@ -715,6 +722,15 @@ cyclos:unlock() { export -f cyclos:unlock +rocketchat:drop-indexes() { + local project_name="$1" dbname="$2" + + echo "db.users.dropIndexes()" | + compose:mongo "${project_name}" "${dbname}" +} +export -f rocketchat:drop-indexes + + compose:project_name() { if [ -z "$PROJECT_NAME" ]; then PROJECT_NAME=$(compose --get-project-name) || { @@ -1391,4 +1407,43 @@ cmdline.spec:cyclos:cmd:unlock:run() { } + +cmdline.spec.gnu rocketchat + +cmdline.spec::cmd:rocketchat:run() { + : +} + +cmdline.spec.gnu drop-indexes +cmdline.spec:rocketchat:cmd:drop-indexes:run() { + + : :optval: --database,-d "Target database ('rocketchat' if not specified)" + : :optval: --service,-s "The rocketchat service name (defaults to 'rocketchat')" + + local URL + + rocketchat_database=${opt_database:-rocketchat} + rocketchat_service="${opt_service:-rocketchat}" + project_name=$(compose:project_name) || exit 1 + container_id=$(compose:service:container_one "${project_name}" "${rocketchat_service}") || exit 1 + + Wrap -d "stop ${DARKYELLOW}${rocketchat_service}${NORMAL}'s container" -- \ + docker stop "$container_id" || exit 1 + + errlvl=0 + Wrap -d "drop indexes" -- \ + rocketchat:drop-indexes "${project_name}" "${rocketchat_database}" || { + errlvl=1 + errmsg="Failed to drop indexes" + } + Wrap -d "start ${DARKYELLOW}${rocketchat_service}${NORMAL}'s container" -- \ + docker start "${container_id}" || exit 1 + + if [ "$errlvl" != 0 ]; then + err "$errmsg" + fi + exit "$errlvl" +} + + cmdline::parse "$@"