public void UnitTest_EntityInterfaceGenerator()
        {
            var auditableEntityType    = typeof(IGetListItemsRequestV01);
            var entityDeclarationTypes = auditableEntityType.Assembly.DefinedTypes.Where(type => Attribute.IsDefined(type, typeof(EntityContractDeclarationAttribute))).ToArray();
            var targetBaseFolderPath   = Path.GetFullPath(@"../../../../Product.Generated/");
            var targetBaseFolder       = new DirectoryInfo(targetBaseFolderPath);

            if (!targetBaseFolder.Exists)
            {
                targetBaseFolder.Create();
            }

            foreach (var typeDeclaringEntityContract in entityDeclarationTypes)
            {
                var entityCodeGenModel = new EntityContractDeclarationModel(typeDeclaringEntityContract);
                var subDirPath         = entityCodeGenModel.DeclaringInterfaceType.Namespace.Replace(auditableEntityType.Namespace, "").TrimStart('.').Replace(".", @"/");
                var targetDirectory    = string.IsNullOrWhiteSpace(subDirPath)
                    ? targetBaseFolder
                    : targetBaseFolder.CreateSubdirectory(subDirPath);

                string filePath = Path.Combine(targetDirectory.FullName, $"I{entityCodeGenModel.FriendlyName}.cs");
                using (System.IO.FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.ReadWrite))
                {
                    using (var writer = new System.IO.StreamWriter(fs, Encoding.UTF8, 4096))
                    {
                        var entityInterfaceGenerator = new EntityInterfaceGenerator();
                        entityInterfaceGenerator.Generate(writer, entityCodeGenModel, entityCodeGenModel.EntityContractDeclarationAttribute.Namespace ?? "ProductName.Data.Model");
                    }
                }
            }
        }
Example #2
0
 public DataGeneratorGenerator(string projectName, EntityInterfaceGenerator entityInterface, DataFactoryInterfaceGenerator dataFactoryInterface, IList <EntityGenerator> entities, StorageInterfaceGenerator storageInterface) : base(projectName, "DataGenerators", "DataGenerator", typeof(DataGeneratorTemplate))
 {
     StorageInterface     = storageInterface;
     EntityInterface      = entityInterface;
     DataFactoryInterface = dataFactoryInterface;
     Entities             = entities.ToList();
 }
Example #3
0
 public AzureSqlDatabaseContextGenerator(string projectName, QueryGenerator query, IList <EntityGenerator> entities, EntityInterfaceGenerator entityInterface, StorageInterfaceGenerator storageInterface, AzureSQLDatabase modelParameters, DataGeneratorGenerator dataGenerator) : base(projectName, modelParameters.Name, modelParameters.Name + "AzureSqlDatabaseContext", typeof(AzureSqlDatabaseContextTemplate), modelParameters, modelParameters.Name)
 {
     DataGenerator    = dataGenerator;
     StorageInterface = storageInterface;
     Query            = query;
     Entities         = entities.Where(x => modelParameters.EntitySets.Select(y => y.EntityName).ToList().Contains(x.Name)).ToList();
     EntityInterface  = entityInterface;
 }
 public DataFactoryInterfaceGenerator(string projectName, EntityInterfaceGenerator entityInterfaceGenerator)
     : base(projectName, "Interfaces", "IDataFactory", typeof(DataFactoryInterfaceTemplate))
 {
     EntityInterface = entityInterfaceGenerator;
 }