firstOrFail<T extends Model> static method

Future firstOrFail<T extends Model>({
  1. required HttpRequest request,
  2. required String field,
  3. required dynamic value,
  4. String comp = "==",
  5. DatabaseDisk disk = Model.defaultDisk,
})

Implementation

static Future<dynamic> firstOrFail<T extends Model>({required HttpRequest request, required String field, required dynamic value, String comp = "==", DatabaseDisk disk = Model.defaultDisk}) async {
  switch (disk) {
    case DatabaseDisk.file:
      try {
        final model = await JsonFileModel.firstWhere<T>(field: field, value: value, comp: comp);
        if (model != null) {
          model.disk = .file;
          return model;
        }
        return request.notFound();
      } catch (e) {
        return request.notFound();
      }
    case DatabaseDisk.sqlite:
      try {
        final model = await SQLiteModel.firstWhere<T>(field: field, value: value, comp: comp);
        if (model != null) {
          model.disk = .sqlite;
          return model;
        }
        return request.notFound();
      } catch (e) {
        return request.notFound();
      }
    case DatabaseDisk.s3:
      try {
        final model = await S3JsonFileModel.firstWhere<T>(field: field, value: value, comp: comp);
        if (model != null) {
          model.disk = .s3;
          return model;
        }
        return request.notFound();
      } catch (e) {
        return request.notFound();
      }
    case DatabaseDisk.pgsql:
      try {
        final model = await PostgresModel.firstWhere<T>(field: field, value: value, comp: comp);
        if (model != null) {
          model.disk = .pgsql;
          return model;
        }
        return request.notFound();
      } catch (e) {
        return request.notFound();
      }
  }
}