| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- using InvercargillSql.Orm;
- using Inversion;
- namespace InvercargillSqlInversion {
- public class InversionTypeProvider : Object, TypeProvider {
- private Scope scope = inject<Scope>();
- public InvercargillSql.Orm.EntityMapper? get_mapper_for_type (GLib.Type type) throws Error {
- print(@"get_mapper_for_type $(type.name())\n");
- var reg = scope.get_registrations(typeof(EntityMapper))
- .where(r => r.get_metadata<MapperTypeInfo>().any(i => i.mapper_type == type))
- .first_or_default();
- if(reg == null) {
- return null;
- }
- return (EntityMapper)scope.resolve_registration(reg);
- }
- public InvercargillSql.Orm.Projections.ProjectionDefinition? get_projection_for_type (GLib.Type type) throws Error {
- print(@"get_projection_for_type $(type.name())\n");
- var reg = scope.get_registrations(typeof(Projections.ProjectionDefinition))
- .where(r => r.get_metadata<MapperTypeInfo>().any(i => i.mapper_type == type))
- .first_or_default();
- if(reg == null) {
- return null;
- }
- return (Projections.ProjectionDefinition)scope.resolve_registration(reg);
- }
- public bool has_mapper_for_type (GLib.Type type) {
- print(@"has_mapper_for_type $(type.name())\n");
- return scope.get_registrations(typeof(EntityMapper))
- .any(r => r.get_metadata<MapperTypeInfo>().any(i => i.mapper_type == type));
- }
- public bool has_projection_for_type (GLib.Type type) {
- print(@"has_projection_for_type $(type.name())\n");
- return scope.get_registrations(typeof(Projections.ProjectionDefinition))
- .any(r => r.get_metadata<MapperTypeInfo>().any(i => i.mapper_type == type));
- }
- }
- public class MapperTypeInfo : Object {
- public Type mapper_type { get; set; }
- public MapperTypeInfo(Type type) {
- mapper_type = type;
- }
- }
- }
|