#!/bin/bash

set -u
set -e

datetime=`date +%Y%m%d%H%M%S`
db=/opt/osstech/var/lib/unicornIDM/unicornIDM.db

# Backup
# ======================================
cp -a "${db}" "${db}.${datetime}"

# 2022to2023
# ======================================
if echo "SELECT userSearchFilter FROM backends_openldapserver;" | sqlite3 $db &> /dev/null; then
	:
else
	# "backends_openldapserver": Add "userSearchFilter", "groupSearchFilter"
	# "backends_openldapserver": Rename "userFilter" to "userIdAttribute"
	cat <<-EOS | sqlite3 $db
	ALTER TABLE "backends_openldapserver" RENAME TO "tmp_backends_openldapserver";
	CREATE TABLE "backends_openldapserver" (
	    "id" integer NOT NULL PRIMARY KEY,
	    "org_id" integer NOT NULL REFERENCES "backends_org" ("id"),
	    "serverID" varchar(120) NOT NULL,
	    "priority" integer unsigned NOT NULL,
	    "SyncPasswd" bool NOT NULL,
	    "SyncAccount" bool NOT NULL,
	    "SyncGroup" bool NOT NULL,
	    "AuthUser" bool NOT NULL,
	    "IgnoreNoSuchUser" bool NOT NULL,
	    "background" bool NOT NULL,
	    "ipAddress" char(15) NOT NULL,
	    "hostname" varchar(255) NOT NULL,
	    "ldapAdmin" varchar(1024) NOT NULL,
	    "bindPassword" varchar(1024) NOT NULL,
	    "prot" varchar(10) NOT NULL,
	    "suffix" varchar(1024) NOT NULL,
	    "userSuffix" varchar(1024) NOT NULL,
	    "groupSuffix" varchar(1024) NOT NULL,
	    "userIdAttribute" varchar(1024),
	    "userSearchFilter" varchar(1024),
	    "groupSearchFilter" varchar(1024),
	    "defaultGidNumber" varchar(32) NOT NULL,
	    "defaultUnixHomeDirectory" varchar(128) NOT NULL,
	    "optionAdd" bool NOT NULL,
	    "optionAddCommand" varchar(1024) NOT NULL,
	    "optionAddArgs" varchar(1024) NOT NULL,
	    "optionUpdate" bool NOT NULL,
	    "optionUpdateCommand" varchar(1024) NOT NULL,
	    "optionUpdateArgs" varchar(1024) NOT NULL,
	    "optionDelete" bool NOT NULL,
	    "optionDeleteCommand" varchar(1024) NOT NULL,
	    "optionDeleteArgs" varchar(1024) NOT NULL,
	    "optionEnable" bool NOT NULL,
	    "optionEnableCommand" varchar(1024) NOT NULL,
	    "optionDisable" bool NOT NULL,
	    "optionDisableCommand" varchar(1024) NOT NULL,
	    "defaultLoginShell" varchar(128) NOT NULL,
	    "defaultHashFunction" varchar(10) NOT NULL,
	    "setGecosAutomatically" bool NOT NULL,
	    "autoAssignUidNumber" bool NOT NULL,
	    "uidNumberMin" integer unsigned NOT NULL,
	    "uidNumberMax" integer unsigned NOT NULL,
	    "uidNumberNext" integer unsigned NOT NULL,
	    "addSeedAttribute" bool NOT NULL,
	    "seedName" varchar(255) NOT NULL,
	    "seedLength" integer unsigned NOT NULL,
	    "applyPlainPassword" bool NOT NULL,
	    "plainPasswordAttribute" varchar(255) NOT NULL,
	    "updateShadowExpire" bool NOT NULL,
	    "expireDays" integer unsigned NOT NULL,
	    "usePPolicy" bool NOT NULL
	);
	INSERT INTO "backends_openldapserver" (
	        "id",
	        "org_id",
	        "serverID",
	        "priority",
	        "SyncPasswd",
	        "SyncAccount",
	        "SyncGroup",
	        "AuthUser",
	        "IgnoreNoSuchUser",
	        "background",
	        "ipAddress",
	        "hostname",
	        "ldapAdmin",
	        "bindPassword",
	        "prot",
	        "suffix",
	        "userSuffix",
	        "groupSuffix",
	        "userIdAttribute",
	        "defaultGidNumber",
	        "defaultUnixHomeDirectory",
	        "optionAdd",
	        "optionAddCommand",
	        "optionAddArgs",
	        "optionUpdate",
	        "optionUpdateCommand",
	        "optionUpdateArgs",
	        "optionDelete",
	        "optionDeleteCommand",
	        "optionDeleteArgs",
	        "optionEnable",
	        "optionEnableCommand",
	        "optionDisable",
	        "optionDisableCommand",
	        "defaultLoginShell",
	        "defaultHashFunction",
	        "setGecosAutomatically",
	        "autoAssignUidNumber",
	        "uidNumberMin",
	        "uidNumberMax",
	        "uidNumberNext",
	        "addSeedAttribute",
	        "seedName",
	        "seedLength",
	        "applyPlainPassword",
	        "plainPasswordAttribute",
	        "updateShadowExpire",
	        "expireDays",
	        "usePPolicy")
	    SELECT
	        id,
	        org_id,
	        serverID,
	        priority,
	        SyncPasswd,
	        SyncAccount,
	        SyncGroup,
	        AuthUser,
	        IgnoreNoSuchUser,
	        background,
	        ipAddress,
	        hostname,
	        ldapAdmin,
	        bindPassword,
	        prot,
	        suffix,
	        userSuffix,
	        groupSuffix,
	        userFilter,
	        defaultGidNumber,
	        defaultUnixHomeDirectory,
	        optionAdd,
	        optionAddCommand,
	        optionAddArgs,
	        optionUpdate,
	        optionUpdateCommand,
	        optionUpdateArgs,
	        optionDelete,
	        optionDeleteCommand,
	        optionDeleteArgs,
	        optionEnable,
	        optionEnableCommand,
	        optionDisable,
	        optionDisableCommand,
	        defaultLoginShell,
	        defaultHashFunction,
	        setGecosAutomatically,
	        autoAssignUidNumber,
	        uidNumberMin,
	        uidNumberMax,
	        uidNumberNext,
	        addSeedAttribute,
	        seedName,
	        seedLength,
	        applyPlainPassword,
	        plainPasswordAttribute,
	        updateShadowExpire,
	        expireDays,
	        usePPolicy
	    FROM "tmp_backends_openldapserver";
	DROP TABLE "tmp_backends_openldapserver";
	VACUUM;
	EOS
	echo "Done 2022to2023 for DB of unicornIDM" 1>&2
