feat: manually mirror opencoze's code from bytedance

Change-Id: I09a73aadda978ad9511264a756b2ce51f5761adf
This commit is contained in:
fanlv
2025-07-20 17:36:12 +08:00
commit 890153324f
14811 changed files with 1923430 additions and 0 deletions

View File

@@ -0,0 +1,29 @@
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
package model
import (
"gorm.io/gorm"
)
const TableNameSpace = "space"
// Space Space Table
type Space struct {
ID int64 `gorm:"column:id;primaryKey;autoIncrement:true;comment:Primary Key ID, Space ID" json:"id"` // Primary Key ID, Space ID
OwnerID int64 `gorm:"column:owner_id;not null;comment:Owner ID" json:"owner_id"` // Owner ID
Name string `gorm:"column:name;not null;comment:Space Name" json:"name"` // Space Name
Description string `gorm:"column:description;not null;comment:Space Description" json:"description"` // Space Description
IconURI string `gorm:"column:icon_uri;not null;comment:Icon URI" json:"icon_uri"` // Icon URI
CreatorID int64 `gorm:"column:creator_id;not null;comment:Creator ID" json:"creator_id"` // Creator ID
CreatedAt int64 `gorm:"column:created_at;not null;autoCreateTime:milli;comment:Creation Time (Milliseconds)" json:"created_at"` // Creation Time (Milliseconds)
UpdatedAt int64 `gorm:"column:updated_at;not null;autoUpdateTime:milli;comment:Update Time (Milliseconds)" json:"updated_at"` // Update Time (Milliseconds)
DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;comment:Deletion Time (Milliseconds)" json:"deleted_at"` // Deletion Time (Milliseconds)
}
// TableName Space's table name
func (*Space) TableName() string {
return TableNameSpace
}

View File

@@ -0,0 +1,22 @@
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
package model
const TableNameSpaceUser = "space_user"
// SpaceUser Space Member Table
type SpaceUser struct {
ID int64 `gorm:"column:id;primaryKey;autoIncrement:true;comment:Primary Key ID, Auto Increment" json:"id"` // Primary Key ID, Auto Increment
SpaceID int64 `gorm:"column:space_id;not null;comment:Space ID" json:"space_id"` // Space ID
UserID int64 `gorm:"column:user_id;not null;comment:User ID" json:"user_id"` // User ID
RoleType int32 `gorm:"column:role_type;not null;default:3;comment:Role Type: 1.owner 2.admin 3.member" json:"role_type"` // Role Type: 1.owner 2.admin 3.member
CreatedAt int64 `gorm:"column:created_at;not null;autoCreateTime:milli;comment:Creation Time (Milliseconds)" json:"created_at"` // Creation Time (Milliseconds)
UpdatedAt int64 `gorm:"column:updated_at;not null;autoUpdateTime:milli;comment:Update Time (Milliseconds)" json:"updated_at"` // Update Time (Milliseconds)
}
// TableName SpaceUser's table name
func (*SpaceUser) TableName() string {
return TableNameSpaceUser
}

View File

@@ -0,0 +1,33 @@
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
package model
import (
"gorm.io/gorm"
)
const TableNameUser = "user"
// User User Table
type User struct {
ID int64 `gorm:"column:id;primaryKey;autoIncrement:true;comment:Primary Key ID" json:"id"` // Primary Key ID
Name string `gorm:"column:name;not null;comment:User Nickname" json:"name"` // User Nickname
UniqueName string `gorm:"column:unique_name;not null;comment:User Unique Name" json:"unique_name"` // User Unique Name
Email string `gorm:"column:email;not null;comment:Email" json:"email"` // Email
Password string `gorm:"column:password;not null;comment:Password (Encrypted)" json:"password"` // Password (Encrypted)
Description string `gorm:"column:description;not null;comment:User Description" json:"description"` // User Description
IconURI string `gorm:"column:icon_uri;not null;comment:Avatar URI" json:"icon_uri"` // Avatar URI
UserVerified bool `gorm:"column:user_verified;not null;comment:User Verification Status" json:"user_verified"` // User Verification Status
Locale string `gorm:"column:locale;not null;comment:Locale" json:"locale"` // Locale
SessionKey string `gorm:"column:session_key;not null;comment:Session Key" json:"session_key"` // Session Key
CreatedAt int64 `gorm:"column:created_at;not null;autoCreateTime:milli;comment:Creation Time (Milliseconds)" json:"created_at"` // Creation Time (Milliseconds)
UpdatedAt int64 `gorm:"column:updated_at;not null;autoUpdateTime:milli;comment:Update Time (Milliseconds)" json:"updated_at"` // Update Time (Milliseconds)
DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;comment:Deletion Time (Milliseconds)" json:"deleted_at"` // Deletion Time (Milliseconds)
}
// TableName User's table name
func (*User) TableName() string {
return TableNameUser
}

View File

@@ -0,0 +1,119 @@
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
package query
import (
"context"
"database/sql"
"gorm.io/gorm"
"gorm.io/gen"
"gorm.io/plugin/dbresolver"
)
var (
Q = new(Query)
Space *space
SpaceUser *spaceUser
User *user
)
func SetDefault(db *gorm.DB, opts ...gen.DOOption) {
*Q = *Use(db, opts...)
Space = &Q.Space
SpaceUser = &Q.SpaceUser
User = &Q.User
}
func Use(db *gorm.DB, opts ...gen.DOOption) *Query {
return &Query{
db: db,
Space: newSpace(db, opts...),
SpaceUser: newSpaceUser(db, opts...),
User: newUser(db, opts...),
}
}
type Query struct {
db *gorm.DB
Space space
SpaceUser spaceUser
User user
}
func (q *Query) Available() bool { return q.db != nil }
func (q *Query) clone(db *gorm.DB) *Query {
return &Query{
db: db,
Space: q.Space.clone(db),
SpaceUser: q.SpaceUser.clone(db),
User: q.User.clone(db),
}
}
func (q *Query) ReadDB() *Query {
return q.ReplaceDB(q.db.Clauses(dbresolver.Read))
}
func (q *Query) WriteDB() *Query {
return q.ReplaceDB(q.db.Clauses(dbresolver.Write))
}
func (q *Query) ReplaceDB(db *gorm.DB) *Query {
return &Query{
db: db,
Space: q.Space.replaceDB(db),
SpaceUser: q.SpaceUser.replaceDB(db),
User: q.User.replaceDB(db),
}
}
type queryCtx struct {
Space ISpaceDo
SpaceUser ISpaceUserDo
User IUserDo
}
func (q *Query) WithContext(ctx context.Context) *queryCtx {
return &queryCtx{
Space: q.Space.WithContext(ctx),
SpaceUser: q.SpaceUser.WithContext(ctx),
User: q.User.WithContext(ctx),
}
}
func (q *Query) Transaction(fc func(tx *Query) error, opts ...*sql.TxOptions) error {
return q.db.Transaction(func(tx *gorm.DB) error { return fc(q.clone(tx)) }, opts...)
}
func (q *Query) Begin(opts ...*sql.TxOptions) *QueryTx {
tx := q.db.Begin(opts...)
return &QueryTx{Query: q.clone(tx), Error: tx.Error}
}
type QueryTx struct {
*Query
Error error
}
func (q *QueryTx) Commit() error {
return q.db.Commit().Error
}
func (q *QueryTx) Rollback() error {
return q.db.Rollback().Error
}
func (q *QueryTx) SavePoint(name string) error {
return q.db.SavePoint(name).Error
}
func (q *QueryTx) RollbackTo(name string) error {
return q.db.RollbackTo(name).Error
}

