mirror of
https://github.com/gowvp/gb28181.git
synced 2026-04-22 15:07:10 +08:00
104 lines
3.1 KiB
Go
Executable File
104 lines
3.1 KiB
Go
Executable File
// Code generated by godddx, DO AVOID EDIT.
|
|
package event
|
|
|
|
import (
|
|
"context"
|
|
"log/slog"
|
|
|
|
"github.com/ixugo/goddd/pkg/orm"
|
|
"github.com/ixugo/goddd/pkg/reason"
|
|
"github.com/ixugo/goddd/pkg/web"
|
|
"github.com/jinzhu/copier"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
// EventStorer Instantiation interface
|
|
type EventStorer interface {
|
|
Find(context.Context, *[]*Event, orm.Pager, ...orm.QueryOption) (int64, error)
|
|
Get(context.Context, *Event, ...orm.QueryOption) error
|
|
Add(context.Context, *Event) error
|
|
Edit(context.Context, *Event, func(*Event), ...orm.QueryOption) error
|
|
Del(context.Context, *Event, ...orm.QueryOption) error
|
|
Count(context.Context, ...orm.QueryOption) (int64, error)
|
|
|
|
Session(context.Context, ...func(*gorm.DB) error) error
|
|
EditWithSession(*gorm.DB, *Event, func(b *Event) error, ...orm.QueryOption) error
|
|
}
|
|
|
|
// FindEvents 分页查询事件列表,支持按 CID 和时间范围筛选
|
|
func (c Core) FindEvents(ctx context.Context, in *FindEventInput) ([]*Event, int64, error) {
|
|
query := orm.NewQuery(4).OrderBy("started_at DESC")
|
|
|
|
if in.CID != "" {
|
|
query.Where("cid = ?", in.CID)
|
|
}
|
|
if in.DID != "" {
|
|
query.Where("did = ?", in.DID)
|
|
}
|
|
if in.Label != "" {
|
|
query.Where("label = ?", in.Label)
|
|
}
|
|
if in.StartMs > 0 && in.EndMs > 0 {
|
|
query.Where("started_at >= ? AND started_at <= ?", in.StartAt(), in.EndAt())
|
|
}
|
|
|
|
items := make([]*Event, 0, in.Limit())
|
|
total, err := c.store.Event().Find(ctx, &items, in, query.Encode()...)
|
|
if err != nil {
|
|
return nil, 0, reason.ErrDB.Withf(`Find in[%+v] err[%s]`, in, err.Error())
|
|
}
|
|
for _, item := range items {
|
|
if ctx, ok := ctx.(web.Context); ok {
|
|
item.ImagePath = ctx.BaseURLJoin("/events/image/", item.ImagePath)
|
|
}
|
|
}
|
|
return items, total, nil
|
|
}
|
|
|
|
// GetEvent 根据 ID 查询单个事件
|
|
func (c Core) GetEvent(ctx context.Context, id int64) (*Event, error) {
|
|
out := Event{ID: id}
|
|
if err := c.store.Event().Get(ctx, &out, orm.Where("id=?", id)); err != nil {
|
|
if orm.IsErrRecordNotFound(err) {
|
|
return nil, reason.ErrNotFound.Withf(`Get id[%v] err[%s]`, id, err.Error())
|
|
}
|
|
return nil, reason.ErrDB.Withf(`Get id[%v] err[%s]`, id, err.Error())
|
|
}
|
|
return &out, nil
|
|
}
|
|
|
|
// AddEvent 新增事件记录
|
|
func (c Core) AddEvent(ctx context.Context, in *AddEventInput) (*Event, error) {
|
|
var out Event
|
|
if err := copier.Copy(&out, in); err != nil {
|
|
slog.ErrorContext(ctx, "Copy", "err", err)
|
|
}
|
|
|
|
if err := c.store.Event().Add(ctx, &out); err != nil {
|
|
return nil, reason.ErrDB.Withf(`Add err[%s]`, err.Error())
|
|
}
|
|
return &out, nil
|
|
}
|
|
|
|
// EditEvent 更新事件信息
|
|
func (c Core) EditEvent(ctx context.Context, in *EditEventInput, id int64) (*Event, error) {
|
|
var out Event
|
|
if err := c.store.Event().Edit(ctx, &out, func(b *Event) {
|
|
if !in.EndedAt.IsZero() {
|
|
b.EndedAt = in.EndedAt
|
|
}
|
|
}, orm.Where("id=?", id)); err != nil {
|
|
return nil, reason.ErrDB.Withf(`Edit id[%v] err[%s]`, id, err.Error())
|
|
}
|
|
return &out, nil
|
|
}
|
|
|
|
// DelEvent 删除事件
|
|
func (c Core) DelEvent(ctx context.Context, id int64) (*Event, error) {
|
|
var out Event
|
|
if err := c.store.Event().Del(ctx, &out, orm.Where("id=?", id)); err != nil {
|
|
return nil, reason.ErrDB.Withf(`Del id[%v] err[%s]`, id, err.Error())
|
|
}
|
|
return &out, nil
|
|
}
|