Co-authored-by: Jeffrey Smith <jasafpro@gmail.com> Co-committed-by: Jeffrey Smith <jasafpro@gmail.com>
50 lines
1.1 KiB
Go
50 lines
1.1 KiB
Go
package sqlite
|
|
|
|
import "context"
|
|
|
|
// ExtDataStore implements store.ExtDataStore for SQLite.
|
|
type ExtDataStore struct{}
|
|
|
|
func NewExtDataStore() *ExtDataStore {
|
|
return &ExtDataStore{}
|
|
}
|
|
|
|
func (s *ExtDataStore) RegisterTable(ctx context.Context, packageID, tableName string) error {
|
|
_, err := DB.ExecContext(ctx,
|
|
`INSERT OR IGNORE INTO ext_data_tables (package_id, table_name)
|
|
VALUES (?, ?)`,
|
|
packageID, tableName)
|
|
return err
|
|
}
|
|
|
|
func (s *ExtDataStore) ListTables(ctx context.Context, packageID string) ([]string, error) {
|
|
rows, err := DB.QueryContext(ctx,
|
|
`SELECT table_name FROM ext_data_tables
|
|
WHERE package_id = ?
|
|
ORDER BY table_name`,
|
|
packageID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
|
|
var names []string
|
|
for rows.Next() {
|
|
var n string
|
|
if err := rows.Scan(&n); err != nil {
|
|
return nil, err
|
|
}
|
|
names = append(names, n)
|
|
}
|
|
if names == nil {
|
|
names = []string{}
|
|
}
|
|
return names, nil
|
|
}
|
|
|
|
func (s *ExtDataStore) DeletePackageTables(ctx context.Context, packageID string) error {
|
|
_, err := DB.ExecContext(ctx,
|
|
`DELETE FROM ext_data_tables WHERE package_id = ?`, packageID)
|
|
return err
|
|
}
|