/* * Copyright 2026 Oleg Borodin */ package accoper import ( "context" "fmt" "mbase/pkg/descr" ) // GetAccount 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, operatorID string, params *GetAccountParams) (*GetAccountResult, error) { var err error res := &GetAccountResult{} if params.Username == "" && params.AccountID == "" { err := fmt.Errorf("Empty username and accountId parameter") return res, err } 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 } default: err := fmt.Errorf("Empty username and accountId parameter") return res, err } if accountDescr == nil { err := fmt.Errorf("Null account desriptor") return res, err } accountShort := &descr.AccountShort{ ID: accountDescr.ID, Username: accountDescr.Username, CreatedAt: accountDescr.CreatedAt, UpdatedAt: accountDescr.UpdatedAt, CreatedBy: accountDescr.CreatedBy, UpdatedBy: accountDescr.UpdatedBy, Disabled: accountDescr.Disabled, Grants: make([]descr.Grant, 0), } grantDescrs, err := oper.mdb.ListGrantsByAccountID(ctx, accountDescr.ID) if err != nil { return res, err } accountShort.Grants = grantDescrs res.Account = accountShort return res, err }