fi

# 2022to2023 - if patchsql are executed
# ======================================
if echo "SELECT userFilter FROM backends_openldapserver;" | sqlite3 $db &> /dev/null; then
	# "backends_openldapserver": Rename "userFilter" to "userIdAttribute"
	cat <<-EOS | sqlite3 $db
	ALTER TABLE "backends_openldapserver" RENAME TO "tmp_backends_openldapserver";
	CREATE TABLE "backends_openldapserver" (
	    "id" integer NOT NULL PRIMARY KEY,
	    "org_id" integer NOT NULL REFERENCES "backends_org" ("id"),
	    "serverID" varchar(120) NOT NULL,
	    "priority" integer unsigned NOT NULL,
	    "SyncPasswd" bool NOT NULL,
	    "SyncAccount" bool NOT NULL,
	    "SyncGroup" bool NOT NULL,
	    "AuthUser" bool NOT NULL,
	    "IgnoreNoSuchUser" bool NOT NULL,
	    "background" bool NOT NULL,
	    "ipAddress" char(15) NOT NULL,
	    "hostname" varchar(255) NOT NULL,
	    "ldapAdmin" varchar(1024) NOT NULL,
	    "bindPassword" varchar(1024) NOT NULL,
	    "prot" varchar(10) NOT NULL,
	    "suffix" varchar(1024) NOT NULL,
	    "userSuffix" varchar(1024) NOT NULL,
	    "groupSuffix" varchar(1024) NOT NULL,
	    "userIdAttribute" varchar(1024),
	    "userSearchFilter" varchar(1024),
	    "groupSearchFilter" varchar(1024),
	    "defaultGidNumber" varchar(32) NOT NULL,
	    "defaultUnixHomeDirectory" varchar(128) NOT NULL,
	    "optionAdd" bool NOT NULL,
	    "optionAddCommand" varchar(1024) NOT NULL,
	    "optionAddArgs" varchar(1024) NOT NULL,
	    "optionUpdate" bool NOT NULL,
	    "optionUpdateCommand" varchar(1024) NOT NULL,
	    "optionUpdateArgs" varchar(1024) NOT NULL,
	    "optionDelete" bool NOT NULL,
	    "optionDeleteCommand" varchar(1024) NOT NULL,
	    "optionDeleteArgs" varchar(1024) NOT NULL,
	    "optionEnable" bool NOT NULL,
	    "optionEnableCommand" varchar(1024) NOT NULL,
	    "optionDisable" bool NOT NULL,
	    "optionDisableCommand" varchar(1024) NOT NULL,
	    "defaultLoginShell" varchar(128) NOT NULL,
	    "defaultHashFunction" varchar(10) NOT NULL,
	    "setGecosAutomatically" bool NOT NULL,
	    "autoAssignUidNumber" bool NOT NULL,
	    "uidNumberMin" integer unsigned NOT NULL,
	    "uidNumberMax" integer unsigned NOT NULL,
	    "uidNumberNext" integer unsigned NOT NULL,
	    "addSeedAttribute" bool NOT NULL,
	    "seedName" varchar(255) NOT NULL,
	    "seedLength" integer unsigned NOT NULL,
	    "applyPlainPassword" bool NOT NULL,
	    "plainPasswordAttribute" varchar(255) NOT NULL,
	    "updateShadowExpire" bool NOT NULL,
	    "expireDays" integer unsigned NOT NULL,
	    "usePPolicy" bool NOT NULL
	);
	INSERT INTO "backends_openldapserver" (
	        "id",
	        "org_id",
	        "serverID",
	        "priority",
	        "SyncPasswd",
	        "SyncAccount",
	        "SyncGroup",
	        "AuthUser",
	        "IgnoreNoSuchUser",
	        "background",
	        "ipAddress",
	        "hostname",
	        "ldapAdmin",
	        "bindPassword",
	        "prot",
	        "suffix",
	        "userSuffix",
	        "groupSuffix",
	        "userIdAttribute",
	        "userSearchFilter",
	        "groupSearchFilter",
	        "defaultGidNumber",
	        "defaultUnixHomeDirectory",
	        "optionAdd",
	        "optionAddCommand",
	        "optionAddArgs",
	        "optionUpdate",
	        "optionUpdateCommand",
	        "optionUpdateArgs",
	        "optionDelete",
	        "optionDeleteCommand",
	        "optionDeleteArgs",
	        "optionEnable",
	        "optionEnableCommand",
	        "optionDisable",
	        "optionDisableCommand",
	        "defaultLoginShell",
	        "defaultHashFunction",
	        "setGecosAutomatically",
	        "autoAssignUidNumber",
	        "uidNumberMin",
	        "uidNumberMax",
	        "uidNumberNext",
	        "addSeedAttribute",
	        "seedName",
	        "seedLength",
	        "applyPlainPassword",
	        "plainPasswordAttribute",
	        "updateShadowExpire",
	        "expireDays",
	        "usePPolicy")
	    SELECT
	        id,
	        org_id,
	        serverID,
	        priority,
	        SyncPasswd,
	        SyncAccount,
	        SyncGroup,
	        AuthUser,
	        IgnoreNoSuchUser,
	        background,
	        ipAddress,
	        hostname,
	        ldapAdmin,
	        bindPassword,
	        prot,
	        suffix,
	        userSuffix,
	        groupSuffix,
	        userFilter,
	        userSearchFilter,
	        groupSearchFilter,
	        defaultGidNumber,
	        defaultUnixHomeDirectory,
	        optionAdd,
	        optionAddCommand,
	        optionAddArgs,
	        optionUpdate,
	        optionUpdateCommand,
	        optionUpdateArgs,
	        optionDelete,
	        optionDeleteCommand,
	        optionDeleteArgs,
	        optionEnable,
	        optionEnableCommand,
	        optionDisable,
	        optionDisableCommand,
	        defaultLoginShell,
	        defaultHashFunction,
	        setGecosAutomatically,
	        autoAssignUidNumber,
	        uidNumberMin,
	        uidNumberMax,
	        uidNumberNext,
	        addSeedAttribute,
	        seedName,
	        seedLength,
	        applyPlainPassword,
	        plainPasswordAttribute,
	        updateShadowExpire,
	        expireDays,
	        usePPolicy
	    FROM "tmp_backends_openldapserver";
	DROP TABLE "tmp_backends_openldapserver";
	VACUUM;
	EOS
	echo "Done 2022to2023 for DB of unicornIDM (remove userFilter)" 1>&2
