package services import ( "context" "code.gurenya.net/carlsmei/muninn-aio/db" "code.gurenya.net/carlsmei/muninn-aio/ent" "code.gurenya.net/carlsmei/muninn-aio/ent/user" ) func GetOrCreateUser(ctx context.Context, telegram_id int64) (*ent.User, error) { client := db.GetEntClient() // fmt.Printf("GetOrCreateUser(context, %d)\n", telegram_id) user, err := client.User.Query(). Where(user.TelegramID(telegram_id)). Only(ctx) if err != nil { if ent.IsNotFound(err) { // fmt.Printf("user not found - creating user with telegram id %d\n", telegram_id) } else { return nil, err } } else { return user, nil } user, err = client.User.Create(). SetTelegramID(telegram_id). Save(ctx) if err != nil { return nil, err } // fmt.Printf("user created with telegram id %d\n", telegram_id) return user, nil }