mirror of
https://github.com/stashapp/stash.git
synced 2025-12-17 04:14:39 +03:00
Add SQL graphql mutations (#3920)
This commit is contained in:
@@ -2,6 +2,7 @@ package sqlite
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
"embed"
|
||||
"errors"
|
||||
"fmt"
|
||||
@@ -458,6 +459,60 @@ func (db *Database) Vacuum(ctx context.Context) error {
|
||||
return err
|
||||
}
|
||||
|
||||
func (db *Database) ExecSQL(ctx context.Context, query string, args []interface{}) (*int64, *int64, error) {
|
||||
wrapper := dbWrapper{}
|
||||
|
||||
result, err := wrapper.Exec(ctx, query, args...)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var rowsAffected *int64
|
||||
ra, err := result.RowsAffected()
|
||||
if err == nil {
|
||||
rowsAffected = &ra
|
||||
}
|
||||
|
||||
var lastInsertId *int64
|
||||
li, err := result.LastInsertId()
|
||||
if err == nil {
|
||||
lastInsertId = &li
|
||||
}
|
||||
|
||||
return rowsAffected, lastInsertId, nil
|
||||
}
|
||||
|
||||
func (db *Database) QuerySQL(ctx context.Context, query string, args []interface{}) ([]string, [][]interface{}, error) {
|
||||
wrapper := dbWrapper{}
|
||||
|
||||
rows, err := wrapper.QueryxContext(ctx, query, args...)
|
||||
if err != nil && !errors.Is(err, sql.ErrNoRows) {
|
||||
return nil, nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
cols, err := rows.Columns()
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
var ret [][]interface{}
|
||||
|
||||
for rows.Next() {
|
||||
row, err := rows.SliceScan()
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
ret = append(ret, row)
|
||||
}
|
||||
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
return cols, ret, nil
|
||||
}
|
||||
|
||||
func (db *Database) runCustomMigrations(ctx context.Context, fns []customMigrationFunc) error {
|
||||
for _, fn := range fns {
|
||||
if err := db.runCustomMigration(ctx, fn); err != nil {
|
||||
|
||||
Reference in New Issue
Block a user