package dao import ( "context" "prompts-core/consts/public" "prompts-core/model/entity" "gitea.com/red-future/common/db/gfdb" ) var ComposeSession = &composeSessionDao{} type composeSessionDao struct{} func (d *composeSessionDao) Insert(ctx context.Context, m *entity.ComposeSession) (id int64, err error) { r, err := gfdb.DB(ctx).Model(ctx, public.TableNameComposeSession).Data(m).Insert() if err != nil { return 0, err } return r.LastInsertId() } func (d *composeSessionDao) Update(ctx context.Context, m *entity.ComposeSession) (rows int64, err error) { r, err := gfdb.DB(ctx).Model(ctx, public.TableNameComposeSession). Where(entity.ComposeSessionCol.Id, m.Id). Data(m). OmitEmpty(). Update() if err != nil { return 0, err } return r.RowsAffected() } func (d *composeSessionDao) List(ctx context.Context, page, size int, where map[string]any) (list []*entity.ComposeSession, total int, err error) { model := gfdb.DB(ctx).Model(ctx, public.TableNameComposeSession). Where("deleted_at IS NULL") // 动态拼接查询条件 for k, v := range where { model = model.Where(k, v) } // 查询总数 total, err = model.Count() if err != nil { return nil, 0, err } // 分页查询 err = model.Order("created_at DESC"). Page(page, size). Scan(&list) return } func (d *composeSessionDao) GetListBySessionId(ctx context.Context, sessionId string, limit int) ([]*entity.ComposeSession, error) { var sessions []*entity.ComposeSession err := gfdb.DB(ctx).Model(ctx, public.TableNameComposeSession). Where(entity.ComposeSessionCol.SessionId, sessionId). WhereNull(entity.ComposeSessionCol.DeletedAt). OrderDesc(entity.ComposeSessionCol.Id). Limit(limit). Scan(&sessions) if err != nil { return nil, err } // 反转成时间正序 for i, j := 0, len(sessions)-1; i < j; i, j = i+1, j-1 { sessions[i], sessions[j] = sessions[j], sessions[i] } return sessions, nil } func (d *composeSessionDao) GetById(ctx context.Context, Id int64) (m *entity.ComposeSession, err error) { r, err := gfdb.DB(ctx).Model(ctx, public.TableNameComposeSession). Where(entity.ComposeSessionCol.Id, Id). One() if err != nil { return nil, err } if r.IsEmpty() { return nil, nil } err = r.Struct(&m) return } func (d *composeSessionDao) GetBySessionId(ctx context.Context, sessionId string) (m *entity.ComposeSession, err error) { r, err := gfdb.DB(ctx).Model(ctx, public.TableNameComposeSession). Where(entity.ComposeSessionCol.SessionId, sessionId). One() if err != nil { return nil, err } if r.IsEmpty() { return nil, nil } err = r.Struct(&m) return } func (d *composeSessionDao) DeleteBySessionId(ctx context.Context, sessionId string) (rows int64, err error) { r, err := gfdb.DB(ctx).Model(ctx, public.TableNameComposeSession). Where(entity.ComposeSessionCol.SessionId, sessionId). Data(map[string]any{ entity.ComposeSessionCol.DeletedAt: "NOW()", }). Update() if err != nil { return 0, err } return r.RowsAffected() }