initial commit example
This commit is contained in:
112
model/account.go
Normal file
112
model/account.go
Normal file
@@ -0,0 +1,112 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
uuid "github.com/gofrs/uuid"
|
||||
)
|
||||
|
||||
// Account example
|
||||
type Account struct {
|
||||
ID int `json:"id" example:"1" format:"int64"`
|
||||
Name string `json:"name" example:"account name"`
|
||||
UUID uuid.UUID `json:"uuid" example:"550e8400-e29b-41d4-a716-446655440000" format:"uuid"`
|
||||
}
|
||||
|
||||
// example
|
||||
var (
|
||||
ErrNameInvalid = errors.New("name is empty")
|
||||
)
|
||||
|
||||
// AddAccount example
|
||||
type AddAccount struct {
|
||||
Name string `json:"name" example:"account name"`
|
||||
}
|
||||
|
||||
// Validation example
|
||||
func (a AddAccount) Validation() error {
|
||||
switch {
|
||||
case len(a.Name) == 0:
|
||||
return ErrNameInvalid
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
// UpdateAccount example
|
||||
type UpdateAccount struct {
|
||||
Name string `json:"name" example:"account name"`
|
||||
}
|
||||
|
||||
// Validation example
|
||||
func (a UpdateAccount) Validation() error {
|
||||
switch {
|
||||
case len(a.Name) == 0:
|
||||
return ErrNameInvalid
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
// AccountsAll example
|
||||
func AccountsAll(q string) ([]Account, error) {
|
||||
if q == "" {
|
||||
return accounts, nil
|
||||
}
|
||||
as := []Account{}
|
||||
for k, v := range accounts {
|
||||
if q == v.Name {
|
||||
as = append(as, accounts[k])
|
||||
}
|
||||
}
|
||||
return as, nil
|
||||
}
|
||||
|
||||
// AccountOne example
|
||||
func AccountOne(id int) (Account, error) {
|
||||
for _, v := range accounts {
|
||||
if id == v.ID {
|
||||
return v, nil
|
||||
}
|
||||
}
|
||||
return Account{}, ErrNoRow
|
||||
}
|
||||
|
||||
// Insert example
|
||||
func (a Account) Insert() (int, error) {
|
||||
accountMaxID++
|
||||
a.ID = accountMaxID
|
||||
a.Name = fmt.Sprintf("account_%d", accountMaxID)
|
||||
accounts = append(accounts, a)
|
||||
return accountMaxID, nil
|
||||
}
|
||||
|
||||
// Delete example
|
||||
func Delete(id int) error {
|
||||
for k, v := range accounts {
|
||||
if id == v.ID {
|
||||
accounts = append(accounts[:k], accounts[k+1:]...)
|
||||
return nil
|
||||
}
|
||||
}
|
||||
return fmt.Errorf("account id=%d is not found", id)
|
||||
}
|
||||
|
||||
// Update example
|
||||
func (a Account) Update() error {
|
||||
for k, v := range accounts {
|
||||
if a.ID == v.ID {
|
||||
accounts[k].Name = a.Name
|
||||
return nil
|
||||
}
|
||||
}
|
||||
return fmt.Errorf("account id=%d is not found", a.ID)
|
||||
}
|
||||
|
||||
var accountMaxID = 3
|
||||
var accounts = []Account{
|
||||
{ID: 1, Name: "account_1"},
|
||||
{ID: 2, Name: "account_2"},
|
||||
{ID: 3, Name: "account_3"},
|
||||
}
|
||||
Reference in New Issue
Block a user