|
@@ -10,7 +10,6 @@ import (
|
|
|
"errors"
|
|
|
"fmt"
|
|
|
"path/filepath"
|
|
|
- "strings"
|
|
|
"time"
|
|
|
|
|
|
// we import go-sqlite3 here to be able to disable SQLite support using a build tag
|
|
@@ -44,6 +43,11 @@ CREATE TABLE "{{admins}}" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "use
|
|
|
"description" varchar(512) NULL, "password" varchar(255) NOT NULL, "email" varchar(255) NULL, "status" integer NOT NULL,
|
|
|
"permissions" text NOT NULL, "filters" text NULL, "additional_info" text NULL, "last_login" bigint NOT NULL,
|
|
|
"created_at" bigint NOT NULL, "updated_at" bigint NOT NULL);
|
|
|
+CREATE TABLE "{{active_transfers}}" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "connection_id" varchar(100) NOT NULL,
|
|
|
+"transfer_id" bigint NOT NULL, "transfer_type" integer NOT NULL, "username" varchar(255) NOT NULL,
|
|
|
+"folder_name" varchar(255) NULL, "ip" varchar(50) NOT NULL, "truncated_size" bigint NOT NULL,
|
|
|
+"current_ul_size" bigint NOT NULL, "current_dl_size" bigint NOT NULL, "created_at" bigint NOT NULL,
|
|
|
+"updated_at" bigint NOT NULL);
|
|
|
CREATE TABLE "{{defender_hosts}}" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "ip" varchar(50) NOT NULL UNIQUE,
|
|
|
"ban_time" bigint NOT NULL, "updated_at" bigint NOT NULL);
|
|
|
CREATE TABLE "{{defender_events}}" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "date_time" bigint NOT NULL,
|
|
@@ -52,18 +56,34 @@ DEFERRABLE INITIALLY DEFERRED);
|
|
|
CREATE TABLE "{{folders}}" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "name" varchar(255) NOT NULL UNIQUE,
|
|
|
"description" varchar(512) NULL, "path" text NULL, "used_quota_size" bigint NOT NULL, "used_quota_files" integer NOT NULL,
|
|
|
"last_quota_update" bigint NOT NULL, "filesystem" text NULL);
|
|
|
+CREATE TABLE "{{groups}}" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "name" varchar(255) NOT NULL UNIQUE,
|
|
|
+"description" varchar(512) NULL, "created_at" bigint NOT NULL, "updated_at" bigint NOT NULL, "user_settings" text NULL);
|
|
|
+CREATE TABLE "{{shared_sessions}}" ("key" varchar(128) NOT NULL PRIMARY KEY, "data" text NOT NULL,
|
|
|
+"type" integer NOT NULL, "timestamp" bigint NOT NULL);
|
|
|
CREATE TABLE "{{users}}" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "username" varchar(255) NOT NULL UNIQUE,
|
|
|
"status" integer NOT NULL, "expiration_date" bigint NOT NULL, "description" varchar(512) NULL, "password" text NULL,
|
|
|
"public_keys" text NULL, "home_dir" text NOT NULL, "uid" bigint NOT NULL, "gid" bigint NOT NULL,
|
|
|
"max_sessions" integer NOT NULL, "quota_size" bigint NOT NULL, "quota_files" integer NOT NULL, "permissions" text NOT NULL,
|
|
|
"used_quota_size" bigint NOT NULL, "used_quota_files" integer NOT NULL, "last_quota_update" bigint NOT NULL,
|
|
|
-"upload_bandwidth" integer NOT NULL, "download_bandwidth" integer NOT NULL, "last_login" bigint NOT NULL, "filters" text NULL,
|
|
|
-"filesystem" text NULL, "additional_info" text NULL, "created_at" bigint NOT NULL, "updated_at" bigint NOT NULL,
|
|
|
-"email" varchar(255) NULL);
|
|
|
-CREATE TABLE "{{folders_mapping}}" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "virtual_path" text NOT NULL,
|
|
|
-"quota_size" bigint NOT NULL, "quota_files" integer NOT NULL, "folder_id" integer NOT NULL REFERENCES "{{folders}}" ("id")
|
|
|
-ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, "user_id" integer NOT NULL REFERENCES "{{users}}" ("id") ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
|
|
|
-CONSTRAINT "{{prefix}}unique_mapping" UNIQUE ("user_id", "folder_id"));
|
|
|
+"upload_bandwidth" integer NOT NULL, "download_bandwidth" integer NOT NULL, "last_login" bigint NOT NULL,
|
|
|
+"filters" text NULL, "filesystem" text NULL, "additional_info" text NULL, "created_at" bigint NOT NULL,
|
|
|
+"updated_at" bigint NOT NULL, "email" varchar(255) NULL, "upload_data_transfer" integer NOT NULL,
|
|
|
+"download_data_transfer" integer NOT NULL, "total_data_transfer" integer NOT NULL, "used_upload_data_transfer" integer NOT NULL,
|
|
|
+"used_download_data_transfer" integer NOT NULL);
|
|
|
+CREATE TABLE "{{groups_folders_mapping}}" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
|
|
|
+"folder_id" integer NOT NULL REFERENCES "{{folders}}" ("id") ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
|
|
|
+"group_id" integer NOT NULL REFERENCES "{{groups}}" ("id") ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
|
|
|
+"virtual_path" text NOT NULL, "quota_size" bigint NOT NULL, "quota_files" integer NOT NULL,
|
|
|
+CONSTRAINT "{{prefix}}unique_group_folder_mapping" UNIQUE ("group_id", "folder_id"));
|
|
|
+CREATE TABLE "{{users_groups_mapping}}" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
|
|
|
+"user_id" integer NOT NULL REFERENCES "users" ("id") ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
|
|
|
+"group_id" integer NOT NULL REFERENCES "groups" ("id") ON DELETE NO ACTION,
|
|
|
+"group_type" integer NOT NULL, CONSTRAINT "{{prefix}}unique_user_group_mapping" UNIQUE ("user_id", "group_id"));
|
|
|
+CREATE TABLE "{{users_folders_mapping}}" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
|
|
|
+"user_id" integer NOT NULL REFERENCES "users" ("id") ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
|
|
|
+"folder_id" integer NOT NULL REFERENCES "folders" ("id") ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
|
|
|
+"virtual_path" text NOT NULL, "quota_size" bigint NOT NULL, "quota_files" integer NOT NULL,
|
|
|
+CONSTRAINT "{{prefix}}unique_user_folder_mapping" UNIQUE ("user_id", "folder_id"));
|
|
|
CREATE TABLE "{{shares}}" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "share_id" varchar(60) NOT NULL UNIQUE,
|
|
|
"name" varchar(255) NOT NULL, "description" varchar(512) NULL, "scope" integer NOT NULL, "paths" text NOT NULL,
|
|
|
"created_at" bigint NOT NULL, "updated_at" bigint NOT NULL, "last_use_at" bigint NOT NULL, "expires_at" bigint NOT NULL,
|
|
@@ -74,8 +94,13 @@ CREATE TABLE "{{api_keys}}" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "n
|
|
|
"created_at" bigint NOT NULL, "updated_at" bigint NOT NULL, "last_use_at" bigint NOT NULL, "expires_at" bigint NOT NULL,
|
|
|
"description" text NULL, "admin_id" integer NULL REFERENCES "{{admins}}" ("id") ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
|
|
|
"user_id" integer NULL REFERENCES "{{users}}" ("id") ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED);
|
|
|
-CREATE INDEX "{{prefix}}folders_mapping_folder_id_idx" ON "{{folders_mapping}}" ("folder_id");
|
|
|
-CREATE INDEX "{{prefix}}folders_mapping_user_id_idx" ON "{{folders_mapping}}" ("user_id");
|
|
|
+CREATE INDEX "{{prefix}}groups_updated_at_idx" ON "{{groups}}" ("updated_at");
|
|
|
+CREATE INDEX "{{prefix}}users_folders_mapping_folder_id_idx" ON "{{users_folders_mapping}}" ("folder_id");
|
|
|
+CREATE INDEX "{{prefix}}users_folders_mapping_user_id_idx" ON "{{users_folders_mapping}}" ("user_id");
|
|
|
+CREATE INDEX "{{prefix}}users_groups_mapping_group_id_idx" ON "{{users_groups_mapping}}" ("group_id");
|
|
|
+CREATE INDEX "{{prefix}}users_groups_mapping_user_id_idx" ON "{{users_groups_mapping}}" ("user_id");
|
|
|
+CREATE INDEX "{{prefix}}groups_folders_mapping_folder_id_idx" ON "{{groups_folders_mapping}}" ("folder_id");
|
|
|
+CREATE INDEX "{{prefix}}groups_folders_mapping_group_id_idx" ON "{{groups_folders_mapping}}" ("group_id");
|
|
|
CREATE INDEX "{{prefix}}api_keys_admin_id_idx" ON "{{api_keys}}" ("admin_id");
|
|
|
CREATE INDEX "{{prefix}}api_keys_user_id_idx" ON "{{api_keys}}" ("user_id");
|
|
|
CREATE INDEX "{{prefix}}users_updated_at_idx" ON "{{users}}" ("updated_at");
|
|
@@ -84,78 +109,13 @@ CREATE INDEX "{{prefix}}defender_hosts_updated_at_idx" ON "{{defender_hosts}}" (
|
|
|
CREATE INDEX "{{prefix}}defender_hosts_ban_time_idx" ON "{{defender_hosts}}" ("ban_time");
|
|
|
CREATE INDEX "{{prefix}}defender_events_date_time_idx" ON "{{defender_events}}" ("date_time");
|
|
|
CREATE INDEX "{{prefix}}defender_events_host_id_idx" ON "{{defender_events}}" ("host_id");
|
|
|
-INSERT INTO {{schema_version}} (version) VALUES (15);
|
|
|
-`
|
|
|
- sqliteV16SQL = `ALTER TABLE "{{users}}" ADD COLUMN "download_data_transfer" integer DEFAULT 0 NOT NULL;
|
|
|
-ALTER TABLE "{{users}}" ADD COLUMN "total_data_transfer" integer DEFAULT 0 NOT NULL;
|
|
|
-ALTER TABLE "{{users}}" ADD COLUMN "upload_data_transfer" integer DEFAULT 0 NOT NULL;
|
|
|
-ALTER TABLE "{{users}}" ADD COLUMN "used_download_data_transfer" integer DEFAULT 0 NOT NULL;
|
|
|
-ALTER TABLE "{{users}}" ADD COLUMN "used_upload_data_transfer" integer DEFAULT 0 NOT NULL;
|
|
|
-CREATE TABLE "{{active_transfers}}" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "connection_id" varchar(100) NOT NULL,
|
|
|
-"transfer_id" bigint NOT NULL, "transfer_type" integer NOT NULL, "username" varchar(255) NOT NULL,
|
|
|
-"folder_name" varchar(255) NULL, "ip" varchar(50) NOT NULL, "truncated_size" bigint NOT NULL,
|
|
|
-"current_ul_size" bigint NOT NULL, "current_dl_size" bigint NOT NULL, "created_at" bigint NOT NULL,
|
|
|
-"updated_at" bigint NOT NULL);
|
|
|
CREATE INDEX "{{prefix}}active_transfers_connection_id_idx" ON "{{active_transfers}}" ("connection_id");
|
|
|
CREATE INDEX "{{prefix}}active_transfers_transfer_id_idx" ON "{{active_transfers}}" ("transfer_id");
|
|
|
CREATE INDEX "{{prefix}}active_transfers_updated_at_idx" ON "{{active_transfers}}" ("updated_at");
|
|
|
-`
|
|
|
- sqliteV16DownSQL = `ALTER TABLE "{{users}}" DROP COLUMN "used_upload_data_transfer";
|
|
|
-ALTER TABLE "{{users}}" DROP COLUMN "used_download_data_transfer";
|
|
|
-ALTER TABLE "{{users}}" DROP COLUMN "upload_data_transfer";
|
|
|
-ALTER TABLE "{{users}}" DROP COLUMN "total_data_transfer";
|
|
|
-ALTER TABLE "{{users}}" DROP COLUMN "download_data_transfer";
|
|
|
-DROP TABLE "{{active_transfers}}";
|
|
|
-`
|
|
|
- sqliteV17SQL = `CREATE TABLE "{{groups}}" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "name" varchar(255) NOT NULL UNIQUE,
|
|
|
-"description" varchar(512) NULL, "created_at" bigint NOT NULL, "updated_at" bigint NOT NULL, "user_settings" text NULL);
|
|
|
-CREATE TABLE "{{groups_folders_mapping}}" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
|
|
|
-"folder_id" integer NOT NULL REFERENCES "{{folders}}" ("id") ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
|
|
|
-"group_id" integer NOT NULL REFERENCES "{{groups}}" ("id") ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
|
|
|
-"virtual_path" text NOT NULL, "quota_size" bigint NOT NULL, "quota_files" integer NOT NULL,
|
|
|
-CONSTRAINT "{{prefix}}unique_group_folder_mapping" UNIQUE ("group_id", "folder_id"));
|
|
|
-CREATE TABLE "{{users_groups_mapping}}" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
|
|
|
-"user_id" integer NOT NULL REFERENCES "users" ("id") ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
|
|
|
-"group_id" integer NOT NULL REFERENCES "groups" ("id") ON DELETE NO ACTION,
|
|
|
-"group_type" integer NOT NULL, CONSTRAINT "{{prefix}}unique_user_group_mapping" UNIQUE ("user_id", "group_id"));
|
|
|
-CREATE TABLE "new__folders_mapping" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
|
|
|
-"user_id" integer NOT NULL REFERENCES "users" ("id") ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
|
|
|
-"folder_id" integer NOT NULL REFERENCES "folders" ("id") ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
|
|
|
-"virtual_path" text NOT NULL, "quota_size" bigint NOT NULL, "quota_files" integer NOT NULL,
|
|
|
-CONSTRAINT "{{prefix}}unique_user_folder_mapping" UNIQUE ("user_id", "folder_id"));
|
|
|
-INSERT INTO "new__folders_mapping" ("id", "virtual_path", "quota_size", "quota_files", "folder_id", "user_id") SELECT "id",
|
|
|
-"virtual_path", "quota_size", "quota_files", "folder_id", "user_id" FROM "{{folders_mapping}}";
|
|
|
-DROP TABLE "{{folders_mapping}}";
|
|
|
-ALTER TABLE "new__folders_mapping" RENAME TO "{{users_folders_mapping}}";
|
|
|
-CREATE INDEX "{{prefix}}groups_updated_at_idx" ON "{{groups}}" ("updated_at");
|
|
|
-CREATE INDEX "{{prefix}}users_folders_mapping_folder_id_idx" ON "{{users_folders_mapping}}" ("folder_id");
|
|
|
-CREATE INDEX "{{prefix}}users_folders_mapping_user_id_idx" ON "{{users_folders_mapping}}" ("user_id");
|
|
|
-CREATE INDEX "{{prefix}}users_groups_mapping_group_id_idx" ON "{{users_groups_mapping}}" ("group_id");
|
|
|
-CREATE INDEX "{{prefix}}users_groups_mapping_user_id_idx" ON "{{users_groups_mapping}}" ("user_id");
|
|
|
-CREATE INDEX "{{prefix}}groups_folders_mapping_folder_id_idx" ON "{{groups_folders_mapping}}" ("folder_id");
|
|
|
-CREATE INDEX "{{prefix}}groups_folders_mapping_group_id_idx" ON "{{groups_folders_mapping}}" ("group_id");
|
|
|
-`
|
|
|
- sqliteV17DownSQL = `DROP TABLE "{{users_groups_mapping}}";
|
|
|
-DROP TABLE "{{groups_folders_mapping}}";
|
|
|
-DROP TABLE "{{groups}}";
|
|
|
-CREATE TABLE "new__folders_mapping" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
|
|
|
-"user_id" integer NOT NULL REFERENCES "users" ("id") ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
|
|
|
-"folder_id" integer NOT NULL REFERENCES "folders" ("id") ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
|
|
|
-"virtual_path" text NOT NULL, "quota_size" bigint NOT NULL, "quota_files" integer NOT NULL,
|
|
|
-CONSTRAINT "{{prefix}}unique_folder_mapping" UNIQUE ("user_id", "folder_id"));
|
|
|
-INSERT INTO "new__folders_mapping" ("id", "virtual_path", "quota_size", "quota_files", "folder_id", "user_id") SELECT "id",
|
|
|
-"virtual_path", "quota_size", "quota_files", "folder_id", "user_id" FROM "{{users_folders_mapping}}";
|
|
|
-DROP TABLE "{{users_folders_mapping}}";
|
|
|
-ALTER TABLE "new__folders_mapping" RENAME TO "{{folders_mapping}}";
|
|
|
-CREATE INDEX "{{prefix}}folders_mapping_folder_id_idx" ON "{{folders_mapping}}" ("folder_id");
|
|
|
-CREATE INDEX "{{prefix}}folders_mapping_user_id_idx" ON "{{folders_mapping}}" ("user_id");
|
|
|
-`
|
|
|
- sqliteV19SQL = `CREATE TABLE "{{shared_sessions}}" ("key" varchar(128) NOT NULL PRIMARY KEY, "data" text NOT NULL,
|
|
|
-"type" integer NOT NULL, "timestamp" bigint NOT NULL);
|
|
|
CREATE INDEX "{{prefix}}shared_sessions_type_idx" ON "{{shared_sessions}}" ("type");
|
|
|
CREATE INDEX "{{prefix}}shared_sessions_timestamp_idx" ON "{{shared_sessions}}" ("timestamp");
|
|
|
- `
|
|
|
- sqliteV19DownSQL = `DROP TABLE "{{shared_sessions}}";`
|
|
|
+INSERT INTO {{schema_version}} (version) VALUES (19);
|
|
|
+`
|
|
|
)
|
|
|
|
|
|
// SQLiteProvider defines the auth provider for SQLite database
|
|
@@ -506,20 +466,11 @@ func (p *SQLiteProvider) initializeDatabase() error {
|
|
|
if errors.Is(err, sql.ErrNoRows) {
|
|
|
return errSchemaVersionEmpty
|
|
|
}
|
|
|
- logger.InfoToConsole("creating initial database schema, version 15")
|
|
|
- providerLog(logger.LevelInfo, "creating initial database schema, version 15")
|
|
|
- initialSQL := strings.ReplaceAll(sqliteInitialSQL, "{{schema_version}}", sqlTableSchemaVersion)
|
|
|
- initialSQL = strings.ReplaceAll(initialSQL, "{{admins}}", sqlTableAdmins)
|
|
|
- initialSQL = strings.ReplaceAll(initialSQL, "{{folders}}", sqlTableFolders)
|
|
|
- initialSQL = strings.ReplaceAll(initialSQL, "{{users}}", sqlTableUsers)
|
|
|
- initialSQL = strings.ReplaceAll(initialSQL, "{{folders_mapping}}", sqlTableFoldersMapping)
|
|
|
- initialSQL = strings.ReplaceAll(initialSQL, "{{api_keys}}", sqlTableAPIKeys)
|
|
|
- initialSQL = strings.ReplaceAll(initialSQL, "{{shares}}", sqlTableShares)
|
|
|
- initialSQL = strings.ReplaceAll(initialSQL, "{{defender_events}}", sqlTableDefenderEvents)
|
|
|
- initialSQL = strings.ReplaceAll(initialSQL, "{{defender_hosts}}", sqlTableDefenderHosts)
|
|
|
- initialSQL = strings.ReplaceAll(initialSQL, "{{prefix}}", config.SQLTablesPrefix)
|
|
|
-
|
|
|
- return sqlCommonExecSQLAndUpdateDBVersion(p.dbHandle, []string{initialSQL}, 15, true)
|
|
|
+ logger.InfoToConsole("creating initial database schema, version 19")
|
|
|
+ providerLog(logger.LevelInfo, "creating initial database schema, version 19")
|
|
|
+ sql := sqlReplaceAll(sqliteInitialSQL)
|
|
|
+
|
|
|
+ return sqlCommonExecSQLAndUpdateDBVersion(p.dbHandle, []string{sql}, 19, true)
|
|
|
}
|
|
|
|
|
|
func (p *SQLiteProvider) migrateDatabase() error { //nolint:dupl
|
|
@@ -532,19 +483,11 @@ func (p *SQLiteProvider) migrateDatabase() error { //nolint:dupl
|
|
|
case version == sqlDatabaseVersion:
|
|
|
providerLog(logger.LevelDebug, "sql database is up to date, current version: %v", version)
|
|
|
return ErrNoInitRequired
|
|
|
- case version < 15:
|
|
|
+ case version < 19:
|
|
|
err = fmt.Errorf("database version %v is too old, please see the upgrading docs", version)
|
|
|
providerLog(logger.LevelError, "%v", err)
|
|
|
logger.ErrorToConsole("%v", err)
|
|
|
return err
|
|
|
- case version == 15:
|
|
|
- return updateSQLiteDatabaseFromV15(p.dbHandle)
|
|
|
- case version == 16:
|
|
|
- return updateSQLiteDatabaseFromV16(p.dbHandle)
|
|
|
- case version == 17:
|
|
|
- return updateSQLiteDatabaseFromV17(p.dbHandle)
|
|
|
- case version == 18:
|
|
|
- return updateSQLiteDatabaseFromV18(p.dbHandle)
|
|
|
default:
|
|
|
if version > sqlDatabaseVersion {
|
|
|
providerLog(logger.LevelError, "database version %v is newer than the supported one: %v", version,
|
|
@@ -567,14 +510,6 @@ func (p *SQLiteProvider) revertDatabase(targetVersion int) error {
|
|
|
}
|
|
|
|
|
|
switch dbVersion.Version {
|
|
|
- case 16:
|
|
|
- return downgradeSQLiteDatabaseFromV16(p.dbHandle)
|
|
|
- case 17:
|
|
|
- return downgradeSQLiteDatabaseFromV17(p.dbHandle)
|
|
|
- case 18:
|
|
|
- return downgradeSQLiteDatabaseFromV18(p.dbHandle)
|
|
|
- case 19:
|
|
|
- return downgradeSQLiteDatabaseFromV19(p.dbHandle)
|
|
|
default:
|
|
|
return fmt.Errorf("database version not handled: %v", dbVersion.Version)
|
|
|
}
|
|
@@ -585,144 +520,7 @@ func (p *SQLiteProvider) resetDatabase() error {
|
|
|
return sqlCommonExecSQLAndUpdateDBVersion(p.dbHandle, []string{sql}, 0, false)
|
|
|
}
|
|
|
|
|
|
-func updateSQLiteDatabaseFromV15(dbHandle *sql.DB) error {
|
|
|
- if err := updateSQLiteDatabaseFrom15To16(dbHandle); err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
- return updateSQLiteDatabaseFromV16(dbHandle)
|
|
|
-}
|
|
|
-
|
|
|
-func updateSQLiteDatabaseFromV16(dbHandle *sql.DB) error {
|
|
|
- if err := updateSQLiteDatabaseFrom16To17(dbHandle); err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
- return updateSQLiteDatabaseFromV17(dbHandle)
|
|
|
-}
|
|
|
-
|
|
|
-func updateSQLiteDatabaseFromV17(dbHandle *sql.DB) error {
|
|
|
- if err := updateSQLiteDatabaseFrom17To18(dbHandle); err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
- return updateSQLiteDatabaseFromV18(dbHandle)
|
|
|
-}
|
|
|
-
|
|
|
-func updateSQLiteDatabaseFromV18(dbHandle *sql.DB) error {
|
|
|
- return updateSQLiteDatabaseFrom18To19(dbHandle)
|
|
|
-}
|
|
|
-
|
|
|
-func downgradeSQLiteDatabaseFromV16(dbHandle *sql.DB) error {
|
|
|
- return downgradeSQLiteDatabaseFrom16To15(dbHandle)
|
|
|
-}
|
|
|
-
|
|
|
-func downgradeSQLiteDatabaseFromV17(dbHandle *sql.DB) error {
|
|
|
- if err := downgradeSQLiteDatabaseFrom17To16(dbHandle); err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
- return downgradeSQLiteDatabaseFromV16(dbHandle)
|
|
|
-}
|
|
|
-
|
|
|
-func downgradeSQLiteDatabaseFromV18(dbHandle *sql.DB) error {
|
|
|
- if err := downgradeSQLiteDatabaseFrom18To17(dbHandle); err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
- return downgradeSQLiteDatabaseFromV17(dbHandle)
|
|
|
-}
|
|
|
-
|
|
|
-func downgradeSQLiteDatabaseFromV19(dbHandle *sql.DB) error {
|
|
|
- if err := downgradeSQLiteDatabaseFrom19To18(dbHandle); err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
- return downgradeSQLiteDatabaseFromV18(dbHandle)
|
|
|
-}
|
|
|
-
|
|
|
-func updateSQLiteDatabaseFrom15To16(dbHandle *sql.DB) error {
|
|
|
- logger.InfoToConsole("updating database version: 15 -> 16")
|
|
|
- providerLog(logger.LevelInfo, "updating database version: 15 -> 16")
|
|
|
- sql := strings.ReplaceAll(sqliteV16SQL, "{{users}}", sqlTableUsers)
|
|
|
- sql = strings.ReplaceAll(sql, "{{active_transfers}}", sqlTableActiveTransfers)
|
|
|
- sql = strings.ReplaceAll(sql, "{{prefix}}", config.SQLTablesPrefix)
|
|
|
- return sqlCommonExecSQLAndUpdateDBVersion(dbHandle, []string{sql}, 16, true)
|
|
|
-}
|
|
|
-
|
|
|
-func updateSQLiteDatabaseFrom16To17(dbHandle *sql.DB) error {
|
|
|
- logger.InfoToConsole("updating database version: 16 -> 17")
|
|
|
- providerLog(logger.LevelInfo, "updating database version: 16 -> 17")
|
|
|
- if err := setPragmaFK(dbHandle, "OFF"); err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
- sql := strings.ReplaceAll(sqliteV17SQL, "{{users}}", sqlTableUsers)
|
|
|
- sql = strings.ReplaceAll(sql, "{{groups}}", sqlTableGroups)
|
|
|
- sql = strings.ReplaceAll(sql, "{{folders}}", sqlTableFolders)
|
|
|
- sql = strings.ReplaceAll(sql, "{{folders_mapping}}", sqlTableFoldersMapping)
|
|
|
- sql = strings.ReplaceAll(sql, "{{users_folders_mapping}}", sqlTableUsersFoldersMapping)
|
|
|
- sql = strings.ReplaceAll(sql, "{{users_groups_mapping}}", sqlTableUsersGroupsMapping)
|
|
|
- sql = strings.ReplaceAll(sql, "{{groups_folders_mapping}}", sqlTableGroupsFoldersMapping)
|
|
|
- sql = strings.ReplaceAll(sql, "{{prefix}}", config.SQLTablesPrefix)
|
|
|
- if err := sqlCommonExecSQLAndUpdateDBVersion(dbHandle, []string{sql}, 17, true); err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
- return setPragmaFK(dbHandle, "ON")
|
|
|
-}
|
|
|
-
|
|
|
-func updateSQLiteDatabaseFrom17To18(dbHandle *sql.DB) error {
|
|
|
- logger.InfoToConsole("updating database version: 17 -> 18")
|
|
|
- providerLog(logger.LevelInfo, "updating database version: 17 -> 18")
|
|
|
- if err := importGCSCredentials(); err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
- return sqlCommonExecSQLAndUpdateDBVersion(dbHandle, nil, 18, true)
|
|
|
-}
|
|
|
-
|
|
|
-func updateSQLiteDatabaseFrom18To19(dbHandle *sql.DB) error {
|
|
|
- logger.InfoToConsole("updating database version: 18 -> 19")
|
|
|
- providerLog(logger.LevelInfo, "updating database version: 18 -> 19")
|
|
|
- sql := strings.ReplaceAll(sqliteV19SQL, "{{shared_sessions}}", sqlTableSharedSessions)
|
|
|
- sql = strings.ReplaceAll(sql, "{{prefix}}", config.SQLTablesPrefix)
|
|
|
- return sqlCommonExecSQLAndUpdateDBVersion(dbHandle, []string{sql}, 19, true)
|
|
|
-}
|
|
|
-
|
|
|
-func downgradeSQLiteDatabaseFrom16To15(dbHandle *sql.DB) error {
|
|
|
- logger.InfoToConsole("downgrading database version: 16 -> 15")
|
|
|
- providerLog(logger.LevelInfo, "downgrading database version: 16 -> 15")
|
|
|
- sql := strings.ReplaceAll(sqliteV16DownSQL, "{{users}}", sqlTableUsers)
|
|
|
- sql = strings.ReplaceAll(sql, "{{active_transfers}}", sqlTableActiveTransfers)
|
|
|
- return sqlCommonExecSQLAndUpdateDBVersion(dbHandle, []string{sql}, 15, false)
|
|
|
-}
|
|
|
-
|
|
|
-func downgradeSQLiteDatabaseFrom17To16(dbHandle *sql.DB) error {
|
|
|
- logger.InfoToConsole("downgrading database version: 17 -> 16")
|
|
|
- providerLog(logger.LevelInfo, "downgrading database version: 17 -> 16")
|
|
|
- if err := setPragmaFK(dbHandle, "OFF"); err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
- sql := strings.ReplaceAll(sqliteV17DownSQL, "{{groups}}", sqlTableGroups)
|
|
|
- sql = strings.ReplaceAll(sql, "{{users}}", sqlTableUsers)
|
|
|
- sql = strings.ReplaceAll(sql, "{{folders}}", sqlTableFolders)
|
|
|
- sql = strings.ReplaceAll(sql, "{{folders_mapping}}", sqlTableFoldersMapping)
|
|
|
- sql = strings.ReplaceAll(sql, "{{users_folders_mapping}}", sqlTableUsersFoldersMapping)
|
|
|
- sql = strings.ReplaceAll(sql, "{{users_groups_mapping}}", sqlTableUsersGroupsMapping)
|
|
|
- sql = strings.ReplaceAll(sql, "{{groups_folders_mapping}}", sqlTableGroupsFoldersMapping)
|
|
|
- sql = strings.ReplaceAll(sql, "{{prefix}}", config.SQLTablesPrefix)
|
|
|
- if err := sqlCommonExecSQLAndUpdateDBVersion(dbHandle, []string{sql}, 16, false); err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
- return setPragmaFK(dbHandle, "ON")
|
|
|
-}
|
|
|
-
|
|
|
-func downgradeSQLiteDatabaseFrom18To17(dbHandle *sql.DB) error {
|
|
|
- logger.InfoToConsole("downgrading database version: 18 -> 17")
|
|
|
- providerLog(logger.LevelInfo, "downgrading database version: 18 -> 17")
|
|
|
- return sqlCommonExecSQLAndUpdateDBVersion(dbHandle, nil, 17, false)
|
|
|
-}
|
|
|
-
|
|
|
-func downgradeSQLiteDatabaseFrom19To18(dbHandle *sql.DB) error {
|
|
|
- logger.InfoToConsole("downgrading database version: 19 -> 18")
|
|
|
- providerLog(logger.LevelInfo, "downgrading database version: 19 -> 18")
|
|
|
- sql := strings.ReplaceAll(sqliteV19DownSQL, "{{shared_sessions}}", sqlTableSharedSessions)
|
|
|
- return sqlCommonExecSQLAndUpdateDBVersion(dbHandle, []string{sql}, 18, false)
|
|
|
-}
|
|
|
-
|
|
|
-func setPragmaFK(dbHandle *sql.DB, value string) error {
|
|
|
+/*func setPragmaFK(dbHandle *sql.DB, value string) error {
|
|
|
ctx, cancel := context.WithTimeout(context.Background(), longSQLQueryTimeout)
|
|
|
defer cancel()
|
|
|
|
|
@@ -730,4 +528,4 @@ func setPragmaFK(dbHandle *sql.DB, value string) error {
|
|
|
|
|
|
_, err := dbHandle.ExecContext(ctx, sql)
|
|
|
return err
|
|
|
-}
|
|
|
+}*/
|