View File

@@ -0,0 +1,413 @@
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
package query
import (
"context"
"gorm.io/gorm"
"gorm.io/gorm/clause"
"gorm.io/gorm/schema"
"gorm.io/gen"
"gorm.io/gen/field"
"gorm.io/plugin/dbresolver"
"github.com/coze-dev/coze-studio/backend/domain/user/internal/dal/model"
)
func newSpace(db *gorm.DB, opts ...gen.DOOption) space {
_space := space{}
_space.spaceDo.UseDB(db, opts...)
_space.spaceDo.UseModel(&model.Space{})
tableName := _space.spaceDo.TableName()
_space.ALL = field.NewAsterisk(tableName)
_space.ID = field.NewInt64(tableName, "id")
_space.OwnerID = field.NewInt64(tableName, "owner_id")
_space.Name = field.NewString(tableName, "name")
_space.Description = field.NewString(tableName, "description")
_space.IconURI = field.NewString(tableName, "icon_uri")
_space.CreatorID = field.NewInt64(tableName, "creator_id")
_space.CreatedAt = field.NewInt64(tableName, "created_at")
_space.UpdatedAt = field.NewInt64(tableName, "updated_at")
_space.DeletedAt = field.NewField(tableName, "deleted_at")
_space.fillFieldMap()
return _space
}
// space Space Table
type space struct {
spaceDo
ALL field.Asterisk
ID field.Int64 // Primary Key ID, Space ID
OwnerID field.Int64 // Owner ID
Name field.String // Space Name
Description field.String // Space Description
IconURI field.String // Icon URI
CreatorID field.Int64 // Creator ID
CreatedAt field.Int64 // Creation Time (Milliseconds)
UpdatedAt field.Int64 // Update Time (Milliseconds)
DeletedAt field.Field // Deletion Time (Milliseconds)
fieldMap map[string]field.Expr
}
func (s space) Table(newTableName string) *space {
s.spaceDo.UseTable(newTableName)
return s.updateTableName(newTableName)
}
func (s space) As(alias string) *space {
s.spaceDo.DO = *(s.spaceDo.As(alias).(*gen.DO))
return s.updateTableName(alias)
}
func (s *space) updateTableName(table string) *space {
s.ALL = field.NewAsterisk(table)
s.ID = field.NewInt64(table, "id")
s.OwnerID = field.NewInt64(table, "owner_id")
s.Name = field.NewString(table, "name")
s.Description = field.NewString(table, "description")
s.IconURI = field.NewString(table, "icon_uri")
s.CreatorID = field.NewInt64(table, "creator_id")
s.CreatedAt = field.NewInt64(table, "created_at")
s.UpdatedAt = field.NewInt64(table, "updated_at")
s.DeletedAt = field.NewField(table, "deleted_at")
s.fillFieldMap()
return s
}
func (s *space) GetFieldByName(fieldName string) (field.OrderExpr, bool) {
_f, ok := s.fieldMap[fieldName]
if !ok || _f == nil {
return nil, false
}
_oe, ok := _f.(field.OrderExpr)
return _oe, ok
}
func (s *space) fillFieldMap() {
s.fieldMap = make(map[string]field.Expr, 9)
s.fieldMap["id"] = s.ID
s.fieldMap["owner_id"] = s.OwnerID
s.fieldMap["name"] = s.Name
s.fieldMap["description"] = s.Description
s.fieldMap["icon_uri"] = s.IconURI
s.fieldMap["creator_id"] = s.CreatorID
s.fieldMap["created_at"] = s.CreatedAt
s.fieldMap["updated_at"] = s.UpdatedAt
s.fieldMap["deleted_at"] = s.DeletedAt
}
func (s space) clone(db *gorm.DB) space {
s.spaceDo.ReplaceConnPool(db.Statement.ConnPool)
return s
}
func (s space) replaceDB(db *gorm.DB) space {
s.spaceDo.ReplaceDB(db)
return s
}
type spaceDo struct{ gen.DO }
type ISpaceDo interface {
gen.SubQuery
Debug() ISpaceDo
WithContext(ctx context.Context) ISpaceDo
WithResult(fc func(tx gen.Dao)) gen.ResultInfo
ReplaceDB(db *gorm.DB)
ReadDB() ISpaceDo
WriteDB() ISpaceDo
As(alias string) gen.Dao
Session(config *gorm.Session) ISpaceDo
Columns(cols ...field.Expr) gen.Columns
Clauses(conds ...clause.Expression) ISpaceDo
Not(conds ...gen.Condition) ISpaceDo
Or(conds ...gen.Condition) ISpaceDo
Select(conds ...field.Expr) ISpaceDo
Where(conds ...gen.Condition) ISpaceDo
Order(conds ...field.Expr) ISpaceDo
Distinct(cols ...field.Expr) ISpaceDo
Omit(cols ...field.Expr) ISpaceDo
Join(table schema.Tabler, on ...field.Expr) ISpaceDo
LeftJoin(table schema.Tabler, on ...field.Expr) ISpaceDo
RightJoin(table schema.Tabler, on ...field.Expr) ISpaceDo
Group(cols ...field.Expr) ISpaceDo
Having(conds ...gen.Condition) ISpaceDo
Limit(limit int) ISpaceDo
Offset(offset int) ISpaceDo
Count() (count int64, err error)
Scopes(funcs ...func(gen.Dao) gen.Dao) ISpaceDo
Unscoped() ISpaceDo
Create(values ...*model.Space) error
CreateInBatches(values []*model.Space, batchSize int) error
Save(values ...*model.Space) error
First() (*model.Space, error)
Take() (*model.Space, error)
Last() (*model.Space, error)
Find() ([]*model.Space, error)
FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.Space, err error)
FindInBatches(result *[]*model.Space, batchSize int, fc func(tx gen.Dao, batch int) error) error
Pluck(column field.Expr, dest interface{}) error
Delete(...*model.Space) (info gen.ResultInfo, err error)
Update(column field.Expr, value interface{}) (info gen.ResultInfo, err error)
UpdateSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error)
Updates(value interface{}) (info gen.ResultInfo, err error)
UpdateColumn(column field.Expr, value interface{}) (info gen.ResultInfo, err error)
UpdateColumnSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error)
UpdateColumns(value interface{}) (info gen.ResultInfo, err error)
UpdateFrom(q gen.SubQuery) gen.Dao
Attrs(attrs ...field.AssignExpr) ISpaceDo
Assign(attrs ...field.AssignExpr) ISpaceDo
Joins(fields ...field.RelationField) ISpaceDo
Preload(fields ...field.RelationField) ISpaceDo
FirstOrInit() (*model.Space, error)
FirstOrCreate() (*model.Space, error)
FindByPage(offset int, limit int) (result []*model.Space, count int64, err error)
ScanByPage(result interface{}, offset int, limit int) (count int64, err error)
Scan(result interface{}) (err error)
Returning(value interface{}, columns ...string) ISpaceDo
UnderlyingDB() *gorm.DB
schema.Tabler
}
func (s spaceDo) Debug() ISpaceDo {
return s.withDO(s.DO.Debug())
}
func (s spaceDo) WithContext(ctx context.Context) ISpaceDo {
return s.withDO(s.DO.WithContext(ctx))
}
func (s spaceDo) ReadDB() ISpaceDo {
return s.Clauses(dbresolver.Read)
}
func (s spaceDo) WriteDB() ISpaceDo {
return s.Clauses(dbresolver.Write)
}
func (s spaceDo) Session(config *gorm.Session) ISpaceDo {
return s.withDO(s.DO.Session(config))
}
func (s spaceDo) Clauses(conds ...clause.Expression) ISpaceDo {
return s.withDO(s.DO.Clauses(conds...))
}
func (s spaceDo) Returning(value interface{}, columns ...string) ISpaceDo {
return s.withDO(s.DO.Returning(value, columns...))
}
func (s spaceDo) Not(conds ...gen.Condition) ISpaceDo {
return s.withDO(s.DO.Not(conds...))
}
func (s spaceDo) Or(conds ...gen.Condition) ISpaceDo {
return s.withDO(s.DO.Or(conds...))
}
func (s spaceDo) Select(conds ...field.Expr) ISpaceDo {
return s.withDO(s.DO.Select(conds...))
}
func (s spaceDo) Where(conds ...gen.Condition) ISpaceDo {
return s.withDO(s.DO.Where(conds...))
}
func (s spaceDo) Order(conds ...field.Expr) ISpaceDo {
return s.withDO(s.DO.Order(conds...))
}
func (s spaceDo) Distinct(cols ...field.Expr) ISpaceDo {
return s.withDO(s.DO.Distinct(cols...))
}
func (s spaceDo) Omit(cols ...field.Expr) ISpaceDo {
return s.withDO(s.DO.Omit(cols...))
}
func (s spaceDo) Join(table schema.Tabler, on ...field.Expr) ISpaceDo {
return s.withDO(s.DO.Join(table, on...))
}
func (s spaceDo) LeftJoin(table schema.Tabler, on ...field.Expr) ISpaceDo {
return s.withDO(s.DO.LeftJoin(table, on...))
}
func (s spaceDo) RightJoin(table schema.Tabler, on ...field.Expr) ISpaceDo {
return s.withDO(s.DO.RightJoin(table, on...))
}
func (s spaceDo) Group(cols ...field.Expr) ISpaceDo {
return s.withDO(s.DO.Group(cols...))
}
func (s spaceDo) Having(conds ...gen.Condition) ISpaceDo {
return s.withDO(s.DO.Having(conds...))
}
func (s spaceDo) Limit(limit int) ISpaceDo {
return s.withDO(s.DO.Limit(limit))
}
func (s spaceDo) Offset(offset int) ISpaceDo {
return s.withDO(s.DO.Offset(offset))
}
func (s spaceDo) Scopes(funcs ...func(gen.Dao) gen.Dao) ISpaceDo {
return s.withDO(s.DO.Scopes(funcs...))
}
func (s spaceDo) Unscoped() ISpaceDo {
return s.withDO(s.DO.Unscoped())
}
func (s spaceDo) Create(values ...*model.Space) error {
if len(values) == 0 {
return nil
}
return s.DO.Create(values)
}
func (s spaceDo) CreateInBatches(values []*model.Space, batchSize int) error {
return s.DO.CreateInBatches(values, batchSize)
}
// Save : !!! underlying implementation is different with GORM
// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values)
func (s spaceDo) Save(values ...*model.Space) error {
if len(values) == 0 {
return nil
}
return s.DO.Save(values)
}
func (s spaceDo) First() (*model.Space, error) {
if result, err := s.DO.First(); err != nil {
return nil, err
} else {
return result.(*model.Space), nil
}
}
func (s spaceDo) Take() (*model.Space, error) {
if result, err := s.DO.Take(); err != nil {
return nil, err
} else {
return result.(*model.Space), nil
}
}
func (s spaceDo) Last() (*model.Space, error) {
if result, err := s.DO.Last(); err != nil {
return nil, err
} else {
return result.(*model.Space), nil
}
}
func (s spaceDo) Find() ([]*model.Space, error) {
result, err := s.DO.Find()
return result.([]*model.Space), err
}
func (s spaceDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.Space, err error) {
buf := make([]*model.Space, 0, batchSize)
err = s.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error {
defer func() { results = append(results, buf...) }()
return fc(tx, batch)
})
return results, err
}
func (s spaceDo) FindInBatches(result *[]*model.Space, batchSize int, fc func(tx gen.Dao, batch int) error) error {
return s.DO.FindInBatches(result, batchSize, fc)
}
func (s spaceDo) Attrs(attrs ...field.AssignExpr) ISpaceDo {
return s.withDO(s.DO.Attrs(attrs...))
}
func (s spaceDo) Assign(attrs ...field.AssignExpr) ISpaceDo {
return s.withDO(s.DO.Assign(attrs...))
}
func (s spaceDo) Joins(fields ...field.RelationField) ISpaceDo {
for _, _f := range fields {
s = *s.withDO(s.DO.Joins(_f))
}
return &s
}
func (s spaceDo) Preload(fields ...field.RelationField) ISpaceDo {
for _, _f := range fields {
s = *s.withDO(s.DO.Preload(_f))
}
return &s
}
func (s spaceDo) FirstOrInit() (*model.Space, error) {
if result, err := s.DO.FirstOrInit(); err != nil {
return nil, err
} else {
return result.(*model.Space), nil
}
}
func (s spaceDo) FirstOrCreate() (*model.Space, error) {
if result, err := s.DO.FirstOrCreate(); err != nil {
return nil, err
} else {
return result.(*model.Space), nil
}
}
func (s spaceDo) FindByPage(offset int, limit int) (result []*model.Space, count int64, err error) {
result, err = s.Offset(offset).Limit(limit).Find()
if err != nil {
return
}
if size := len(result); 0 < limit && 0 < size && size < limit {
count = int64(size + offset)
return
}
count, err = s.Offset(-1).Limit(-1).Count()
return
}
func (s spaceDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) {
count, err = s.Count()
if err != nil {
return
}
err = s.Offset(offset).Limit(limit).Scan(result)
return
}
func (s spaceDo) Scan(result interface{}) (err error) {
return s.DO.Scan(result)
}
func (s spaceDo) Delete(models ...*model.Space) (result gen.ResultInfo, err error) {
return s.DO.Delete(models)
}
func (s *spaceDo) withDO(do gen.Dao) *spaceDo {
s.DO = *do.(*gen.DO)
return s
}

