From 41cb597f0328d171e94f22356c49363dfc0be4ad Mon Sep 17 00:00:00 2001 From: Steven Date: Sun, 17 Dec 2023 14:16:34 +0800 Subject: [PATCH] chore: update sqlite functions --- store/common.go | 14 ++++++++ store/db/sqlite/collection.go | 11 ++++++ store/db/sqlite/common.go | 59 --------------------------------- store/db/sqlite/memo.go | 17 +++------- store/db/sqlite/migrator.go | 1 - store/db/sqlite/shortcut.go | 17 +++------- store/db/sqlite/user.go | 5 +-- store/db/sqlite/user_setting.go | 11 +----- 8 files changed, 37 insertions(+), 98 deletions(-) delete mode 100644 store/db/sqlite/common.go diff --git a/store/common.go b/store/common.go index 12e04cf..bb5afce 100644 --- a/store/common.go +++ b/store/common.go @@ -1,5 +1,9 @@ package store +import ( + storepb "github.com/yourselfhosted/slash/proto/gen/store" +) + // RowStatus is the status for a row. type RowStatus string @@ -20,6 +24,16 @@ func (e RowStatus) String() string { return "" } +func ConvertRowStatusStringToStorepb(status string) storepb.RowStatus { + switch status { + case "NORMAL": + return storepb.RowStatus_NORMAL + case "ARCHIVED": + return storepb.RowStatus_ARCHIVED + } + return storepb.RowStatus_ROW_STATUS_UNSPECIFIED +} + // Visibility is the type of a visibility. type Visibility string diff --git a/store/db/sqlite/collection.go b/store/db/sqlite/collection.go index 3a12c9c..88eb3d4 100644 --- a/store/db/sqlite/collection.go +++ b/store/db/sqlite/collection.go @@ -2,6 +2,7 @@ package sqlite import ( "context" + "database/sql" "fmt" "strings" @@ -181,3 +182,13 @@ func (d *DB) DeleteCollection(ctx context.Context, delete *store.DeleteCollectio return nil } + +func vacuumCollection(ctx context.Context, tx *sql.Tx) error { + stmt := `DELETE FROM collection WHERE creator_id NOT IN (SELECT id FROM user)` + _, err := tx.ExecContext(ctx, stmt) + if err != nil { + return err + } + + return nil +} diff --git a/store/db/sqlite/common.go b/store/db/sqlite/common.go deleted file mode 100644 index a805d1e..0000000 --- a/store/db/sqlite/common.go +++ /dev/null @@ -1,59 +0,0 @@ -package sqlite - -import ( - storepb "github.com/yourselfhosted/slash/proto/gen/store" -) - -// RowStatus is the status for a row. -type RowStatus string - -const ( - // Normal is the status for a normal row. - Normal RowStatus = "NORMAL" - // Archived is the status for an archived row. - Archived RowStatus = "ARCHIVED" -) - -func (e RowStatus) String() string { - switch e { - case Normal: - return "NORMAL" - case Archived: - return "ARCHIVED" - } - return "" -} - -func convertRowStatusStringToStorepb(status string) storepb.RowStatus { - switch status { - case "NORMAL": - return storepb.RowStatus_NORMAL - case "ARCHIVED": - return storepb.RowStatus_ARCHIVED - } - return storepb.RowStatus_ROW_STATUS_UNSPECIFIED -} - -// Visibility is the type of a visibility. -type Visibility string - -const ( - // VisibilityPublic is the PUBLIC visibility. - VisibilityPublic Visibility = "PUBLIC" - // VisibilityWorkspace is the WORKSPACE visibility. - VisibilityWorkspace Visibility = "WORKSPACE" - // VisibilityPrivate is the PRIVATE visibility. - VisibilityPrivate Visibility = "PRIVATE" -) - -func (e Visibility) String() string { - switch e { - case VisibilityPublic: - return "PUBLIC" - case VisibilityWorkspace: - return "WORKSPACE" - case VisibilityPrivate: - return "PRIVATE" - } - return "PRIVATE" -} diff --git a/store/db/sqlite/memo.go b/store/db/sqlite/memo.go index e45c52c..95e1a2e 100644 --- a/store/db/sqlite/memo.go +++ b/store/db/sqlite/memo.go @@ -33,7 +33,7 @@ func (d *DB) CreateMemo(ctx context.Context, create *storepb.Memo) (*storepb.Mem ); err != nil { return nil, err } - create.RowStatus = convertRowStatusStringToStorepb(rowStatus) + create.RowStatus = store.ConvertRowStatusStringToStorepb(rowStatus) memo := create return memo, nil } @@ -87,7 +87,7 @@ func (d *DB) UpdateMemo(ctx context.Context, update *store.UpdateMemo) (*storepb ); err != nil { return nil, err } - memo.RowStatus = convertRowStatusStringToStorepb(rowStatus) + memo.RowStatus = store.ConvertRowStatusStringToStorepb(rowStatus) memo.Visibility = convertVisibilityStringToStorepb(visibility) memo.Tags = filterTags(strings.Split(tags, " ")) return memo, nil @@ -159,7 +159,7 @@ func (d *DB) ListMemos(ctx context.Context, find *store.FindMemo) ([]*storepb.Me ); err != nil { return nil, err } - memo.RowStatus = convertRowStatusStringToStorepb(rowStatus) + memo.RowStatus = store.ConvertRowStatusStringToStorepb(rowStatus) memo.Visibility = storepb.Visibility(storepb.Visibility_value[visibility]) memo.Tags = filterTags(strings.Split(tags, " ")) list = append(list, memo) @@ -179,16 +179,7 @@ func (d *DB) DeleteMemo(ctx context.Context, delete *store.DeleteMemo) error { } func vacuumMemo(ctx context.Context, tx *sql.Tx) error { - stmt := ` - DELETE FROM - memo - WHERE - creator_id NOT IN ( - SELECT - id - FROM - user - )` + stmt := `DELETE FROM memo WHERE creator_id NOT IN (SELECT id FROM user)` _, err := tx.ExecContext(ctx, stmt) if err != nil { return err diff --git a/store/db/sqlite/migrator.go b/store/db/sqlite/migrator.go index 7428759..41d1d88 100644 --- a/store/db/sqlite/migrator.go +++ b/store/db/sqlite/migrator.go @@ -229,6 +229,5 @@ func getMinorVersionList() []string { } sort.Sort(version.SortVersion(minorVersionList)) - return minorVersionList } diff --git a/store/db/sqlite/shortcut.go b/store/db/sqlite/shortcut.go index 8fa88c1..9e3e004 100644 --- a/store/db/sqlite/shortcut.go +++ b/store/db/sqlite/shortcut.go @@ -43,7 +43,7 @@ func (d *DB) CreateShortcut(ctx context.Context, create *storepb.Shortcut) (*sto ); err != nil { return nil, err } - create.RowStatus = convertRowStatusStringToStorepb(rowStatus) + create.RowStatus = store.ConvertRowStatusStringToStorepb(rowStatus) shortcut := create return shortcut, nil } @@ -109,7 +109,7 @@ func (d *DB) UpdateShortcut(ctx context.Context, update *store.UpdateShortcut) ( ); err != nil { return nil, err } - shortcut.RowStatus = convertRowStatusStringToStorepb(rowStatus) + shortcut.RowStatus = store.ConvertRowStatusStringToStorepb(rowStatus) shortcut.Visibility = convertVisibilityStringToStorepb(visibility) shortcut.Tags = filterTags(strings.Split(tags, " ")) var ogMetadata storepb.OpenGraphMetadata @@ -190,7 +190,7 @@ func (d *DB) ListShortcuts(ctx context.Context, find *store.FindShortcut) ([]*st ); err != nil { return nil, err } - shortcut.RowStatus = convertRowStatusStringToStorepb(rowStatus) + shortcut.RowStatus = store.ConvertRowStatusStringToStorepb(rowStatus) shortcut.Visibility = storepb.Visibility(storepb.Visibility_value[visibility]) shortcut.Tags = filterTags(strings.Split(tags, " ")) var ogMetadata storepb.OpenGraphMetadata @@ -216,16 +216,7 @@ func (d *DB) DeleteShortcut(ctx context.Context, delete *store.DeleteShortcut) e } func vacuumShortcut(ctx context.Context, tx *sql.Tx) error { - stmt := ` - DELETE FROM - shortcut - WHERE - creator_id NOT IN ( - SELECT - id - FROM - user - )` + stmt := `DELETE FROM shortcut WHERE creator_id NOT IN (SELECT id FROM user)` _, err := tx.ExecContext(ctx, stmt) if err != nil { return err diff --git a/store/db/sqlite/user.go b/store/db/sqlite/user.go index 310682a..742c083 100644 --- a/store/db/sqlite/user.go +++ b/store/db/sqlite/user.go @@ -163,14 +163,15 @@ func (d *DB) DeleteUser(ctx context.Context, delete *store.DeleteUser) error { if err := vacuumUserSetting(ctx, tx); err != nil { return err } - if err := vacuumShortcut(ctx, tx); err != nil { return err } - if err := vacuumMemo(ctx, tx); err != nil { return err } + if err := vacuumCollection(ctx, tx); err != nil { + return err + } return tx.Commit() } diff --git a/store/db/sqlite/user_setting.go b/store/db/sqlite/user_setting.go index 853efc9..ce814e2 100644 --- a/store/db/sqlite/user_setting.go +++ b/store/db/sqlite/user_setting.go @@ -109,16 +109,7 @@ func (d *DB) ListUserSettings(ctx context.Context, find *store.FindUserSetting) } func vacuumUserSetting(ctx context.Context, tx *sql.Tx) error { - stmt := ` - DELETE FROM - user_setting - WHERE - user_id NOT IN ( - SELECT - id - FROM - user - )` + stmt := `DELETE FROM user_setting WHERE user_id NOT IN (SELECT id FROM user)` _, err := tx.ExecContext(ctx, stmt) if err != nil { return err