belongsTo<T extends Model> method

Future<T?> belongsTo<T extends Model>(
  1. ModelFactory<T> factory, {
  2. String? foreignKey,
  3. String? ownerKey,
})

Defines a "Belongs To" relationship.

Implementation

Future<T?> belongsTo<T extends Model>(ModelFactory<T> factory, {String? foreignKey, String? ownerKey}) async {
  final relatedModelName = T.toString().toLowerCase();
  final fk = foreignKey ?? '${relatedModelName}_id';
  final targetKey = ownerKey ?? 'id';

  final idValue = getAttribute(fk);
  if (idValue == null) return null;

  // Use a fresh QueryBuilder via the attached executor
  final row = await QueryBuilder(_inferTableName<T>(), db)
      .where(targetKey, '=', idValue)
      .first();

  if (row == null) return null;
  final model = factory(row);
  model.setRawData(db, row);
  return model;
}