package repository_domain import ( "context" "online-order/ent" "online-order/ent/domain" "online-order/entity" ) type DomainClient struct { client *ent.Client } func NewDomainClient(client *ent.Client) *DomainClient { return &DomainClient{ client: client, } } // List all domains func (c *DomainClient) List() ([]*entity.DomainDisplay, error) { var u []*entity.DomainDisplay ctx := context.Background() err := c.client.Domain. Query(). Select(domain.FieldID, domain.FieldDomain, domain.FieldConfig, domain.FieldBusinessID, domain.FieldUserID, domain.FieldStatus, domain.FieldCreatedAt, domain.FieldUpdatedAt). Scan(ctx, &u) if err != nil { return nil, err } return u, nil } // Create a domain func (c *DomainClient) Create(p *entity.DomainCreateUpdate) error { ctx := context.Background() resp, err := c.client.Domain. Create(). SetDomain(p.Domain). SetStatus(p.Status). SetBusinessID(p.BusinessID). SetUserID(p.UserID). SetStatus(p.Status). Save(ctx) if err != nil { return err } p.ID = resp.ID p.CreatedAt = resp.CreatedAt p.UpdatedAt = resp.UpdatedAt return nil } func (c *DomainClient) GetByID(id int) (*entity.DomainDisplay, error) { var p entity.DomainDisplay ctx := context.Background() resp := c.client.Domain. Query(). Where(domain.ID(id)). AllX(ctx) if len(resp) > 0 { p.ID = resp[0].ID p.Domain = resp[0].Domain p.Status = resp[0].Status p.CreatedAt = resp[0].CreatedAt p.UpdatedAt = resp[0].UpdatedAt } else { return nil, entity.ErrNotFound } return &p, nil } func (c *DomainClient) GetByDomain(d string) (*entity.DomainDisplay, error) { var p entity.DomainDisplay ctx := context.Background() resp := c.client.Domain. Query(). Where(domain.DomainEQ(d)). AllX(ctx) if len(resp) > 0 { p.ID = resp[0].ID p.Domain = resp[0].Domain p.Status = resp[0].Status p.CreatedAt = resp[0].CreatedAt p.UpdatedAt = resp[0].UpdatedAt } else { return nil, entity.ErrNotFound } return &p, nil } // Update domain information, except password func (c *DomainClient) Update(p *entity.DomainCreateUpdate) error { ctx := context.Background() _, err := c.client.Domain.UpdateOneID(p.ID). SetDomain(p.Domain). SetConfig(p.Config). SetStatus(p.Status). Save(ctx) if err != nil { return err } return nil } // Update user information, except password func (c *DomainClient) Delete(id int) error { ctx := context.Background() err := c.client.Domain.DeleteOneID(id). Exec(ctx) return err }