package database import ( "context" "certmanager/internal/descriptor" _ "github.com/mattn/go-sqlite3" ) //type Grant struct { //ID int64 `json:"id" yaml:"id" db:"id"` //AccountID int64 `json:"accountID" yaml:"accountID" db:"account_id"` //Operation string `json:"operation" yaml:"operation" db:"operation"` //SubjectID int64 `json:"subjectID" yaml:"subjectID" db:"subjectID"` //} func (db *Database) InsertGrant(ctx context.Context, grant *descriptor.Grant) error { var err error request := `INSERT INTO grant(id, account_id, operation, subject_id) VALUES ($1, $2, $3, $4)` _, err = db.db.Exec(request, grant.ID, grant.AccountID, grant.Operation, grant.SubjectID) 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 ` res := make([]descriptor.Grant, 0) err = db.db.Select(&res, request, accountID) if err != nil { return res, err } return res, err } func (db *Database) GetGrant(ctx context.Context, accountID, subjectID int64) (bool, []*descriptor.Grant, error) { var err error var res []*descriptor.Grant var exists bool request := `SELECT id, operation, grant_id, subject_id FROM grant WHERE account_id = $1 AND subject_id = $1` dbRes := make([]*descriptor.Grant, 0) err = db.db.Select(&dbRes, request, accountID, subjectID) if err != nil { return exists, res, err } if len(dbRes) == 0 { return false, res, err } exists = true res = dbRes return exists, res, err } func (db *Database) DeleteGrantByAccountID(ctx context.Context, grantID int64) error { var err error request := `DELETE FROM grant WHERE grant_id = $1` _, err = db.db.Exec(request, grantID) if err != nil { return err } return err } func (db *Database) DeleteGrantsBySubjectID(ctx context.Context, subjectID int64) error { var err error request := `DELETE FROM grant WHERE subject_id = $1` _, err = db.db.Exec(request, subjectID) if err != nil { return err } return err }