View File

@@ -0,0 +1,401 @@
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
package query
import (
"context"
"gorm.io/gorm"
"gorm.io/gorm/clause"
"gorm.io/gorm/schema"
"gorm.io/gen"
"gorm.io/gen/field"
"gorm.io/plugin/dbresolver"
"github.com/coze-dev/coze-studio/backend/domain/user/internal/dal/model"
)
func newSpaceUser(db *gorm.DB, opts ...gen.DOOption) spaceUser {
_spaceUser := spaceUser{}
_spaceUser.spaceUserDo.UseDB(db, opts...)
_spaceUser.spaceUserDo.UseModel(&model.SpaceUser{})
tableName := _spaceUser.spaceUserDo.TableName()
_spaceUser.ALL = field.NewAsterisk(tableName)
_spaceUser.ID = field.NewInt64(tableName, "id")
_spaceUser.SpaceID = field.NewInt64(tableName, "space_id")
_spaceUser.UserID = field.NewInt64(tableName, "user_id")
_spaceUser.RoleType = field.NewInt32(tableName, "role_type")
_spaceUser.CreatedAt = field.NewInt64(tableName, "created_at")
_spaceUser.UpdatedAt = field.NewInt64(tableName, "updated_at")
_spaceUser.fillFieldMap()
return _spaceUser
}
// spaceUser Space Member Table
type spaceUser struct {
spaceUserDo
ALL field.Asterisk
ID field.Int64 // Primary Key ID, Auto Increment
SpaceID field.Int64 // Space ID
UserID field.Int64 // User ID
RoleType field.Int32 // Role Type: 1.owner 2.admin 3.member
CreatedAt field.Int64 // Creation Time (Milliseconds)
UpdatedAt field.Int64 // Update Time (Milliseconds)
fieldMap map[string]field.Expr
}
func (s spaceUser) Table(newTableName string) *spaceUser {
s.spaceUserDo.UseTable(newTableName)
return s.updateTableName(newTableName)
}
func (s spaceUser) As(alias string) *spaceUser {
s.spaceUserDo.DO = *(s.spaceUserDo.As(alias).(*gen.DO))
return s.updateTableName(alias)
}
func (s *spaceUser) updateTableName(table string) *spaceUser {
s.ALL = field.NewAsterisk(table)
s.ID = field.NewInt64(table, "id")
s.SpaceID = field.NewInt64(table, "space_id")
s.UserID = field.NewInt64(table, "user_id")
s.RoleType = field.NewInt32(table, "role_type")
s.CreatedAt = field.NewInt64(table, "created_at")
s.UpdatedAt = field.NewInt64(table, "updated_at")
s.fillFieldMap()
return s
}
func (s *spaceUser) GetFieldByName(fieldName string) (field.OrderExpr, bool) {
_f, ok := s.fieldMap[fieldName]
if !ok || _f == nil {
return nil, false
}
_oe, ok := _f.(field.OrderExpr)
return _oe, ok
}
func (s *spaceUser) fillFieldMap() {
s.fieldMap = make(map[string]field.Expr, 6)
s.fieldMap["id"] = s.ID
s.fieldMap["space_id"] = s.SpaceID
s.fieldMap["user_id"] = s.UserID
s.fieldMap["role_type"] = s.RoleType
s.fieldMap["created_at"] = s.CreatedAt
s.fieldMap["updated_at"] = s.UpdatedAt
}
func (s spaceUser) clone(db *gorm.DB) spaceUser {
s.spaceUserDo.ReplaceConnPool(db.Statement.ConnPool)
return s
}
func (s spaceUser) replaceDB(db *gorm.DB) spaceUser {
s.spaceUserDo.ReplaceDB(db)
return s
}
type spaceUserDo struct{ gen.DO }
type ISpaceUserDo interface {
gen.SubQuery
Debug() ISpaceUserDo
WithContext(ctx context.Context) ISpaceUserDo
WithResult(fc func(tx gen.Dao)) gen.ResultInfo
ReplaceDB(db *gorm.DB)
ReadDB() ISpaceUserDo
WriteDB() ISpaceUserDo
As(alias string) gen.Dao
Session(config *gorm.Session) ISpaceUserDo
Columns(cols ...field.Expr) gen.Columns
Clauses(conds ...clause.Expression) ISpaceUserDo
Not(conds ...gen.Condition) ISpaceUserDo
Or(conds ...gen.Condition) ISpaceUserDo
Select(conds ...field.Expr) ISpaceUserDo
Where(conds ...gen.Condition) ISpaceUserDo
Order(conds ...field.Expr) ISpaceUserDo
Distinct(cols ...field.Expr) ISpaceUserDo
Omit(cols ...field.Expr) ISpaceUserDo
Join(table schema.Tabler, on ...field.Expr) ISpaceUserDo
LeftJoin(table schema.Tabler, on ...field.Expr) ISpaceUserDo
RightJoin(table schema.Tabler, on ...field.Expr) ISpaceUserDo
Group(cols ...field.Expr) ISpaceUserDo
Having(conds ...gen.Condition) ISpaceUserDo
Limit(limit int) ISpaceUserDo
Offset(offset int) ISpaceUserDo
Count() (count int64, err error)
Scopes(funcs ...func(gen.Dao) gen.Dao) ISpaceUserDo
Unscoped() ISpaceUserDo
Create(values ...*model.SpaceUser) error
CreateInBatches(values []*model.SpaceUser, batchSize int) error
Save(values ...*model.SpaceUser) error
First() (*model.SpaceUser, error)
Take() (*model.SpaceUser, error)
Last() (*model.SpaceUser, error)
Find() ([]*model.SpaceUser, error)
FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.SpaceUser, err error)
FindInBatches(result *[]*model.SpaceUser, batchSize int, fc func(tx gen.Dao, batch int) error) error
Pluck(column field.Expr, dest interface{}) error
Delete(...*model.SpaceUser) (info gen.ResultInfo, err error)
Update(column field.Expr, value interface{}) (info gen.ResultInfo, err error)
UpdateSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error)
Updates(value interface{}) (info gen.ResultInfo, err error)
UpdateColumn(column field.Expr, value interface{}) (info gen.ResultInfo, err error)
UpdateColumnSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error)
UpdateColumns(value interface{}) (info gen.ResultInfo, err error)
UpdateFrom(q gen.SubQuery) gen.Dao
Attrs(attrs ...field.AssignExpr) ISpaceUserDo
Assign(attrs ...field.AssignExpr) ISpaceUserDo
Joins(fields ...field.RelationField) ISpaceUserDo
Preload(fields ...field.RelationField) ISpaceUserDo
FirstOrInit() (*model.SpaceUser, error)
FirstOrCreate() (*model.SpaceUser, error)
FindByPage(offset int, limit int) (result []*model.SpaceUser, count int64, err error)
ScanByPage(result interface{}, offset int, limit int) (count int64, err error)
Scan(result interface{}) (err error)
Returning(value interface{}, columns ...string) ISpaceUserDo
UnderlyingDB() *gorm.DB
schema.Tabler
}
func (s spaceUserDo) Debug() ISpaceUserDo {
return s.withDO(s.DO.Debug())
}
func (s spaceUserDo) WithContext(ctx context.Context) ISpaceUserDo {
return s.withDO(s.DO.WithContext(ctx))
}
func (s spaceUserDo) ReadDB() ISpaceUserDo {
return s.Clauses(dbresolver.Read)
}
func (s spaceUserDo) WriteDB() ISpaceUserDo {
return s.Clauses(dbresolver.Write)
}
func (s spaceUserDo) Session(config *gorm.Session) ISpaceUserDo {
return s.withDO(s.DO.Session(config))
}
func (s spaceUserDo) Clauses(conds ...clause.Expression) ISpaceUserDo {
return s.withDO(s.DO.Clauses(conds...))
}
func (s spaceUserDo) Returning(value interface{}, columns ...string) ISpaceUserDo {
return s.withDO(s.DO.Returning(value, columns...))
}
func (s spaceUserDo) Not(conds ...gen.Condition) ISpaceUserDo {
return s.withDO(s.DO.Not(conds...))
}
func (s spaceUserDo) Or(conds ...gen.Condition) ISpaceUserDo {
return s.withDO(s.DO.Or(conds...))
}
func (s spaceUserDo) Select(conds ...field.Expr) ISpaceUserDo {
return s.withDO(s.DO.Select(conds...))
}
func (s spaceUserDo) Where(conds ...gen.Condition) ISpaceUserDo {
return s.withDO(s.DO.Where(conds...))
}
func (s spaceUserDo) Order(conds ...field.Expr) ISpaceUserDo {
return s.withDO(s.DO.Order(conds...))
}
func (s spaceUserDo) Distinct(cols ...field.Expr) ISpaceUserDo {
return s.withDO(s.DO.Distinct(cols...))
}
func (s spaceUserDo) Omit(cols ...field.Expr) ISpaceUserDo {
return s.withDO(s.DO.Omit(cols...))
}
func (s spaceUserDo) Join(table schema.Tabler, on ...field.Expr) ISpaceUserDo {
return s.withDO(s.DO.Join(table, on...))
}
func (s spaceUserDo) LeftJoin(table schema.Tabler, on ...field.Expr) ISpaceUserDo {
return s.withDO(s.DO.LeftJoin(table, on...))
}
func (s spaceUserDo) RightJoin(table schema.Tabler, on ...field.Expr) ISpaceUserDo {
return s.withDO(s.DO.RightJoin(table, on...))
}
func (s spaceUserDo) Group(cols ...field.Expr) ISpaceUserDo {
return s.withDO(s.DO.Group(cols...))
}
func (s spaceUserDo) Having(conds ...gen.Condition) ISpaceUserDo {
return s.withDO(s.DO.Having(conds...))
}
func (s spaceUserDo) Limit(limit int) ISpaceUserDo {
return s.withDO(s.DO.Limit(limit))
}
func (s spaceUserDo) Offset(offset int) ISpaceUserDo {
return s.withDO(s.DO.Offset(offset))
}
func (s spaceUserDo) Scopes(funcs ...func(gen.Dao) gen.Dao) ISpaceUserDo {
return s.withDO(s.DO.Scopes(funcs...))
}
func (s spaceUserDo) Unscoped() ISpaceUserDo {
return s.withDO(s.DO.Unscoped())
}
func (s spaceUserDo) Create(values ...*model.SpaceUser) error {
if len(values) == 0 {
return nil
}
return s.DO.Create(values)
}
func (s spaceUserDo) CreateInBatches(values []*model.SpaceUser, batchSize int) error {
return s.DO.CreateInBatches(values, batchSize)
}
// Save : !!! underlying implementation is different with GORM
// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values)
func (s spaceUserDo) Save(values ...*model.SpaceUser) error {
if len(values) == 0 {
return nil
}
return s.DO.Save(values)
}
func (s spaceUserDo) First() (*model.SpaceUser, error) {
if result, err := s.DO.First(); err != nil {
return nil, err
} else {
return result.(*model.SpaceUser), nil
}
}
func (s spaceUserDo) Take() (*model.SpaceUser, error) {
if result, err := s.DO.Take(); err != nil {
return nil, err
} else {
return result.(*model.SpaceUser), nil
}
}
func (s spaceUserDo) Last() (*model.SpaceUser, error) {
if result, err := s.DO.Last(); err != nil {
return nil, err
} else {
return result.(*model.SpaceUser), nil
}
}
func (s spaceUserDo) Find() ([]*model.SpaceUser, error) {
result, err := s.DO.Find()
return result.([]*model.SpaceUser), err
}
func (s spaceUserDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.SpaceUser, err error) {
buf := make([]*model.SpaceUser, 0, batchSize)
err = s.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error {
defer func() { results = append(results, buf...) }()
return fc(tx, batch)
})
return results, err
}
func (s spaceUserDo) FindInBatches(result *[]*model.SpaceUser, batchSize int, fc func(tx gen.Dao, batch int) error) error {
return s.DO.FindInBatches(result, batchSize, fc)
}
func (s spaceUserDo) Attrs(attrs ...field.AssignExpr) ISpaceUserDo {
return s.withDO(s.DO.Attrs(attrs...))
}
func (s spaceUserDo) Assign(attrs ...field.AssignExpr) ISpaceUserDo {
return s.withDO(s.DO.Assign(attrs...))
}
func (s spaceUserDo) Joins(fields ...field.RelationField) ISpaceUserDo {
for _, _f := range fields {
s = *s.withDO(s.DO.Joins(_f))
}
return &s
}
func (s spaceUserDo) Preload(fields ...field.RelationField) ISpaceUserDo {
for _, _f := range fields {
s = *s.withDO(s.DO.Preload(_f))
}
return &s
}
func (s spaceUserDo) FirstOrInit() (*model.SpaceUser, error) {
if result, err := s.DO.FirstOrInit(); err != nil {
return nil, err
} else {
return result.(*model.SpaceUser), nil
}
}
func (s spaceUserDo) FirstOrCreate() (*model.SpaceUser, error) {
if result, err := s.DO.FirstOrCreate(); err != nil {
return nil, err
} else {
return result.(*model.SpaceUser), nil
}
}
func (s spaceUserDo) FindByPage(offset int, limit int) (result []*model.SpaceUser, count int64, err error) {
result, err = s.Offset(offset).Limit(limit).Find()
if err != nil {
return
}
if size := len(result); 0 < limit && 0 < size && size < limit {
count = int64(size + offset)
return
}
count, err = s.Offset(-1).Limit(-1).Count()
return
}
func (s spaceUserDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) {
count, err = s.Count()
if err != nil {
return
}
err = s.Offset(offset).Limit(limit).Scan(result)
return
}
func (s spaceUserDo) Scan(result interface{}) (err error) {
return s.DO.Scan(result)
}
func (s spaceUserDo) Delete(models ...*model.SpaceUser) (result gen.ResultInfo, err error) {
return s.DO.Delete(models)
}
func (s *spaceUserDo) withDO(do gen.Dao) *spaceUserDo {
s.DO = *do.(*gen.DO)
return s
}

