online-order/command/generateCrud/repository.text

98 lines
1.9 KiB
Plaintext
Raw Normal View History

2023-11-17 20:16:02 +00:00
package repository_{name}
import (
"context"
"online-order/ent"
"online-order/ent/{name}"
"online-order/entity"
)
type {Name}Repository struct {
client *ent.Client
activeBusiness *entity.ActiveBusiness
}
func New{Name}Repository(client *ent.Client, activeBusiness *entity.ActiveBusiness) *{Name}Repository {
return &{Name}Repository{
client: client,
activeBusiness: activeBusiness,
}
}
// List all {name}s
func (c *{Name}Repository) List() ([]*entity.{Name}Display, error) {
var u []*entity.{Name}Display
ctx := context.Background()
err := c.client.{Name}.
Query().
Where({name}.BusinessID(c.activeBusiness.BusinessID)).
Select({name}.FieldID, {name}.FieldCreatedAt, {name}.FieldUpdatedAt).
Scan(ctx, &u)
if err != nil {
return nil, err
}
return u, nil
}
// Create a {name}
func (c *{Name}Repository) Create(p *entity.{Name}CreateUpdate) error {
ctx := context.Background()
resp, err := c.client.{Name}.
Create().
SetBusinessID(c.activeBusiness.BusinessID).
SetUserID(p.UserID).
Save(ctx)
if err != nil {
return err
}
return nil
}
func (c *{Name}Repository) GetByID(id int) (*entity.{Name}Display, error) {
var p entity.{Name}Display
ctx := context.Background()
resp := c.client.{Name}.
Query().
Where({name}.BusinessID(c.activeBusiness.BusinessID)).
Where({name}.ID(id)).
AllX(ctx)
if len(resp) > 0 {
p.ID = resp[0].ID
p.CreatedAt = resp[0].CreatedAt
p.UpdatedAt = resp[0].UpdatedAt
} else {
return nil, entity.ErrNotFound
}
return &p, nil
}
// Update {name} information
func (c *{Name}Repository) Update(p *entity.{Name}CreateUpdate) error {
ctx := context.Background()
_, err := c.client.{Name}.UpdateOneID(p.ID).
Save(ctx)
if err != nil {
return err
}
return nil
}
// Update user information, except password
func (c *{Name}Repository) Delete(id int) error {
ctx := context.Background()
err := c.client.{Name}.
DeleteOneID(id).
Exec(ctx)
return err
}