import 'package:backend/database.dart';
import 'package:drift/drift.dart';
import 'package:logging/logging.dart';
import 'package:uuid/uuid.dart';

final log = Logger('Db');

class Db {
  static Future<User> getUser(String uuid) {
    log.finer('Getting user $uuid');
    return AppDatabase().managers.users.filter((f) => f.uuid.equals(uuid)).get().then((u) => u.first);
  }

  static Future<User?> createUser({required String username}) => AppDatabase()
          .managers
          .users
          .createReturningOrNull(
            (o) => o(createdAt: Value(DateTime.now()), uuid: const Uuid().v4(), name: username),
          )
          .catchError((Object err) {
        log.severe('Failed to create user', err, StackTrace.current);
        throw Exception(err.toString());
      });
}