/
dao.go
36 lines (30 loc) · 910 Bytes
/
dao.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package infrastructure
import (
"context"
"fmt"
"github.com/tellmeac/go-template/internal/infrastructure/ent"
"github.com/tellmeac/go-template/internal/infrastructure/ent/templates"
"github.com/tellmeac/go-template/internal/pkg/errors"
)
func NewDAO(client *ent.Client) DAO {
return DAO{client: client}
}
type DAO struct {
client *ent.Client
}
func (dao DAO) Get(ctx context.Context, target string) (string, error) {
template, err := dao.client.Templates.Query().Where(templates.Name(target)).Only(ctx)
switch {
case ent.IsNotFound(err):
return "", fmt.Errorf("user template not exists: %w", errors.ErrNotFound)
case err != nil:
return "", err
}
return template.Template, nil
}
func (dao DAO) Upsert(ctx context.Context, target string, desired string) error {
return dao.client.Templates.Create().
SetName(target).
SetTemplate(desired).
OnConflict().UpdateNewValues().Exec(ctx)
}