fi

# 2024to2025
# ======================================
if echo "SELECT requireCurrentPassword FROM backends_org;" | sqlite3 $db &> /dev/null; then
	:
else
	cat <<-EOS | sqlite3 $db
	ALTER TABLE "backends_org" ADD COLUMN "requireCurrentPassword" bool;
	UPDATE "backends_org" SET requireCurrentPassword = 1;
	VACUUM;
	EOS
	echo "Done 2024to2025 for DB of unicornIDM" 1>&2
fi

# 2025to21
if echo "SELECT kindOfCharNum FROM backends_org;" | sqlite3 $db &> /dev/null; then
	:
else
	cat <<-EOS | sqlite3 $db
	ALTER TABLE "backends_org" ADD COLUMN "kindOfCharNum" integer unsigned NOT NULL DEFAULT 0;
	ALTER TABLE "backends_adserver" ADD COLUMN "adExtAddFlag" bool NOT NULL DEFAULT 0;
	ALTER TABLE "backends_adserver" ADD COLUMN "adExtAddCmd" varchar(1024) NOT NULL DEFAULT "CMD /C command %username%";
	ALTER TABLE "backends_adserver" ADD COLUMN "adExtUpdateFlag" bool NOT NULL DEFAULT 0;
	ALTER TABLE "backends_adserver" ADD COLUMN "adExtUpdateCmd" varchar(1024) NOT NULL DEFAULT "CMD /C command %username%";
	ALTER TABLE "backends_adserver" ADD COLUMN "adExtDelFlag" bool NOT NULL DEFAULT 0;
	ALTER TABLE "backends_adserver" ADD COLUMN "adExtDelCmd" varchar(1024) NOT NULL DEFAULT "CMD /C command %username%";
	ALTER TABLE "backends_adserver" ADD COLUMN "adExtEnableFlag" bool NOT NULL DEFAULT 0;
	ALTER TABLE "backends_adserver" ADD COLUMN "adExtEnableCmd" varchar(1024) NOT NULL DEFAULT "CMD /C command %username%";
	ALTER TABLE "backends_adserver" ADD COLUMN "adExtDisableFlag" bool NOT NULL DEFAULT 0;
	ALTER TABLE "backends_adserver" ADD COLUMN "adExtDisableCmd" varchar(1024) NOT NULL DEFAULT "CMD /C command %username%";
	VACUUM;
	EOS
	echo "Done 2025to21 for DB of unicornIDM" 1>&2
