125 lines
2.5 KiB
Go
125 lines
2.5 KiB
Go
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
|
|
}
|