Files
muninn-aio/services/user.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
}