package db import ( "context" "database/sql" "time" "github.com/Southclaws/fault" "lmika.dev/lmika/weiro/providers/db/gen/sqlgen" "lmika.dev/lmika/weiro/sql/schema" migration "lmika.dev/pkg/litemigrate" ) type Provider struct { drvr *sql.DB queries *sqlgen.Queries } func New(dbFile string) (*Provider, error) { drvr, err := sql.Open("sqlite", dbFile) if err != nil { return nil, fault.Wrap(err) } if err := migration.New(schema.FS, drvr).MigrateUp(context.Background()); err != nil { return nil, fault.Wrap(err) } if _, err := drvr.Exec(`PRAGMA foreign_keys = 1;`); err != nil { return nil, fault.Wrap(err) } return &Provider{ drvr: drvr, queries: sqlgen.New(drvr), }, nil } func (db *Provider) Close() error { return db.drvr.Close() } func (db *Provider) SoftDeletePost(ctx context.Context, postID int64) error { return db.queries.SoftDeletePost(ctx, sqlgen.SoftDeletePostParams{ DeletedAt: time.Now().Unix(), ID: postID, }) } func (db *Provider) HardDeletePost(ctx context.Context, postID int64) error { return db.queries.HardDeletePost(ctx, postID) } func (db *Provider) RestorePost(ctx context.Context, postID int64) error { return db.queries.RestorePost(ctx, postID) }