View File

@@ -0,0 +1,429 @@
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
package query
import (
"context"
"gorm.io/gorm"
"gorm.io/gorm/clause"
"gorm.io/gorm/schema"
"gorm.io/gen"
"gorm.io/gen/field"
"gorm.io/plugin/dbresolver"
"github.com/coze-dev/coze-studio/backend/domain/user/internal/dal/model"
)
func newUser(db *gorm.DB, opts ...gen.DOOption) user {
_user := user{}
_user.userDo.UseDB(db, opts...)
_user.userDo.UseModel(&model.User{})
tableName := _user.userDo.TableName()
_user.ALL = field.NewAsterisk(tableName)
_user.ID = field.NewInt64(tableName, "id")
_user.Name = field.NewString(tableName, "name")
_user.UniqueName = field.NewString(tableName, "unique_name")
_user.Email = field.NewString(tableName, "email")
_user.Password = field.NewString(tableName, "password")
_user.Description = field.NewString(tableName, "description")
_user.IconURI = field.NewString(tableName, "icon_uri")
_user.UserVerified = field.NewBool(tableName, "user_verified")
_user.Locale = field.NewString(tableName, "locale")
_user.SessionKey = field.NewString(tableName, "session_key")
_user.CreatedAt = field.NewInt64(tableName, "created_at")
_user.UpdatedAt = field.NewInt64(tableName, "updated_at")
_user.DeletedAt = field.NewField(tableName, "deleted_at")
_user.fillFieldMap()
return _user
}
// user User Table
type user struct {
userDo
ALL field.Asterisk
ID field.Int64 // Primary Key ID
Name field.String // User Nickname
UniqueName field.String // User Unique Name
Email field.String // Email
Password field.String // Password (Encrypted)
Description field.String // User Description
IconURI field.String // Avatar URI
UserVerified field.Bool // User Verification Status
Locale field.String // Locale
SessionKey field.String // Session Key
CreatedAt field.Int64 // Creation Time (Milliseconds)
UpdatedAt field.Int64 // Update Time (Milliseconds)
DeletedAt field.Field // Deletion Time (Milliseconds)
fieldMap map[string]field.Expr
}
func (u user) Table(newTableName string) *user {
u.userDo.UseTable(newTableName)
return u.updateTableName(newTableName)
}
func (u user) As(alias string) *user {
u.userDo.DO = *(u.userDo.As(alias).(*gen.DO))
return u.updateTableName(alias)
}
func (u *user) updateTableName(table string) *user {
u.ALL = field.NewAsterisk(table)
u.ID = field.NewInt64(table, "id")
u.Name = field.NewString(table, "name")
u.UniqueName = field.NewString(table, "unique_name")
u.Email = field.NewString(table, "email")
u.Password = field.NewString(table, "password")
u.Description = field.NewString(table, "description")
u.IconURI = field.NewString(table, "icon_uri")
u.UserVerified = field.NewBool(table, "user_verified")
u.Locale = field.NewString(table, "locale")
u.SessionKey = field.NewString(table, "session_key")
u.CreatedAt = field.NewInt64(table, "created_at")
u.UpdatedAt = field.NewInt64(table, "updated_at")
u.DeletedAt = field.NewField(table, "deleted_at")
u.fillFieldMap()
return u
}
func (u *user) GetFieldByName(fieldName string) (field.OrderExpr, bool) {
_f, ok := u.fieldMap[fieldName]
if !ok || _f == nil {
return nil, false
}
_oe, ok := _f.(field.OrderExpr)
return _oe, ok
}
func (u *user) fillFieldMap() {
u.fieldMap = make(map[string]field.Expr, 13)
u.fieldMap["id"] = u.ID
u.fieldMap["name"] = u.Name
u.fieldMap["unique_name"] = u.UniqueName
u.fieldMap["email"] = u.Email
u.fieldMap["password"] = u.Password
u.fieldMap["description"] = u.Description
u.fieldMap["icon_uri"] = u.IconURI
u.fieldMap["user_verified"] = u.UserVerified
u.fieldMap["locale"] = u.Locale
u.fieldMap["session_key"] = u.SessionKey
u.fieldMap["created_at"] = u.CreatedAt
u.fieldMap["updated_at"] = u.UpdatedAt
u.fieldMap["deleted_at"] = u.DeletedAt
}
func (u user) clone(db *gorm.DB) user {
u.userDo.ReplaceConnPool(db.Statement.ConnPool)
return u
}
func (u user) replaceDB(db *gorm.DB) user {
u.userDo.ReplaceDB(db)
return u
}
type userDo struct{ gen.DO }
type IUserDo interface {
gen.SubQuery
Debug() IUserDo
WithContext(ctx context.Context) IUserDo
WithResult(fc func(tx gen.Dao)) gen.ResultInfo
ReplaceDB(db *gorm.DB)
ReadDB() IUserDo
WriteDB() IUserDo
As(alias string) gen.Dao
Session(config *gorm.Session) IUserDo
Columns(cols ...field.Expr) gen.Columns
Clauses(conds ...clause.Expression) IUserDo
Not(conds ...gen.Condition) IUserDo
Or(conds ...gen.Condition) IUserDo
Select(conds ...field.Expr) IUserDo
Where(conds ...gen.Condition) IUserDo
Order(conds ...field.Expr) IUserDo
Distinct(cols ...field.Expr) IUserDo
Omit(cols ...field.Expr) IUserDo
Join(table schema.Tabler, on ...field.Expr) IUserDo
LeftJoin(table schema.Tabler, on ...field.Expr) IUserDo
RightJoin(table schema.Tabler, on ...field.Expr) IUserDo
Group(cols ...field.Expr) IUserDo
Having(conds ...gen.Condition) IUserDo
Limit(limit int) IUserDo
Offset(offset int) IUserDo
Count() (count int64, err error)
Scopes(funcs ...func(gen.Dao) gen.Dao) IUserDo
Unscoped() IUserDo
Create(values ...*model.User) error
CreateInBatches(values []*model.User, batchSize int) error
Save(values ...*model.User) error
First() (*model.User, error)
Take() (*model.User, error)
Last() (*model.User, error)
Find() ([]*model.User, error)
FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.User, err error)
FindInBatches(result *[]*model.User, batchSize int, fc func(tx gen.Dao, batch int) error) error
Pluck(column field.Expr, dest interface{}) error
Delete(...*model.User) (info gen.ResultInfo, err error)
Update(column field.Expr, value interface{}) (info gen.ResultInfo, err error)
UpdateSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error)
Updates(value interface{}) (info gen.ResultInfo, err error)
UpdateColumn(column field.Expr, value interface{}) (info gen.ResultInfo, err error)
UpdateColumnSimple(columns ...field.AssignExpr) (info gen.ResultInfo, err error)
UpdateColumns(value interface{}) (info gen.ResultInfo, err error)
UpdateFrom(q gen.SubQuery) gen.Dao
Attrs(attrs ...field.AssignExpr) IUserDo
Assign(attrs ...field.AssignExpr) IUserDo
Joins(fields ...field.RelationField) IUserDo
Preload(fields ...field.RelationField) IUserDo
FirstOrInit() (*model.User, error)
FirstOrCreate() (*model.User, error)
FindByPage(offset int, limit int) (result []*model.User, count int64, err error)
ScanByPage(result interface{}, offset int, limit int) (count int64, err error)
Scan(result interface{}) (err error)
Returning(value interface{}, columns ...string) IUserDo
UnderlyingDB() *gorm.DB
schema.Tabler
}
func (u userDo) Debug() IUserDo {
return u.withDO(u.DO.Debug())
}
func (u userDo) WithContext(ctx context.Context) IUserDo {
return u.withDO(u.DO.WithContext(ctx))
}
func (u userDo) ReadDB() IUserDo {
return u.Clauses(dbresolver.Read)
}
func (u userDo) WriteDB() IUserDo {
return u.Clauses(dbresolver.Write)
}
func (u userDo) Session(config *gorm.Session) IUserDo {
return u.withDO(u.DO.Session(config))
}
func (u userDo) Clauses(conds ...clause.Expression) IUserDo {
return u.withDO(u.DO.Clauses(conds...))
}
func (u userDo) Returning(value interface{}, columns ...string) IUserDo {
return u.withDO(u.DO.Returning(value, columns...))
}
func (u userDo) Not(conds ...gen.Condition) IUserDo {
return u.withDO(u.DO.Not(conds...))
}
func (u userDo) Or(conds ...gen.Condition) IUserDo {
return u.withDO(u.DO.Or(conds...))
}
func (u userDo) Select(conds ...field.Expr) IUserDo {
return u.withDO(u.DO.Select(conds...))
}
func (u userDo) Where(conds ...gen.Condition) IUserDo {
return u.withDO(u.DO.Where(conds...))
}
func (u userDo) Order(conds ...field.Expr) IUserDo {
return u.withDO(u.DO.Order(conds...))
}
func (u userDo) Distinct(cols ...field.Expr) IUserDo {
return u.withDO(u.DO.Distinct(cols...))
}
func (u userDo) Omit(cols ...field.Expr) IUserDo {
return u.withDO(u.DO.Omit(cols...))
}
func (u userDo) Join(table schema.Tabler, on ...field.Expr) IUserDo {
return u.withDO(u.DO.Join(table, on...))
}
func (u userDo) LeftJoin(table schema.Tabler, on ...field.Expr) IUserDo {
return u.withDO(u.DO.LeftJoin(table, on...))
}
func (u userDo) RightJoin(table schema.Tabler, on ...field.Expr) IUserDo {
return u.withDO(u.DO.RightJoin(table, on...))
}
func (u userDo) Group(cols ...field.Expr) IUserDo {
return u.withDO(u.DO.Group(cols...))
}
func (u userDo) Having(conds ...gen.Condition) IUserDo {
return u.withDO(u.DO.Having(conds...))
}
func (u userDo) Limit(limit int) IUserDo {
return u.withDO(u.DO.Limit(limit))
}
func (u userDo) Offset(offset int) IUserDo {
return u.withDO(u.DO.Offset(offset))
}
func (u userDo) Scopes(funcs ...func(gen.Dao) gen.Dao) IUserDo {
return u.withDO(u.DO.Scopes(funcs...))
}
func (u userDo) Unscoped() IUserDo {
return u.withDO(u.DO.Unscoped())
}
func (u userDo) Create(values ...*model.User) error {
if len(values) == 0 {
return nil
}
return u.DO.Create(values)
}
func (u userDo) CreateInBatches(values []*model.User, batchSize int) error {
return u.DO.CreateInBatches(values, batchSize)
}
// Save : !!! underlying implementation is different with GORM
// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values)
func (u userDo) Save(values ...*model.User) error {
if len(values) == 0 {
return nil
}
return u.DO.Save(values)
}
func (u userDo) First() (*model.User, error) {
if result, err := u.DO.First(); err != nil {
return nil, err
} else {
return result.(*model.User), nil
}
}
func (u userDo) Take() (*model.User, error) {
if result, err := u.DO.Take(); err != nil {
return nil, err
} else {
return result.(*model.User), nil
}
}
func (u userDo) Last() (*model.User, error) {
if result, err := u.DO.Last(); err != nil {
return nil, err
} else {
return result.(*model.User), nil
}
}
func (u userDo) Find() ([]*model.User, error) {
result, err := u.DO.Find()
return result.([]*model.User), err
}
func (u userDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.User, err error) {
buf := make([]*model.User, 0, batchSize)
err = u.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error {
defer func() { results = append(results, buf...) }()
return fc(tx, batch)
})
return results, err
}
func (u userDo) FindInBatches(result *[]*model.User, batchSize int, fc func(tx gen.Dao, batch int) error) error {
return u.DO.FindInBatches(result, batchSize, fc)
}
func (u userDo) Attrs(attrs ...field.AssignExpr) IUserDo {
return u.withDO(u.DO.Attrs(attrs...))
}
func (u userDo) Assign(attrs ...field.AssignExpr) IUserDo {
return u.withDO(u.DO.Assign(attrs...))
}
func (u userDo) Joins(fields ...field.RelationField) IUserDo {
for _, _f := range fields {
u = *u.withDO(u.DO.Joins(_f))
}
return &u
}
func (u userDo) Preload(fields ...field.RelationField) IUserDo {
for _, _f := range fields {
u = *u.withDO(u.DO.Preload(_f))
}
return &u
}
func (u userDo) FirstOrInit() (*model.User, error) {
if result, err := u.DO.FirstOrInit(); err != nil {
return nil, err
} else {
return result.(*model.User), nil
}
}
func (u userDo) FirstOrCreate() (*model.User, error) {
if result, err := u.DO.FirstOrCreate(); err != nil {
return nil, err
} else {
return result.(*model.User), nil
}
}
func (u userDo) FindByPage(offset int, limit int) (result []*model.User, count int64, err error) {
result, err = u.Offset(offset).Limit(limit).Find()
if err != nil {
return
}
if size := len(result); 0 < limit && 0 < size && size < limit {
count = int64(size + offset)
return
}
count, err = u.Offset(-1).Limit(-1).Count()
return
}
func (u userDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) {
count, err = u.Count()
if err != nil {
return
}
err = u.Offset(offset).Limit(limit).Scan(result)
return
}
func (u userDo) Scan(result interface{}) (err error) {
return u.DO.Scan(result)
}
func (u userDo) Delete(models ...*model.User) (result gen.ResultInfo, err error) {
return u.DO.Delete(models)
}
func (u *userDo) withDO(do gen.Dao) *userDo {
u.DO = *do.(*gen.DO)
return u
}