fi

# 21to22
# ======================================
if echo "SELECT userSearchFilter FROM backends_adserver;" | sqlite3 $db &> /dev/null; then
	:
else
	# "backends_org": Rename "convertHook" to "convertFilter"
	cat <<-EOS | sqlite3 $db
	ALTER TABLE "backends_org" RENAME TO "tmp_backends_org";
	CREATE TABLE "backends_org" (
	    "id" integer NOT NULL PRIMARY KEY,
	    "name" varchar(120) NOT NULL UNIQUE,
	    "title" varchar(120) NOT NULL,
	    "maxPasswordLength" integer unsigned NOT NULL,
	    "minPasswordLength" integer unsigned NOT NULL,
	    "randomPasswordLength" integer unsigned NOT NULL,
	    "checkPasswordComplexity" bool NOT NULL,
	    "alphaCharNum" integer unsigned NOT NULL,
	    "lowerCharNum" integer unsigned NOT NULL,
	    "upperCharNum" integer unsigned NOT NULL,
	    "numberCharNum" integer unsigned NOT NULL,
	    "symbolCharNum" integer unsigned NOT NULL,
	    "kindOfCharNum" integer unsigned NOT NULL,
	    "samePassword" bool NOT NULL,
	    "containingUsernamePassword" bool NOT NULL,
	    "deniedPasswordCharacters" varchar(1024) NOT NULL,
	    "deniedRandomPasswordCharacters" varchar(1024) NOT NULL,
	    "passwordNotice" text NOT NULL,
	    "passwordChangedMessage" text NOT NULL,
	    "passwordPrintMessage" text NOT NULL,
	    "defaultPreviewEntries" integer unsigned NOT NULL,
	    "defaultSummaryEntries" integer unsigned NOT NULL,
	    "maxDisplayLists" integer NOT NULL,
	    "uploadEncoding" varchar(10) NOT NULL,
	    "removeUploadFiles" bool NOT NULL,
	    "convertFilter" varchar(1024) NOT NULL,
	    "commandHook" varchar(1024) NOT NULL,
	    "passwordCommandHook" varchar(1024) NOT NULL,
	    "syslog" bool NOT NULL,
	    "syslogFacility" varchar(64) NOT NULL,
	    "loglevel" integer unsigned NOT NULL,
	    "logsize" integer unsigned NOT NULL,
	    "logcount" integer unsigned NOT NULL,
	    "logdir" varchar(255) NOT NULL,
	    "uploaddir" varchar(255) NOT NULL,
	    "resultdir" varchar(255) NOT NULL,
	    "summarydir" varchar(255) NOT NULL,
	    "migratedir" varchar(255) NOT NULL,
	    "attrDeleteValue" varchar(256) NOT NULL,
	    "wayToGetAuthId" varchar(20) NOT NULL,
	    "keyName" varchar(120) NOT NULL,
	    "allowIpSegments" varchar(1024) NOT NULL,
	    "requireCurrentPassword" bool NOT NULL
	);
	INSERT INTO "backends_org" (
	        "id",
	        "name",
	        "title",
	        "maxPasswordLength",
	        "minPasswordLength",
	        "randomPasswordLength",
	        "checkPasswordComplexity",
	        "alphaCharNum",
	        "lowerCharNum",
	        "upperCharNum",
	        "numberCharNum",
	        "symbolCharNum",
	        "kindOfCharNum",
	        "samePassword",
	        "containingUsernamePassword",
	        "deniedPasswordCharacters",
	        "deniedRandomPasswordCharacters",
	        "passwordNotice",
	        "passwordChangedMessage",
	        "passwordPrintMessage",
	        "defaultPreviewEntries",
	        "defaultSummaryEntries",
	        "maxDisplayLists",
	        "uploadEncoding",
	        "removeUploadFiles",
	        "convertFilter",
	        "commandHook",
	        "passwordCommandHook",
	        "syslog",
	        "syslogFacility",
	        "loglevel",
	        "logsize",
	        "logcount",
	        "logdir",
	        "uploaddir",
	        "resultdir",
	        "summarydir",
	        "migratedir",
	        "attrDeleteValue",
	        "wayToGetAuthId",
	        "keyName",
	        "allowIpSegments",
	        "requireCurrentPassword")
	    SELECT
	        id,
	        name,
	        title,
	        maxPasswordLength,
	        minPasswordLength,
	        randomPasswordLength,
	        checkPasswordComplexity,
	        alphaCharNum,
	        lowerCharNum,
	        upperCharNum,
	        numberCharNum,
	        symbolCharNum,
	        kindOfCharNum,
	        samePassword,
	        containingUsernamePassword,
	        deniedPasswordCharacters,
	        deniedRandomPasswordCharacters,
	        passwordNotice,
	        passwordChangedMessage,
	        passwordPrintMessage,
	        defaultPreviewEntries,
	        defaultSummaryEntries,
	        maxDisplayLists,
	        uploadEncoding,
	        removeUploadFiles,
	        convertHook,
	        commandHook,
	        passwordCommandHook,
	        syslog,
	        syslogFacility,
	        loglevel,
	        logsize,
	        logcount,
	        logdir,
	        uploaddir,
	        resultdir,
	        summarydir,
	        migratedir,
	        attrDeleteValue,
	        wayToGetAuthId,
	        keyName,
	        allowIpSegments,
	        requireCurrentPassword
	    FROM "tmp_backends_org";
	DROP TABLE tmp_backends_org;
	ALTER TABLE "backends_adserver" ADD COLUMN "userSearchFilter" varchar(1024) NOT NULL DEFAULT '';
	ALTER TABLE "backends_adserver" ADD COLUMN "groupSearchFilter" varchar(1024) NOT NULL DEFAULT '';
	ALTER TABLE "backends_adserver" ADD COLUMN "baseOU" varchar(1024) NOT NULL DEFAULT '';
	VACUUM;
	EOS
	echo "Done 21to22 for DB of unicornIDM" 1>&2
