mirror of
https://github.com/usememos/memos.git
synced 2025-06-05 22:09:59 +02:00
chore: fix vacuum memo
This commit is contained in:
@ -3,7 +3,6 @@ package postgres
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"fmt"
|
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/Masterminds/squirrel"
|
"github.com/Masterminds/squirrel"
|
||||||
@ -216,32 +215,14 @@ func (d *DB) DeleteMemo(ctx context.Context, delete *store.DeleteMemo) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err := result.RowsAffected(); err != nil {
|
if _, err := result.RowsAffected(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return d.Vacuum(ctx)
|
return d.Vacuum(ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
func vacuumMemo(ctx context.Context, tx *sql.Tx) error {
|
func vacuumMemo(ctx context.Context, tx *sql.Tx) error {
|
||||||
// First, build the subquery
|
stmt := `DELETE FROM memo WHERE creator_id NOT IN (SELECT id FROM "user")`
|
||||||
// select from user is select the DB users, not the memos users.
|
_, err := tx.ExecContext(ctx, stmt)
|
||||||
subQuery, subArgs, err := squirrel.Select("id").From("public.user").PlaceholderFormat(squirrel.Dollar).ToSql()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
// Now, build the main delete query using the subquery
|
|
||||||
query, args, err := squirrel.Delete("memo").
|
|
||||||
Where(fmt.Sprintf("creator_id NOT IN (%s)", subQuery), subArgs...).
|
|
||||||
PlaceholderFormat(squirrel.Dollar).
|
|
||||||
ToSql()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
// Execute the query
|
|
||||||
_, err = tx.ExecContext(ctx, query, args...)
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user