package database import ( "context" "certmanager/internal/descriptor" _ "github.com/mattn/go-sqlite3" ) func (db *Database) InsertGrant(ctx context.Context, grant *descriptor.Grant) error { var err error request := `INSERT INTO grant(id, account_id, operation, created_at) VALUES ($1, $2, $3, $4)` _, err = db.db.Exec(request, grant.ID, grant.AccountID, grant.Operation, grant.CreatedAt) if err != nil { return err } return err } func (db *Database) ListGrantsByAccountID(ctx context.Context, accountID int64) ([]descriptor.Grant, error) { var err error request := `SELECT * FROM grant WHERE account_id = $1` res := make([]descriptor.Grant, 0) err = db.db.Select(&res, request, accountID) if err != nil { return res, err } return res, err } func (db *Database) ListGrants(ctx context.Context) ([]descriptor.Grant, error) { var err error request := `SELECT * FROM grant` res := make([]descriptor.Grant, 0) err = db.db.Select(&res, request) if err != nil { return res, err } return res, err } func (db *Database) GetGrant(ctx context.Context, accountID int64, operation string) (bool, *descriptor.Grant, error) { var err error res := &descriptor.Grant{} request := `SELECT * FROM grant WHERE account_id = $1 AND operation = $2 LIMIT 1` dbRes := make([]descriptor.Grant, 0) err = db.db.Select(&dbRes, request, accountID, operation) if err != nil { return false, res, err } if len(dbRes) == 0 { return false, res, err } res = &dbRes[0] return true, res, err } func (db *Database) DeleteGrantByAccountID(ctx context.Context, grantID int64, operation string) error { var err error request := `DELETE FROM grant WHERE account_id = $1 AND operation = $2` _, err = db.db.Exec(request, grantID, operation) if err != nil { return err } return err } func (db *Database) DeleteAllGrantsForAccountID(ctx context.Context, grantID int64) error { var err error request := `DELETE FROM grant WHERE account_id = $1` _, err = db.db.Exec(request, grantID) if err != nil { return err } return err }