online-order/repository/domain/domain.go

125 lines
2.5 KiB
Go
Raw Normal View History

2023-10-29 23:33:40 +00:00
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
}