belongsTo<T extends Model> method

Future<T?> belongsTo<T extends Model>({
  1. DatabaseDisk disk = Model.defaultDisk,
})

Implementation

Future<T?> belongsTo<T extends Model>({
  DatabaseDisk disk = Model.defaultDisk,
}) async {
  try {
    final tableName = Model.getTableName<T>();
    final foreignTableSingular = tableName.substring(0, tableName.length - 1);
    final data = toMetaJson();

    switch (disk) {
      case DatabaseDisk.file:
      case DatabaseDisk.s3:
        final foreignUuidKey = "${foreignTableSingular}_uuid";
        final val = data[foreignUuidKey];
        if (val == null) return null;
        return Model.firstWhere<T>(field: "uuid", value: val, disk: disk);

      case DatabaseDisk.sqlite:
      case DatabaseDisk.pgsql:
        final foreignIdKey = "${foreignTableSingular}_id";
        final val = data[foreignIdKey];
        if (val == null) return null;
        return Model.firstWhere<T>(field: "id", value: val, disk: disk);
    }
  } catch (e) {
    return null;
  }
}