View File

@@ -0,0 +1,46 @@
/*
* Copyright 2025 coze-dev Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package dal
import (
"context"
"gorm.io/gorm"
"github.com/coze-dev/coze-studio/backend/domain/user/internal/dal/model"
"github.com/coze-dev/coze-studio/backend/domain/user/internal/dal/query"
)
func NewSpaceDAO(db *gorm.DB) *SpaceDAO {
return &SpaceDAO{
query: query.Use(db),
}
}
type SpaceDAO struct {
query *query.Query
}
func (dao *SpaceDAO) CreateSpace(ctx context.Context, space *model.Space) error {
return dao.query.Space.WithContext(ctx).Create(space)
}
func (dao *SpaceDAO) GetSpaceByIDs(ctx context.Context, spaceIDs []int64) ([]*model.Space, error) {
return dao.query.Space.WithContext(ctx).Where(
dao.query.Space.ID.In(spaceIDs...),
).Find()
}

View File

@@ -0,0 +1,33 @@
/*
* Copyright 2025 coze-dev Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package dal
import (
"context"
"github.com/coze-dev/coze-studio/backend/domain/user/internal/dal/model"
)
func (dao *SpaceDAO) AddSpaceUser(ctx context.Context, spaceUser *model.SpaceUser) error {
return dao.query.SpaceUser.WithContext(ctx).Create(spaceUser)
}
func (dao *SpaceDAO) GetSpaceList(ctx context.Context, userID int64) ([]*model.SpaceUser, error) {
return dao.query.SpaceUser.WithContext(ctx).Where(
dao.query.SpaceUser.UserID.Eq(userID),
).Find()
}

View File

@@ -0,0 +1,162 @@
/*
* Copyright 2025 coze-dev Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package dal
import (
"context"
"errors"
"time"
"gorm.io/gorm"
"github.com/coze-dev/coze-studio/backend/domain/user/internal/dal/model"
"github.com/coze-dev/coze-studio/backend/domain/user/internal/dal/query"
)
func NewUserDAO(db *gorm.DB) *UserDAO {
return &UserDAO{
query: query.Use(db),
}
}
type UserDAO struct {
query *query.Query
}
func (dao *UserDAO) GetUsersByEmail(ctx context.Context, email string) (*model.User, bool, error) {
user, err := dao.query.User.WithContext(ctx).Where(dao.query.User.Email.Eq(email)).First()
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, false, nil
}
if err != nil {
return nil, false, err
}
return user, true, err
}
func (dao *UserDAO) UpdateSessionKey(ctx context.Context, userID int64, sessionKey string) error {
_, err := dao.query.User.WithContext(ctx).Where(
dao.query.User.ID.Eq(userID),
).Updates(map[string]interface{}{
"session_key": sessionKey,
"updated_at": time.Now().UnixMilli(),
})
return err
}
func (dao *UserDAO) ClearSessionKey(ctx context.Context, userID int64) error {
_, err := dao.query.User.WithContext(ctx).
Where(
dao.query.User.ID.Eq(userID),
).
UpdateColumn(dao.query.User.SessionKey, "")
return err
}
func (dao *UserDAO) UpdatePassword(ctx context.Context, email, password string) error {
_, err := dao.query.User.WithContext(ctx).Where(
dao.query.User.Email.Eq(email),
).Updates(map[string]interface{}{
"password": password,
"session_key": "", // clear session key
"updated_at": time.Now().UnixMilli(),
})
return err
}
func (dao *UserDAO) GetUserByID(ctx context.Context, userID int64) (*model.User, error) {
return dao.query.User.WithContext(ctx).Where(
dao.query.User.ID.Eq(userID),
).First()
}
func (dao *UserDAO) UpdateAvatar(ctx context.Context, userID int64, iconURI string) error {
_, err := dao.query.User.WithContext(ctx).Where(
dao.query.User.ID.Eq(userID),
).Updates(map[string]interface{}{
"icon_uri": iconURI,
"updated_at": time.Now().UnixMilli(),
})
return err
}
func (dao *UserDAO) CheckUniqueNameExist(ctx context.Context, uniqueName string) (bool, error) {
_, err := dao.query.User.WithContext(ctx).Select(dao.query.User.ID).Where(
dao.query.User.UniqueName.Eq(uniqueName),
).First()
if errors.Is(err, gorm.ErrRecordNotFound) {
return false, nil
}
if err != nil {
return false, err
}
return true, nil
}
func (dao *UserDAO) UpdateProfile(ctx context.Context, userID int64, updates map[string]interface{}) error {
if _, ok := updates["updated_at"]; !ok {
updates["updated_at"] = time.Now().UnixMilli()
}
_, err := dao.query.User.WithContext(ctx).Where(
dao.query.User.ID.Eq(userID),
).Updates(updates)
return err
}
func (dao *UserDAO) CheckEmailExist(ctx context.Context, email string) (bool, error) {
_, exist, err := dao.GetUsersByEmail(ctx, email)
if !exist {
return false, nil
}
if err != nil {
return false, err
}
return true, nil
}
// CreateUser 创建新用户
func (dao *UserDAO) CreateUser(ctx context.Context, user *model.User) error {
return dao.query.User.WithContext(ctx).Create(user)
}
// GetUserBySessionKey 根据会话密钥查询用户
func (dao *UserDAO) GetUserBySessionKey(ctx context.Context, sessionKey string) (*model.User, bool, error) {
sm, err := dao.query.User.WithContext(ctx).Where(
dao.query.User.SessionKey.Eq(sessionKey),
).First()
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, false, nil
}
if err != nil {
return nil, false, err
}
return sm, true, nil
}
// GetUsersByIDs 批量查询用户信息
func (dao *UserDAO) GetUsersByIDs(ctx context.Context, userIDs []int64) ([]*model.User, error) {
return dao.query.User.WithContext(ctx).Where(
dao.query.User.ID.In(userIDs...),
).Find()
}