41 lines
840 B
Go
41 lines
840 B
Go
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
|
|
}
|