Export

/app/lib/svc/service.go (3.0 KB)

 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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package svc

import (
"context"

"github.com/jmoiron/sqlx"

"{{{ .Package }}}/app/lib/filter"{{{ if .HasModule "search" }}}
"{{{ .Package }}}/app/lib/search/result"{{{ end }}}
"{{{ .Package }}}/app/util"
)

type ServiceBase[Mdl Model, Seq any] interface {
ListSQL(ctx context.Context, tx *sqlx.Tx, sql string, logger util.Logger, values ...any) (Seq, error)
ListWhere(ctx context.Context, tx *sqlx.Tx, where string, params *filter.Params, logger util.Logger, values ...any) (Seq, error)
Random(ctx context.Context, tx *sqlx.Tx, logger util.Logger) (Mdl, error)
Create(ctx context.Context, tx *sqlx.Tx, logger util.Logger, models ...Mdl) error
CreateChunked(ctx context.Context, tx *sqlx.Tx, chunkSize int, progress *util.Progress, logger util.Logger, models ...Mdl) error
Update(ctx context.Context, tx *sqlx.Tx, model Mdl, logger util.Logger) error
Save(ctx context.Context, tx *sqlx.Tx, logger util.Logger, models ...Mdl) error
SaveChunked(ctx context.Context, tx *sqlx.Tx, chunkSize int, progress *util.Progress, logger util.Logger, models ...Mdl) error
DeleteWhere(ctx context.Context, tx *sqlx.Tx, wc string, expected int, logger util.Logger, values ...any) error
}

type Service[Mdl Model, Seq any] interface {
ServiceBase[Mdl, Seq]
Count(ctx context.Context, tx *sqlx.Tx, whereClause string, logger util.Logger, args ...any) (int, error)
List(ctx context.Context, tx *sqlx.Tx, params *filter.Params, logger util.Logger) (Seq, error)
}{{{ if .HasModule "search" }}}

type ServiceSearch[Seq any] interface {
Search(ctx context.Context, query string, tx *sqlx.Tx, params *filter.Params, logger util.Logger) (Seq, error)
}

type ServiceSearchEntries interface {
SearchEntries(ctx context.Context, query string, tx *sqlx.Tx, params *filter.Params, logger util.Logger) (result.Results, error)
}{{{ end }}}

type ServiceID[Mdl Model, Seq any, ID any] interface {
Service[Mdl, Seq]
Get(ctx context.Context, tx *sqlx.Tx, id ID, logger util.Logger) (Mdl, error)
GetMultiple(ctx context.Context, tx *sqlx.Tx, params *filter.Params, logger util.Logger, ids ...ID) (Seq, error)
}

type ServiceSoftDelete[Mdl Model, Seq any] interface {
ServiceBase[Mdl, Seq]
Count(ctx context.Context, tx *sqlx.Tx, whereClause string, includeDeleted bool, logger util.Logger, args ...any) (int, error)
List(ctx context.Context, tx *sqlx.Tx, params *filter.Params, includeDeleted bool, logger util.Logger) (Seq, error)
}

type ServiceSoftDeleteID[Mdl Model, Seq any, ID any] interface {
ServiceSoftDelete[Mdl, Seq]
Get(ctx context.Context, tx *sqlx.Tx, id ID, includeDeleted bool, logger util.Logger) (Mdl, error)
GetMultiple(ctx context.Context, tx *sqlx.Tx, params *filter.Params, includeDeleted bool, logger util.Logger, ids ...ID) (Seq, error)
}

type ServiceEvents[Mdl Model, ID any] interface {
Create(ctx context.Context, tx *sqlx.Tx, logger util.Logger, models ...Mdl) error
Save(ctx context.Context, tx *sqlx.Tx, logger util.Logger, models ...Mdl) error
Delete(ctx context.Context, tx *sqlx.Tx, logger util.Logger, ids ...ID) error
}