/
time_range.go
55 lines (45 loc) · 1.25 KB
/
time_range.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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package repo
import (
"context"
"github.com/uptrace/bun"
"exusiai.dev/backend-next/internal/model"
"exusiai.dev/backend-next/internal/repo/selector"
)
type TimeRange struct {
db *bun.DB
sel selector.S[model.TimeRange]
}
func NewTimeRange(db *bun.DB) *TimeRange {
return &TimeRange{db: db, sel: selector.New[model.TimeRange](db)}
}
func (r *TimeRange) GetTimeRangesByServer(ctx context.Context, server string) ([]*model.TimeRange, error) {
var timeRanges []*model.TimeRange
if err := r.db.NewSelect().
Model(&timeRanges).
Where("tr.server = ?", server).
Scan(ctx); err != nil {
return nil, err
}
return timeRanges, nil
}
func (r *TimeRange) GetTimeRangeById(ctx context.Context, rangeId int) (*model.TimeRange, error) {
var timeRange model.TimeRange
if err := r.db.NewSelect().
Model(&timeRange).
Where("tr.range_id = ?", rangeId).
Scan(ctx); err != nil {
return nil, err
}
return &timeRange, nil
}
func (c *TimeRange) GetTimeRangeByServerAndName(ctx context.Context, server string, name string) (*model.TimeRange, error) {
var timeRange model.TimeRange
if err := c.db.NewSelect().
Model(&timeRange).
Where("tr.server = ?", server).
Where("tr.name = ?", name).
Scan(ctx); err != nil {
return nil, err
}
return &timeRange, nil
}