add remaining scope repo methods.
This commit is contained in:
+2
-2
@@ -8,11 +8,11 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func Scopes(g *gin.RouterGroup, db database.Database) {
|
func Scopes(g *gin.RouterGroup, db database.Database) {
|
||||||
g.GET("/", handler("goals", func(c *gin.Context) (interface{}, error) {
|
g.GET("/", handler("scopes", func(c *gin.Context) (interface{}, error) {
|
||||||
return db.Scopes().ListByUser(c.Request.Context(), auth.UserID(c))
|
return db.Scopes().ListByUser(c.Request.Context(), auth.UserID(c))
|
||||||
}))
|
}))
|
||||||
|
|
||||||
g.GET("/:id", handler("goals", func(c *gin.Context) (interface{}, error) {
|
g.GET("/:id", handler("scope", func(c *gin.Context) (interface{}, error) {
|
||||||
id, err := reqInt(c, "id")
|
id, err := reqInt(c, "id")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|||||||
@@ -24,6 +24,15 @@ func New(db DBTX) *Queries {
|
|||||||
func Prepare(ctx context.Context, db DBTX) (*Queries, error) {
|
func Prepare(ctx context.Context, db DBTX) (*Queries, error) {
|
||||||
q := Queries{db: db}
|
q := Queries{db: db}
|
||||||
var err error
|
var err error
|
||||||
|
if q.deleteAllScopeMembersStmt, err = db.PrepareContext(ctx, deleteAllScopeMembers); err != nil {
|
||||||
|
return nil, fmt.Errorf("error preparing query DeleteAllScopeMembers: %w", err)
|
||||||
|
}
|
||||||
|
if q.deleteScopeStmt, err = db.PrepareContext(ctx, deleteScope); err != nil {
|
||||||
|
return nil, fmt.Errorf("error preparing query DeleteScope: %w", err)
|
||||||
|
}
|
||||||
|
if q.deleteScopeMemberStmt, err = db.PrepareContext(ctx, deleteScopeMember); err != nil {
|
||||||
|
return nil, fmt.Errorf("error preparing query DeleteScopeMember: %w", err)
|
||||||
|
}
|
||||||
if q.getScopeStmt, err = db.PrepareContext(ctx, getScope); err != nil {
|
if q.getScopeStmt, err = db.PrepareContext(ctx, getScope); err != nil {
|
||||||
return nil, fmt.Errorf("error preparing query GetScope: %w", err)
|
return nil, fmt.Errorf("error preparing query GetScope: %w", err)
|
||||||
}
|
}
|
||||||
@@ -33,6 +42,9 @@ func Prepare(ctx context.Context, db DBTX) (*Queries, error) {
|
|||||||
if q.getScopeWithDisplayNameStmt, err = db.PrepareContext(ctx, getScopeWithDisplayName); err != nil {
|
if q.getScopeWithDisplayNameStmt, err = db.PrepareContext(ctx, getScopeWithDisplayName); err != nil {
|
||||||
return nil, fmt.Errorf("error preparing query GetScopeWithDisplayName: %w", err)
|
return nil, fmt.Errorf("error preparing query GetScopeWithDisplayName: %w", err)
|
||||||
}
|
}
|
||||||
|
if q.insertScopeStmt, err = db.PrepareContext(ctx, insertScope); err != nil {
|
||||||
|
return nil, fmt.Errorf("error preparing query InsertScope: %w", err)
|
||||||
|
}
|
||||||
if q.listProjectEntriesStmt, err = db.PrepareContext(ctx, listProjectEntries); err != nil {
|
if q.listProjectEntriesStmt, err = db.PrepareContext(ctx, listProjectEntries); err != nil {
|
||||||
return nil, fmt.Errorf("error preparing query ListProjectEntries: %w", err)
|
return nil, fmt.Errorf("error preparing query ListProjectEntries: %w", err)
|
||||||
}
|
}
|
||||||
@@ -48,11 +60,32 @@ func Prepare(ctx context.Context, db DBTX) (*Queries, error) {
|
|||||||
if q.listStatsStmt, err = db.PrepareContext(ctx, listStats); err != nil {
|
if q.listStatsStmt, err = db.PrepareContext(ctx, listStats); err != nil {
|
||||||
return nil, fmt.Errorf("error preparing query ListStats: %w", err)
|
return nil, fmt.Errorf("error preparing query ListStats: %w", err)
|
||||||
}
|
}
|
||||||
|
if q.updateScopeStmt, err = db.PrepareContext(ctx, updateScope); err != nil {
|
||||||
|
return nil, fmt.Errorf("error preparing query UpdateScope: %w", err)
|
||||||
|
}
|
||||||
|
if q.updateScopeMemberStmt, err = db.PrepareContext(ctx, updateScopeMember); err != nil {
|
||||||
|
return nil, fmt.Errorf("error preparing query UpdateScopeMember: %w", err)
|
||||||
|
}
|
||||||
return &q, nil
|
return &q, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (q *Queries) Close() error {
|
func (q *Queries) Close() error {
|
||||||
var err error
|
var err error
|
||||||
|
if q.deleteAllScopeMembersStmt != nil {
|
||||||
|
if cerr := q.deleteAllScopeMembersStmt.Close(); cerr != nil {
|
||||||
|
err = fmt.Errorf("error closing deleteAllScopeMembersStmt: %w", cerr)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if q.deleteScopeStmt != nil {
|
||||||
|
if cerr := q.deleteScopeStmt.Close(); cerr != nil {
|
||||||
|
err = fmt.Errorf("error closing deleteScopeStmt: %w", cerr)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if q.deleteScopeMemberStmt != nil {
|
||||||
|
if cerr := q.deleteScopeMemberStmt.Close(); cerr != nil {
|
||||||
|
err = fmt.Errorf("error closing deleteScopeMemberStmt: %w", cerr)
|
||||||
|
}
|
||||||
|
}
|
||||||
if q.getScopeStmt != nil {
|
if q.getScopeStmt != nil {
|
||||||
if cerr := q.getScopeStmt.Close(); cerr != nil {
|
if cerr := q.getScopeStmt.Close(); cerr != nil {
|
||||||
err = fmt.Errorf("error closing getScopeStmt: %w", cerr)
|
err = fmt.Errorf("error closing getScopeStmt: %w", cerr)
|
||||||
@@ -68,6 +101,11 @@ func (q *Queries) Close() error {
|
|||||||
err = fmt.Errorf("error closing getScopeWithDisplayNameStmt: %w", cerr)
|
err = fmt.Errorf("error closing getScopeWithDisplayNameStmt: %w", cerr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if q.insertScopeStmt != nil {
|
||||||
|
if cerr := q.insertScopeStmt.Close(); cerr != nil {
|
||||||
|
err = fmt.Errorf("error closing insertScopeStmt: %w", cerr)
|
||||||
|
}
|
||||||
|
}
|
||||||
if q.listProjectEntriesStmt != nil {
|
if q.listProjectEntriesStmt != nil {
|
||||||
if cerr := q.listProjectEntriesStmt.Close(); cerr != nil {
|
if cerr := q.listProjectEntriesStmt.Close(); cerr != nil {
|
||||||
err = fmt.Errorf("error closing listProjectEntriesStmt: %w", cerr)
|
err = fmt.Errorf("error closing listProjectEntriesStmt: %w", cerr)
|
||||||
@@ -93,6 +131,16 @@ func (q *Queries) Close() error {
|
|||||||
err = fmt.Errorf("error closing listStatsStmt: %w", cerr)
|
err = fmt.Errorf("error closing listStatsStmt: %w", cerr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if q.updateScopeStmt != nil {
|
||||||
|
if cerr := q.updateScopeStmt.Close(); cerr != nil {
|
||||||
|
err = fmt.Errorf("error closing updateScopeStmt: %w", cerr)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if q.updateScopeMemberStmt != nil {
|
||||||
|
if cerr := q.updateScopeMemberStmt.Close(); cerr != nil {
|
||||||
|
err = fmt.Errorf("error closing updateScopeMemberStmt: %w", cerr)
|
||||||
|
}
|
||||||
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -132,27 +180,39 @@ func (q *Queries) queryRow(ctx context.Context, stmt *sql.Stmt, query string, ar
|
|||||||
type Queries struct {
|
type Queries struct {
|
||||||
db DBTX
|
db DBTX
|
||||||
tx *sql.Tx
|
tx *sql.Tx
|
||||||
|
deleteAllScopeMembersStmt *sql.Stmt
|
||||||
|
deleteScopeStmt *sql.Stmt
|
||||||
|
deleteScopeMemberStmt *sql.Stmt
|
||||||
getScopeStmt *sql.Stmt
|
getScopeStmt *sql.Stmt
|
||||||
getScopeDisplayNameStmt *sql.Stmt
|
getScopeDisplayNameStmt *sql.Stmt
|
||||||
getScopeWithDisplayNameStmt *sql.Stmt
|
getScopeWithDisplayNameStmt *sql.Stmt
|
||||||
|
insertScopeStmt *sql.Stmt
|
||||||
listProjectEntriesStmt *sql.Stmt
|
listProjectEntriesStmt *sql.Stmt
|
||||||
listScopeMembersStmt *sql.Stmt
|
listScopeMembersStmt *sql.Stmt
|
||||||
listScopesStmt *sql.Stmt
|
listScopesStmt *sql.Stmt
|
||||||
listScopesByUserStmt *sql.Stmt
|
listScopesByUserStmt *sql.Stmt
|
||||||
listStatsStmt *sql.Stmt
|
listStatsStmt *sql.Stmt
|
||||||
|
updateScopeStmt *sql.Stmt
|
||||||
|
updateScopeMemberStmt *sql.Stmt
|
||||||
}
|
}
|
||||||
|
|
||||||
func (q *Queries) WithTx(tx *sql.Tx) *Queries {
|
func (q *Queries) WithTx(tx *sql.Tx) *Queries {
|
||||||
return &Queries{
|
return &Queries{
|
||||||
db: tx,
|
db: tx,
|
||||||
tx: tx,
|
tx: tx,
|
||||||
|
deleteAllScopeMembersStmt: q.deleteAllScopeMembersStmt,
|
||||||
|
deleteScopeStmt: q.deleteScopeStmt,
|
||||||
|
deleteScopeMemberStmt: q.deleteScopeMemberStmt,
|
||||||
getScopeStmt: q.getScopeStmt,
|
getScopeStmt: q.getScopeStmt,
|
||||||
getScopeDisplayNameStmt: q.getScopeDisplayNameStmt,
|
getScopeDisplayNameStmt: q.getScopeDisplayNameStmt,
|
||||||
getScopeWithDisplayNameStmt: q.getScopeWithDisplayNameStmt,
|
getScopeWithDisplayNameStmt: q.getScopeWithDisplayNameStmt,
|
||||||
|
insertScopeStmt: q.insertScopeStmt,
|
||||||
listProjectEntriesStmt: q.listProjectEntriesStmt,
|
listProjectEntriesStmt: q.listProjectEntriesStmt,
|
||||||
listScopeMembersStmt: q.listScopeMembersStmt,
|
listScopeMembersStmt: q.listScopeMembersStmt,
|
||||||
listScopesStmt: q.listScopesStmt,
|
listScopesStmt: q.listScopesStmt,
|
||||||
listScopesByUserStmt: q.listScopesByUserStmt,
|
listScopesByUserStmt: q.listScopesByUserStmt,
|
||||||
listStatsStmt: q.listStatsStmt,
|
listStatsStmt: q.listStatsStmt,
|
||||||
|
updateScopeStmt: q.updateScopeStmt,
|
||||||
|
updateScopeMemberStmt: q.updateScopeMemberStmt,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,38 @@ import (
|
|||||||
"database/sql"
|
"database/sql"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const deleteAllScopeMembers = `-- name: DeleteAllScopeMembers :exec
|
||||||
|
DELETE FROM scope_member WHERE scope_id=?
|
||||||
|
`
|
||||||
|
|
||||||
|
func (q *Queries) DeleteAllScopeMembers(ctx context.Context, scopeID int) error {
|
||||||
|
_, err := q.exec(ctx, q.deleteAllScopeMembersStmt, deleteAllScopeMembers, scopeID)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
const deleteScope = `-- name: DeleteScope :exec
|
||||||
|
DELETE FROM scope WHERE id=?
|
||||||
|
`
|
||||||
|
|
||||||
|
func (q *Queries) DeleteScope(ctx context.Context, id int) error {
|
||||||
|
_, err := q.exec(ctx, q.deleteScopeStmt, deleteScope, id)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
const deleteScopeMember = `-- name: DeleteScopeMember :exec
|
||||||
|
DELETE FROM scope_member WHERE scope_id=? AND user_id=?
|
||||||
|
`
|
||||||
|
|
||||||
|
type DeleteScopeMemberParams struct {
|
||||||
|
ScopeID int `json:"scope_id"`
|
||||||
|
UserID string `json:"user_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (q *Queries) DeleteScopeMember(ctx context.Context, arg DeleteScopeMemberParams) error {
|
||||||
|
_, err := q.exec(ctx, q.deleteScopeMemberStmt, deleteScopeMember, arg.ScopeID, arg.UserID)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
const getScope = `-- name: GetScope :one
|
const getScope = `-- name: GetScope :one
|
||||||
SELECT id, name, abbreviation FROM scope
|
SELECT id, name, abbreviation FROM scope
|
||||||
WHERE id = ?
|
WHERE id = ?
|
||||||
@@ -69,6 +101,21 @@ func (q *Queries) GetScopeWithDisplayName(ctx context.Context, arg GetScopeWithD
|
|||||||
return i, err
|
return i, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const insertScope = `-- name: InsertScope :execresult
|
||||||
|
INSERT INTO scope (id, name, abbreviation)
|
||||||
|
VALUES (?, ?, ?)
|
||||||
|
`
|
||||||
|
|
||||||
|
type InsertScopeParams struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Abbreviation string `json:"abbreviation"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (q *Queries) InsertScope(ctx context.Context, arg InsertScopeParams) (sql.Result, error) {
|
||||||
|
return q.exec(ctx, q.insertScopeStmt, insertScope, arg.ID, arg.Name, arg.Abbreviation)
|
||||||
|
}
|
||||||
|
|
||||||
const listScopeMembers = `-- name: ListScopeMembers :many
|
const listScopeMembers = `-- name: ListScopeMembers :many
|
||||||
SELECT user_id, name, owner FROM scope_member
|
SELECT user_id, name, owner FROM scope_member
|
||||||
WHERE scope_id = ?
|
WHERE scope_id = ?
|
||||||
@@ -173,3 +220,40 @@ func (q *Queries) ListScopesByUser(ctx context.Context, userID string) ([]ListSc
|
|||||||
}
|
}
|
||||||
return items, nil
|
return items, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const updateScope = `-- name: UpdateScope :exec
|
||||||
|
UPDATE scope SET name = ?, abbreviation = ? WHERE id = ?
|
||||||
|
`
|
||||||
|
|
||||||
|
type UpdateScopeParams struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
Abbreviation string `json:"abbreviation"`
|
||||||
|
ID int `json:"id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (q *Queries) UpdateScope(ctx context.Context, arg UpdateScopeParams) error {
|
||||||
|
_, err := q.exec(ctx, q.updateScopeStmt, updateScope, arg.Name, arg.Abbreviation, arg.ID)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
const updateScopeMember = `-- name: UpdateScopeMember :exec
|
||||||
|
REPLACE INTO scope_member (scope_id, user_id, name, owner)
|
||||||
|
VALUES (?, ?, ?, ?)
|
||||||
|
`
|
||||||
|
|
||||||
|
type UpdateScopeMemberParams struct {
|
||||||
|
ScopeID int `json:"scope_id"`
|
||||||
|
UserID string `json:"user_id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Owner bool `json:"owner"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (q *Queries) UpdateScopeMember(ctx context.Context, arg UpdateScopeMemberParams) error {
|
||||||
|
_, err := q.exec(ctx, q.updateScopeMemberStmt, updateScopeMember,
|
||||||
|
arg.ScopeID,
|
||||||
|
arg.UserID,
|
||||||
|
arg.Name,
|
||||||
|
arg.Owner,
|
||||||
|
)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|||||||
@@ -26,3 +26,22 @@ WHERE id = ? AND sm.user_id = ?;
|
|||||||
SELECT name FROM scope_member
|
SELECT name FROM scope_member
|
||||||
WHERE user_id = ? AND scope_id = ?;
|
WHERE user_id = ? AND scope_id = ?;
|
||||||
|
|
||||||
|
-- name: InsertScope :execresult
|
||||||
|
INSERT INTO scope (id, name, abbreviation)
|
||||||
|
VALUES (?, ?, ?);
|
||||||
|
|
||||||
|
-- name: UpdateScope :exec
|
||||||
|
UPDATE scope SET name = ?, abbreviation = ? WHERE id = ?;
|
||||||
|
|
||||||
|
-- name: UpdateScopeMember :exec
|
||||||
|
REPLACE INTO scope_member (scope_id, user_id, name, owner)
|
||||||
|
VALUES (?, ?, ?, ?);
|
||||||
|
|
||||||
|
-- name: DeleteScopeMember :exec
|
||||||
|
DELETE FROM scope_member WHERE scope_id=? AND user_id=?;
|
||||||
|
|
||||||
|
-- name: DeleteAllScopeMembers :exec
|
||||||
|
DELETE FROM scope_member WHERE scope_id=?;
|
||||||
|
|
||||||
|
-- name: DeleteScope :exec
|
||||||
|
DELETE FROM scope WHERE id=?;
|
||||||
|
|||||||
@@ -4,12 +4,12 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"golang.org/x/sync/errgroup"
|
||||||
|
"sort"
|
||||||
|
|
||||||
"git.aiterp.net/stufflog3/stufflog3-api/internal/database/mysql/mysqlcore"
|
"git.aiterp.net/stufflog3/stufflog3-api/internal/database/mysql/mysqlcore"
|
||||||
"git.aiterp.net/stufflog3/stufflog3-api/internal/models"
|
"git.aiterp.net/stufflog3/stufflog3-api/internal/models"
|
||||||
"git.aiterp.net/stufflog3/stufflog3-api/internal/slerrors"
|
"git.aiterp.net/stufflog3/stufflog3-api/internal/slerrors"
|
||||||
"golang.org/x/sync/errgroup"
|
|
||||||
"log"
|
|
||||||
"time"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type scopeRepository struct {
|
type scopeRepository struct {
|
||||||
@@ -101,12 +101,10 @@ func (r *scopeRepository) Find(ctx context.Context, id int) (*models.Scope, erro
|
|||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
|
|
||||||
t := time.Now()
|
|
||||||
err = eg.Wait()
|
err = eg.Wait()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
log.Println(time.Since(t))
|
|
||||||
|
|
||||||
return res, nil
|
return res, nil
|
||||||
}
|
}
|
||||||
@@ -150,26 +148,126 @@ func (r *scopeRepository) ListByUser(ctx context.Context, userID string) ([]mode
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (r *scopeRepository) Create(ctx context.Context, scope models.ScopeEntry, owner models.ScopeMember) (*models.Scope, error) {
|
func (r *scopeRepository) Create(ctx context.Context, scope models.ScopeEntry, owner models.ScopeMember) (*models.Scope, error) {
|
||||||
//TODO implement me
|
tx, err := r.db.BeginTx(ctx, nil)
|
||||||
panic("implement me")
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer tx.Rollback()
|
||||||
|
|
||||||
|
q := mysqlcore.New(tx)
|
||||||
|
res, err := q.InsertScope(ctx, mysqlcore.InsertScopeParams(scope))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
id, err := res.LastInsertId()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = q.UpdateScopeMember(ctx, mysqlcore.UpdateScopeMemberParams{
|
||||||
|
ScopeID: int(id),
|
||||||
|
UserID: owner.ID,
|
||||||
|
Name: owner.Name,
|
||||||
|
Owner: true,
|
||||||
|
})
|
||||||
|
|
||||||
|
err = tx.Commit()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &models.Scope{
|
||||||
|
ScopeEntry: models.ScopeEntry{
|
||||||
|
ID: int(id),
|
||||||
|
Name: scope.Name,
|
||||||
|
Abbreviation: scope.Abbreviation,
|
||||||
|
},
|
||||||
|
DisplayName: owner.Name,
|
||||||
|
Members: []models.ScopeMember{
|
||||||
|
{
|
||||||
|
ID: owner.ID,
|
||||||
|
Name: owner.Name,
|
||||||
|
Owner: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Projects: []models.ProjectEntry{},
|
||||||
|
Stats: []models.Stat{},
|
||||||
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *scopeRepository) Update(ctx context.Context, scope models.ScopeEntry) error {
|
func (r *scopeRepository) Update(ctx context.Context, scope models.ScopeEntry) error {
|
||||||
//TODO implement me
|
return mysqlcore.New(r.db).UpdateScope(ctx, mysqlcore.UpdateScopeParams{
|
||||||
panic("implement me")
|
Name: scope.Name,
|
||||||
|
Abbreviation: scope.Abbreviation,
|
||||||
|
ID: scope.ID,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *scopeRepository) Delete(ctx context.Context, scope models.Scope) error {
|
func (r *scopeRepository) Delete(ctx context.Context, scope models.Scope) error {
|
||||||
//TODO implement me
|
tx, err := r.db.BeginTx(ctx, nil)
|
||||||
panic("implement me")
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer tx.Rollback()
|
||||||
|
|
||||||
|
q := mysqlcore.New(tx)
|
||||||
|
err = q.DeleteAllScopeMembers(ctx, scope.ID)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = q.DeleteScope(ctx, scope.ID)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return tx.Commit()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *scopeRepository) UpdateMember(ctx context.Context, scope models.Scope, member models.ScopeMember) (*models.Scope, error) {
|
func (r *scopeRepository) UpdateMember(ctx context.Context, scope models.Scope, member models.ScopeMember) (*models.Scope, error) {
|
||||||
//TODO implement me
|
err := mysqlcore.New(r.db).UpdateScopeMember(ctx, mysqlcore.UpdateScopeMemberParams{
|
||||||
panic("implement me")
|
ScopeID: scope.ID,
|
||||||
|
UserID: member.ID,
|
||||||
|
Name: member.Name,
|
||||||
|
Owner: member.Owner,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
found := false
|
||||||
|
scope.Members = append(scope.Members[:0:0], scope.Members...)
|
||||||
|
for i, member2 := range scope.Members {
|
||||||
|
if member2.ID == member.ID {
|
||||||
|
scope.Members[i] = member2
|
||||||
|
found = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !found {
|
||||||
|
scope.Members = append(scope.Members, member)
|
||||||
|
sort.Slice(scope.Members, func(i, j int) bool {
|
||||||
|
return scope.Members[i].Name < scope.Members[j].Name
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
return &scope, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *scopeRepository) DeleteMember(ctx context.Context, scope models.Scope, userID string) (*models.Scope, error) {
|
func (r *scopeRepository) DeleteMember(ctx context.Context, scope models.Scope, userID string) (*models.Scope, error) {
|
||||||
//TODO implement me
|
err := mysqlcore.New(r.db).DeleteScopeMember(ctx, mysqlcore.DeleteScopeMemberParams{
|
||||||
panic("implement me")
|
ScopeID: scope.ID,
|
||||||
|
UserID: userID,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
newMembers := make([]models.ScopeMember, 0, len(scope.Members)-1)
|
||||||
|
for _, member := range scope.Members {
|
||||||
|
if member.ID != userID {
|
||||||
|
newMembers = append(newMembers, member)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
scope.Members = newMembers
|
||||||
|
|
||||||
|
return &scope, nil
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user