mirror of
https://github.com/aykhans/slash-e.git
synced 2025-04-20 14:01:24 +00:00
chore: update sqlite functions
This commit is contained in:
parent
a9071d629a
commit
41cb597f03
@ -1,5 +1,9 @@
|
|||||||
package store
|
package store
|
||||||
|
|
||||||
|
import (
|
||||||
|
storepb "github.com/yourselfhosted/slash/proto/gen/store"
|
||||||
|
)
|
||||||
|
|
||||||
// RowStatus is the status for a row.
|
// RowStatus is the status for a row.
|
||||||
type RowStatus string
|
type RowStatus string
|
||||||
|
|
||||||
@ -20,6 +24,16 @@ func (e RowStatus) String() string {
|
|||||||
return ""
|
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.
|
// Visibility is the type of a visibility.
|
||||||
type Visibility string
|
type Visibility string
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@ package sqlite
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"database/sql"
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
@ -181,3 +182,13 @@ func (d *DB) DeleteCollection(ctx context.Context, delete *store.DeleteCollectio
|
|||||||
|
|
||||||
return nil
|
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
|
||||||
|
}
|
||||||
|
@ -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"
|
|
||||||
}
|
|
@ -33,7 +33,7 @@ func (d *DB) CreateMemo(ctx context.Context, create *storepb.Memo) (*storepb.Mem
|
|||||||
); err != nil {
|
); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
create.RowStatus = convertRowStatusStringToStorepb(rowStatus)
|
create.RowStatus = store.ConvertRowStatusStringToStorepb(rowStatus)
|
||||||
memo := create
|
memo := create
|
||||||
return memo, nil
|
return memo, nil
|
||||||
}
|
}
|
||||||
@ -87,7 +87,7 @@ func (d *DB) UpdateMemo(ctx context.Context, update *store.UpdateMemo) (*storepb
|
|||||||
); err != nil {
|
); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
memo.RowStatus = convertRowStatusStringToStorepb(rowStatus)
|
memo.RowStatus = store.ConvertRowStatusStringToStorepb(rowStatus)
|
||||||
memo.Visibility = convertVisibilityStringToStorepb(visibility)
|
memo.Visibility = convertVisibilityStringToStorepb(visibility)
|
||||||
memo.Tags = filterTags(strings.Split(tags, " "))
|
memo.Tags = filterTags(strings.Split(tags, " "))
|
||||||
return memo, nil
|
return memo, nil
|
||||||
@ -159,7 +159,7 @@ func (d *DB) ListMemos(ctx context.Context, find *store.FindMemo) ([]*storepb.Me
|
|||||||
); err != nil {
|
); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
memo.RowStatus = convertRowStatusStringToStorepb(rowStatus)
|
memo.RowStatus = store.ConvertRowStatusStringToStorepb(rowStatus)
|
||||||
memo.Visibility = storepb.Visibility(storepb.Visibility_value[visibility])
|
memo.Visibility = storepb.Visibility(storepb.Visibility_value[visibility])
|
||||||
memo.Tags = filterTags(strings.Split(tags, " "))
|
memo.Tags = filterTags(strings.Split(tags, " "))
|
||||||
list = append(list, memo)
|
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 {
|
func vacuumMemo(ctx context.Context, tx *sql.Tx) error {
|
||||||
stmt := `
|
stmt := `DELETE FROM memo WHERE creator_id NOT IN (SELECT id FROM user)`
|
||||||
DELETE FROM
|
|
||||||
memo
|
|
||||||
WHERE
|
|
||||||
creator_id NOT IN (
|
|
||||||
SELECT
|
|
||||||
id
|
|
||||||
FROM
|
|
||||||
user
|
|
||||||
)`
|
|
||||||
_, err := tx.ExecContext(ctx, stmt)
|
_, err := tx.ExecContext(ctx, stmt)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -229,6 +229,5 @@ func getMinorVersionList() []string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
sort.Sort(version.SortVersion(minorVersionList))
|
sort.Sort(version.SortVersion(minorVersionList))
|
||||||
|
|
||||||
return minorVersionList
|
return minorVersionList
|
||||||
}
|
}
|
||||||
|
@ -43,7 +43,7 @@ func (d *DB) CreateShortcut(ctx context.Context, create *storepb.Shortcut) (*sto
|
|||||||
); err != nil {
|
); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
create.RowStatus = convertRowStatusStringToStorepb(rowStatus)
|
create.RowStatus = store.ConvertRowStatusStringToStorepb(rowStatus)
|
||||||
shortcut := create
|
shortcut := create
|
||||||
return shortcut, nil
|
return shortcut, nil
|
||||||
}
|
}
|
||||||
@ -109,7 +109,7 @@ func (d *DB) UpdateShortcut(ctx context.Context, update *store.UpdateShortcut) (
|
|||||||
); err != nil {
|
); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
shortcut.RowStatus = convertRowStatusStringToStorepb(rowStatus)
|
shortcut.RowStatus = store.ConvertRowStatusStringToStorepb(rowStatus)
|
||||||
shortcut.Visibility = convertVisibilityStringToStorepb(visibility)
|
shortcut.Visibility = convertVisibilityStringToStorepb(visibility)
|
||||||
shortcut.Tags = filterTags(strings.Split(tags, " "))
|
shortcut.Tags = filterTags(strings.Split(tags, " "))
|
||||||
var ogMetadata storepb.OpenGraphMetadata
|
var ogMetadata storepb.OpenGraphMetadata
|
||||||
@ -190,7 +190,7 @@ func (d *DB) ListShortcuts(ctx context.Context, find *store.FindShortcut) ([]*st
|
|||||||
); err != nil {
|
); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
shortcut.RowStatus = convertRowStatusStringToStorepb(rowStatus)
|
shortcut.RowStatus = store.ConvertRowStatusStringToStorepb(rowStatus)
|
||||||
shortcut.Visibility = storepb.Visibility(storepb.Visibility_value[visibility])
|
shortcut.Visibility = storepb.Visibility(storepb.Visibility_value[visibility])
|
||||||
shortcut.Tags = filterTags(strings.Split(tags, " "))
|
shortcut.Tags = filterTags(strings.Split(tags, " "))
|
||||||
var ogMetadata storepb.OpenGraphMetadata
|
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 {
|
func vacuumShortcut(ctx context.Context, tx *sql.Tx) error {
|
||||||
stmt := `
|
stmt := `DELETE FROM shortcut WHERE creator_id NOT IN (SELECT id FROM user)`
|
||||||
DELETE FROM
|
|
||||||
shortcut
|
|
||||||
WHERE
|
|
||||||
creator_id NOT IN (
|
|
||||||
SELECT
|
|
||||||
id
|
|
||||||
FROM
|
|
||||||
user
|
|
||||||
)`
|
|
||||||
_, err := tx.ExecContext(ctx, stmt)
|
_, err := tx.ExecContext(ctx, stmt)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -163,14 +163,15 @@ func (d *DB) DeleteUser(ctx context.Context, delete *store.DeleteUser) error {
|
|||||||
if err := vacuumUserSetting(ctx, tx); err != nil {
|
if err := vacuumUserSetting(ctx, tx); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := vacuumShortcut(ctx, tx); err != nil {
|
if err := vacuumShortcut(ctx, tx); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := vacuumMemo(ctx, tx); err != nil {
|
if err := vacuumMemo(ctx, tx); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if err := vacuumCollection(ctx, tx); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
return tx.Commit()
|
return tx.Commit()
|
||||||
}
|
}
|
||||||
|
@ -109,16 +109,7 @@ func (d *DB) ListUserSettings(ctx context.Context, find *store.FindUserSetting)
|
|||||||
}
|
}
|
||||||
|
|
||||||
func vacuumUserSetting(ctx context.Context, tx *sql.Tx) error {
|
func vacuumUserSetting(ctx context.Context, tx *sql.Tx) error {
|
||||||
stmt := `
|
stmt := `DELETE FROM user_setting WHERE user_id NOT IN (SELECT id FROM user)`
|
||||||
DELETE FROM
|
|
||||||
user_setting
|
|
||||||
WHERE
|
|
||||||
user_id NOT IN (
|
|
||||||
SELECT
|
|
||||||
id
|
|
||||||
FROM
|
|
||||||
user
|
|
||||||
)`
|
|
||||||
_, err := tx.ExecContext(ctx, stmt)
|
_, err := tx.ExecContext(ctx, stmt)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
Loading…
x
Reference in New Issue
Block a user