fi

# 22to23
# ======================================
if echo "SELECT serviceAccountName FROM backends_googleserver;" | sqlite3 $db &> /dev/null; then
	:
else
	# "backends_googleserver": Add "serviceAccountName", "privateKeyFile"
	#                          Delete "adminPassword"
	# "backends_migration": Modify totally
	# "backends_migrationgoogletogoogle"; DROP
	# "backends_migrationopenldaptogoogle"; DROP
	cat <<-EOS | sqlite3 $db
	ALTER TABLE "backends_googleserver" RENAME TO "tmp_backends_googleserver";
	ALTER TABLE "backends_migration" RENAME TO "tmp_backends_migration";
	CREATE TABLE "backends_googleserver" (
	    "id" integer NOT NULL PRIMARY KEY,
	    "org_id" integer NOT NULL REFERENCES "backends_org" ("id"),
	    "serverID" varchar(120) NOT NULL,
	    "priority" integer unsigned NOT NULL,
	    "SyncPasswd" bool NOT NULL,
	    "SyncAccount" bool NOT NULL,
	    "SyncGroup" bool NOT NULL,
	    "AuthUser" bool NOT NULL,
	    "IgnoreNoSuchUser" bool NOT NULL,
	    "background" bool NOT NULL,
	    "googleDomain" varchar(155) NOT NULL,
	    "googleAdmin" varchar(64) NOT NULL,
	    "maxRetry" integer unsigned NOT NULL,
	    "dummyPassword" bool NOT NULL,
	    "serviceAccountName" varchar(1024) NOT NULL DEFAULT '',
	    "privateKeyFile" varchar(1024) NOT NULL DEFAULT '',
	    "privateKeyFilePassword" varchar(1024) NOT NULL DEFAULT 'notasecret');
	INSERT INTO "backends_googleserver" (
	        "id",
	        "org_id",
	        "serverID",
	        "priority",
	        "SyncPasswd",
	        "SyncAccount",
	        "SyncGroup",
	        "AuthUser",
	        "IgnoreNoSuchUser",
	        "background",
	        "googleDomain",
	        "googleAdmin",
	        "maxRetry",
	        "dummyPassword")
	    SELECT
	        id,
	        org_id,
	        serverID,
	        priority,
	        SyncPasswd,
	        SyncAccount,
	        SyncGroup,
	        AuthUser,
	        IgnoreNoSuchUser,
	        background,
	        googleDomain,
	        googleAdmin,
	        maxRetry,
	        dummyPassword
	    FROM "tmp_backends_googleserver";
	DROP TABLE tmp_backends_googleserver;
	
	
	CREATE TABLE "backends_migration" (
	    "id" integer NOT NULL PRIMARY KEY,
	    "org_id" integer NOT NULL REFERENCES "backends_org" ("id"),
	    "active" bool NOT NULL,
	    "menuTitle" varchar(1024) NOT NULL,
	    "dstGgoogleDomain" varchar(155) NOT NULL,
	    "dstGoogleAdmin" varchar(64) NOT NULL,
	    "dstServiceAccountName" varchar(1024) NOT NULL,
	    "dstPrivateKeyFile" varchar(1024) NOT NULL,
	    "dstMaxRetry" integer unsigned NOT NULL,
	    "srcGoogle_id" integer REFERENCES "backends_googleserver" ("id"),
	    "srcOpenldap_id" integer REFERENCES "backends_openldapserver" ("id"),
	    "mode" varchar(128) NOT NULL
	);
	INSERT INTO "backends_migration" (
	        "id",
	        "org_id",
	        "active",
	        "menuTitle",
	        "dstGgoogleDomain",
	        "dstGoogleAdmin",
	        "dstServiceAccountName",
	        "dstPrivateKeyFile",
	        "dstMaxRetry",
	        "mode")
	    SELECT
	        id,
	        org_id,
	        active,
	        menuTitle,
	        toDomain,
	        "修正してください",
	        "修正してください",
	        "修正してください",
	        5,
	        "G2G"
	    FROM tmp_backends_migration as M,
	         backends_migrationgoogletogoogle as G
	    WHERE M.id = G.migration_ptr_id
	        AND M.type = "G2G";
	INSERT INTO "backends_migration" (
	        "id",
	        "org_id",
	        "active",
	        "menuTitle",
	        "dstGgoogleDomain",
	        "dstGoogleAdmin",
	        "dstServiceAccountName",
	        "dstPrivateKeyFile",
	        "dstMaxRetry",
	        "srcOpenldap_id",
	        "mode")
	    SELECT
	        id,
	        active,
	        org_id,
	        menuTitle,
	        toDomain,
	        "修正してください",
	        "修正してください",
	        "修正してください",
	        5,
	        openLdapObj_id,
	        "OL2G"
	    FROM tmp_backends_migration as M,
	         backends_migrationgoogletogoogle as G,
	         backends_migrationopenldaptogoogle as L
	    WHERE   M.id = G.migration_ptr_id
	        AND M.id = L.migrationgoogletogoogle_ptr_id
	        AND M.type = "OL2G";
	DROP TABLE "tmp_backends_migration";
	DROP TABLE "backends_migrationgoogletogoogle";
	DROP TABLE "backends_migrationopenldaptogoogle";
	VACUUM;
	EOS
	echo "Done 22to23 for DB of unicornIDM" 1>&2
fi
