working commit
This commit is contained in:
+57
-57
@@ -77,6 +77,63 @@ func (oper *Operator) CreateAccount(ctx context.Context, params *CreateAccountPa
|
||||
return res, err
|
||||
}
|
||||
|
||||
type GetAccountParams struct {
|
||||
Username string `json:"username"`
|
||||
AccountID string `json:"accountId"`
|
||||
}
|
||||
type GetAccountResult struct {
|
||||
Account *descr.AccountShort `json:"account"`
|
||||
}
|
||||
|
||||
func (oper *Operator) GetAccount(ctx context.Context, params *GetAccountParams) (*GetAccountResult, error) {
|
||||
var err error
|
||||
res := &GetAccountResult{}
|
||||
|
||||
var accountDescr *descr.Account
|
||||
var accountExists bool
|
||||
switch {
|
||||
case params.AccountID != "":
|
||||
accountExists, accountDescr, err = oper.mdb.GetAccountByID(ctx, params.AccountID)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
if !accountExists {
|
||||
err := fmt.Errorf("Account with ID %s dont exists", params.AccountID)
|
||||
return res, err
|
||||
}
|
||||
case params.Username != "":
|
||||
accountExists, accountDescr, err = oper.mdb.GetAccountByUsername(ctx, params.Username)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
if !accountExists {
|
||||
err := fmt.Errorf("Account with name %s dont exists", params.Username)
|
||||
return res, err
|
||||
}
|
||||
}
|
||||
accountShort := &descr.AccountShort{
|
||||
Username: accountDescr.Username,
|
||||
Disabled: accountDescr.Disabled,
|
||||
CreatedAt: accountDescr.CreatedAt,
|
||||
UpdatedAt: accountDescr.UpdatedAt,
|
||||
Grants: make([]descr.GrantShort, 0),
|
||||
}
|
||||
grantDescrs, err := oper.mdb.ListGrantsByAccountID(ctx, accountDescr.ID)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
for _, grantDescrs := range grantDescrs {
|
||||
grantShorts := descr.GrantShort{
|
||||
Operation: grantDescrs.Operation,
|
||||
CreatedAt: grantDescrs.CreatedAt,
|
||||
}
|
||||
accountShort.Grants = append(accountShort.Grants, grantShorts)
|
||||
}
|
||||
|
||||
res.Account = accountShort
|
||||
return res, err
|
||||
}
|
||||
|
||||
type UpdateAccountParams struct {
|
||||
Username string `json:"username"`
|
||||
AccountID string `json:"accountId"`
|
||||
@@ -216,60 +273,3 @@ func (oper *Operator) ListAccounts(ctx context.Context, params *ListAccountsPara
|
||||
}
|
||||
return res, err
|
||||
}
|
||||
|
||||
type GetAccountParams struct {
|
||||
Username string `json:"username"`
|
||||
AccountID string `json:"accountId"`
|
||||
}
|
||||
type GetAccountResult struct {
|
||||
Account *descr.AccountShort `json:"account"`
|
||||
}
|
||||
|
||||
func (oper *Operator) GetAccount(ctx context.Context, params *GetAccountParams) (*GetAccountResult, error) {
|
||||
var err error
|
||||
res := &GetAccountResult{}
|
||||
|
||||
var accountDescr *descr.Account
|
||||
var accountExists bool
|
||||
switch {
|
||||
case params.AccountID != "":
|
||||
accountExists, accountDescr, err = oper.mdb.GetAccountByID(ctx, params.AccountID)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
if !accountExists {
|
||||
err := fmt.Errorf("Account with ID %s dont exists", params.AccountID)
|
||||
return res, err
|
||||
}
|
||||
case params.Username != "":
|
||||
accountExists, accountDescr, err = oper.mdb.GetAccountByUsername(ctx, params.Username)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
if !accountExists {
|
||||
err := fmt.Errorf("Account with name %s dont exists", params.Username)
|
||||
return res, err
|
||||
}
|
||||
}
|
||||
accountShort := &descr.AccountShort{
|
||||
Username: accountDescr.Username,
|
||||
Disabled: accountDescr.Disabled,
|
||||
CreatedAt: accountDescr.CreatedAt,
|
||||
UpdatedAt: accountDescr.UpdatedAt,
|
||||
Grants: make([]descr.GrantShort, 0),
|
||||
}
|
||||
grantDescrs, err := oper.mdb.ListGrantsByAccountID(ctx, accountDescr.ID)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
for _, grantDescrs := range grantDescrs {
|
||||
grantShorts := descr.GrantShort{
|
||||
Operation: grantDescrs.Operation,
|
||||
CreatedAt: grantDescrs.CreatedAt,
|
||||
}
|
||||
accountShort.Grants = append(accountShort.Grants, grantShorts)
|
||||
}
|
||||
|
||||
res.Account = accountShort
|
||||
return res, err
|
||||
}
|
||||
|
||||
+10
-10
@@ -99,17 +99,17 @@ func (svc *Service) Build() error {
|
||||
svc.rout.Get(`/v2/{name}/tags/list`, svc.hand.GetTags)
|
||||
svc.rout.Get(`/v2/{name}/referrers/{digest}`, svc.hand.GetReferer)
|
||||
|
||||
svc.rout.Post(`/v3/account/create`, svc.hand.CreateAccount)
|
||||
svc.rout.Post(`/v3/account/get`, svc.hand.GetAccount)
|
||||
svc.rout.Post(`/v3/account/update`, svc.hand.UpdateAccount)
|
||||
svc.rout.Post(`/v3/account/delete`, svc.hand.DeleteAccount)
|
||||
svc.rout.Post(`/v3/accounts/list`, svc.hand.ListAccounts)
|
||||
svc.rout.Post(`/v3/api/account/create`, svc.hand.CreateAccount)
|
||||
svc.rout.Post(`/v3/api/account/get`, svc.hand.GetAccount)
|
||||
svc.rout.Post(`/v3/api/account/update`, svc.hand.UpdateAccount)
|
||||
svc.rout.Post(`/v3/api/account/delete`, svc.hand.DeleteAccount)
|
||||
svc.rout.Post(`/v3/api/accounts/list`, svc.hand.ListAccounts)
|
||||
|
||||
svc.rout.Post(`/v3/grant/create`, svc.hand.CreateGrant)
|
||||
svc.rout.Post(`/v3/grant/get`, svc.hand.GetGrant)
|
||||
svc.rout.Post(`/v3/grant/update`, svc.hand.UpdateGrant)
|
||||
svc.rout.Post(`/v3/grant/delete`, svc.hand.DeleteGrant)
|
||||
svc.rout.Post(`/v3/grants/list`, svc.hand.ListGrants)
|
||||
svc.rout.Post(`/v3/api/grant/create`, svc.hand.CreateGrant)
|
||||
svc.rout.Post(`/v3/api/grant/get`, svc.hand.GetGrant)
|
||||
svc.rout.Post(`/v3/api/grant/update`, svc.hand.UpdateGrant)
|
||||
svc.rout.Post(`/v3/api/grant/delete`, svc.hand.DeleteGrant)
|
||||
svc.rout.Post(`/v3/api/grants/list`, svc.hand.ListGrants)
|
||||
|
||||
svc.rout.NotFound(svc.hand.NotFound)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user