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"); } } } }
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(); }
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; }