ProjectionType<R, O extends ProjectionOutput> constructor
ProjectionType<R, O extends ProjectionOutput> ({})
Implementation
ProjectionType({
required List<Slot<Object?>> slots,
required this.assemble,
required this.fields,
}) : slots = List.unmodifiable(slots) {
if (this.slots.isEmpty) {
throw const OrmException(
'PROJECTION.EMPTY',
'Declare at least one slot.',
);
}
final keys = Set<Slot<Object?>>.identity();
final names = <String>{};
for (final slot in this.slots) {
if (!keys.add(slot) || !names.add(slot.name)) {
throw const OrmException(
'PROJECTION.SLOT',
'Projection slots must have distinct identities and names.',
);
}
}
}