MCPcopy Create free account
hub / github.com/53AI/53AIHub / CreateDefaultSpaceAndLibrary

Function CreateDefaultSpaceAndLibrary

api/model/migration.go:153–211  ·  view source on GitHub ↗

CreateDefaultSpaceAndLibrary 为企业创建默认空间和知识库

(eid int64, ownerID int64)

Source from the content-addressed store, hash-verified

151
152// CreateDefaultSpaceAndLibrary 为企业创建默认空间和知识库
153func CreateDefaultSpaceAndLibrary(eid int64, ownerID int64) (*Space, *Library, error) {
154 // 检查是否已存在默认空间
155 var existingSpace Space
156 if err := DB.Where("eid = ? AND name = ?", eid, "默认空间").First(&existingSpace).Error; err == nil {
157 return nil, nil, errors.New("default space already exists")
158 }
159
160 // 开启事务
161 tx := DB.Begin()
162 defer func() {
163 if r := recover(); r != nil {
164 tx.Rollback()
165 }
166 }()
167
168 // 创建默认空间
169 defaultSpace := &Space{
170 Name: "默认空间",
171 Description: "企业的默认工作空间",
172 Eid: eid,
173 OwnerID: ownerID,
174 SpaceKind: SPACE_KIND_REGULAR,
175 Status: SPACE_STATUS_ACTIVE,
176 Sort: 0,
177 }
178
179 if err := tx.Create(defaultSpace).Error; err != nil {
180 tx.Rollback()
181 return nil, nil, err
182 }
183
184 // 创建默认知识库
185 defaultLibrary := &Library{
186 Name: "默认知识库",
187 Description: "空间的默认知识库",
188 SpaceID: defaultSpace.ID,
189 Eid: eid,
190 CreatorID: ownerID,
191 LibraryKind: LIBRARY_KIND_REGULAR,
192 Status: LIBRARY_STATUS_ACTIVE,
193 Sort: 0,
194 }
195
196 // 使用Library的Save方法确保UUID正确生成
197 originalDB := DB
198 DB = tx // 临时将全局DB设置为当前事务
199 err := defaultLibrary.Save()
200 DB = originalDB // 恢复全局DB
201 if err != nil {
202 tx.Rollback()
203 return nil, nil, err
204 }
205
206 if err := tx.Commit().Error; err != nil {
207 return nil, nil, err
208 }
209
210 return defaultSpace, defaultLibrary, nil

Callers

nothing calls this directly

Calls 3

SaveMethod · 0.95
NewMethod · 0.45
CreateMethod · 0.45

Tested by

no test coverage detected