MCPcopy
hub / github.com/tinode/chat / Create

Method Create

server/store/store.go:292–329  ·  view source on GitHub ↗

Create inserts User object into a database, updates creation time and assigns UID

(user *types.User, private any)

Source from the content-addressed store, hash-verified

290
291// Create inserts User object into a database, updates creation time and assigns UID
292func (usersMapper) Create(user *types.User, private any) (*types.User, error) {
293
294 user.SetUid(Store.GetUid())
295 user.InitTimes()
296
297 err := adp.UserCreate(user)
298 if err != nil {
299 return nil, err
300 }
301
302 // Create user's subscription to 'me' && 'fnd'. These topics are ephemeral, the topic object need not to be
303 // inserted.
304 err = Subs.Create(
305 &types.Subscription{
306 ObjHeader: types.ObjHeader{CreatedAt: user.CreatedAt},
307 User: user.Id,
308 Topic: user.Uid().UserId(),
309 ModeWant: types.ModeCMeFnd,
310 ModeGiven: types.ModeCMeFnd,
311 Private: private,
312 },
313 &types.Subscription{
314 ObjHeader: types.ObjHeader{CreatedAt: user.CreatedAt},
315 User: user.Id,
316 Topic: user.Uid().FndName(),
317 ModeWant: types.ModeCMeFnd,
318 ModeGiven: types.ModeCMeFnd,
319 Private: nil,
320 })
321 if err != nil {
322 // Best effort to delete incomplete user record. Orphaned user records are not a problem.
323 // They just take up space.
324 adp.UserDelete(user.Uid(), true)
325 return nil, err
326 }
327
328 return user, nil
329}
330
331// GetAuthRecord takes a user ID and a authentication scheme name, fetches unique scheme-dependent identifier and
332// authentication secret.

Callers

nothing calls this directly

Calls 9

SetUidMethod · 0.80
InitTimesMethod · 0.80
UserIdMethod · 0.80
UidMethod · 0.80
FndNameMethod · 0.80
GetUidMethod · 0.65
UserCreateMethod · 0.65
CreateMethod · 0.65
UserDeleteMethod · 0.65

Tested by

no test coverage detected