Ejemplo n.º 1
0
        public static ApiControllerTemplate Generate(Table table)
        {
            var config = new ApiControllerTemplate
            {
                Namespace = table.SchemaName,
                TypeName  = table.Name.LegalCsharpName,
                IncludeUniqueKeyActions    = table.HasUniqueKeys,
                GetByUniqueKeyTemplates    = new List <GetByIdApiActionTemplate>(),
                EditByUniqueKeyTemplates   = new List <EditApiActionTemplate>(),
                DeleteByUniqueKeyTemplates = new List <DeleteApiActionTemplate>(),
                ListApiActionTemplate      = ConfigureListApiActionTemplate(table),
                GetByIdApiActionTemplate   = ConfigureGetByIdApiActionTemplate(table),
                CreateApiActionTemplate    = ConfigureCreateApiActionTemplate(table),
                EditApiActionTemplate      = ConfigureEditApiActionTemplate(table),
                DeleteApiActionTemplate    = ConfigureDeleteApiActionTemplate(table)
            };

            if (table.HasUniqueKeys)
            {
                var uniqueKeyGroups = table.Constraints.Where(x => x.ConstraintType == ConstraintType.Unique).ToList().GroupBy(x => x.ConstraintName);

                foreach (var group in uniqueKeyGroups)
                {
                    config.GetByUniqueKeyTemplates.Add(ConfigureGetByUniqueKeyTemplate(table, group));
                    config.EditByUniqueKeyTemplates.Add(ConfigureEditByUniqueKeyTemplate(table, group));
                    config.DeleteByUniqueKeyTemplates.Add(ConfigureDeleteByUniqueKeyTemplate(table, group));
                }
            }

            return(config);
        }
Ejemplo n.º 2
0
        public void MongodbCreate_Test_Code()
        {
            var types       = BaseTemplate.GetMongoEntityTypes();
            var typeService = Resolve <ITypeService>();

            foreach (var type in types)
            {
                ServcieTemplate.Create(type);
                RepositroyTemplate.Create(type);
                ApiControllerTemplate.CreateApiController(type, "ObjectId");
            }
        }
Ejemplo n.º 3
0
        public void SqlServer_Code()
        {
            Resolve <ITableService>().Init();
            var tables      = Resolve <ITableService>().GetList(r => r.TableType == TableType.SqlServer);
            var typeService = Resolve <ITypeService>();

            foreach (var item in tables)
            {
                var type = item.Type.GetTypeByFullName();
                Assert.NotNull(type);
                ServcieTemplate.Create(type);
                RepositroyTemplate.Create(type);
                ApiControllerTemplate.CreateApiController(type, "long");
            }
        }
Ejemplo n.º 4
0
        public void TestCreateCode_testSingle()
        {
            var type = typeof(PostRole);

            //   var type = typeof(IAutoReportService);
            ServcieTemplate.Create(type);
            RepositroyTemplate.Create(type);
            ApiControllerTemplate.CreateApiController(type, "ObjectId");
            var typeService = Resolve <ITypeService>();
            // AdminControllerTemplate.Create(type, "ObjectId", typeService);

            // type = typeof(CustomShopRecord);
            //ServcieTemplate.Create(type);
            //RepositroyTemplate.Create(type);
            //ApiControllerTemplate.CreateApiController(type, "ObjectId");
        }
Ejemplo n.º 5
0
        public static string Render(ApiControllerTemplate configuration)
        {
            var template = new Template(TemplateContent.ApiController, StartDelimiter, EndDelimiter);

            template.Add(SharedTemplateKeys.GeneratedCodeDisclaimer, TemplateContent.GeneratedCodeDisclaimer);
            template.Add(SharedTemplateKeys.ObjectNamespace, configuration.Namespace);
            template.Add(SharedTemplateKeys.ObjectTypeName, configuration.TypeName);

            if (configuration.IncludeUniqueKeyActions)
            {
                var getByUniqueKeyActionsBuilder = new StringBuilder();
                foreach (var item in configuration.GetByUniqueKeyTemplates)
                {
                    getByUniqueKeyActionsBuilder.AppendLine(RenderGetByUniqueKeyAction(item, configuration.Namespace, configuration.TypeName));
                }
                template.Add(SharedTemplateKeys.GetByUniqueKeyActions, getByUniqueKeyActionsBuilder.ToString());

                var editByUniqueKeyActionsBuilder = new StringBuilder();
                foreach (var item in configuration.EditByUniqueKeyTemplates)
                {
                    editByUniqueKeyActionsBuilder.AppendLine(RenderEditByUniqueKeyAction(item, configuration.Namespace, configuration.TypeName));
                }
                template.Add(SharedTemplateKeys.EditByUniqueKeyActions, editByUniqueKeyActionsBuilder.ToString());

                var deleteByUniqueKeyActionsBuilder = new StringBuilder();
                foreach (var item in configuration.DeleteByUniqueKeyTemplates)
                {
                    deleteByUniqueKeyActionsBuilder.AppendLine(RenderDeleteByUniqueKeyAction(item, configuration.Namespace, configuration.TypeName));
                }
                template.Add(SharedTemplateKeys.DeleteByUniqueKeyActions, deleteByUniqueKeyActionsBuilder.ToString());
            }
            else
            {
                template.Add(SharedTemplateKeys.GetByUniqueKeyActions, $"{Tab}{Tab}// No {nameof(SharedTemplateKeys.GetByUniqueKeyActions)} generated");
                template.Add(SharedTemplateKeys.EditByUniqueKeyActions, $"{Tab}{Tab}// No {nameof(SharedTemplateKeys.EditByUniqueKeyActions)} generated");
                template.Add(SharedTemplateKeys.DeleteByUniqueKeyActions, $"{Tab}{Tab}// No {nameof(SharedTemplateKeys.DeleteByUniqueKeyActions)} generated");
            }

            template.Add(SharedTemplateKeys.ListAction, RenderListAction(configuration.ListApiActionTemplate, configuration.Namespace, configuration.TypeName));
            template.Add(SharedTemplateKeys.GetByIdAction, RenderGetByIdAction(configuration.GetByIdApiActionTemplate, configuration.Namespace, configuration.TypeName));
            template.Add(SharedTemplateKeys.CreateAction, RenderCreateAction(configuration.CreateApiActionTemplate, configuration.Namespace, configuration.TypeName));
            template.Add(SharedTemplateKeys.EditAction, RenderEditAction(configuration.EditApiActionTemplate, configuration.Namespace, configuration.TypeName));
            template.Add(SharedTemplateKeys.DeleteAction, RenderDeleteAction(configuration.DeleteApiActionTemplate, configuration.Namespace, configuration.TypeName));

            return(template.Render());
        }
Ejemplo n.º 6
0
        public void MongodbCreate_Code()
        {
            Resolve <ITableService>().Init();
            var tables = Resolve <ITableService>().GetList(r => r.TableType == TableType.Mongodb);

            tables = tables.Where(r => !r.Type.Contains("Base")).ToList();
            var typeService = Resolve <ITypeService>();

            foreach (var item in tables)
            {
                var type = item.Type.GetTypeByFullName();
                Assert.NotNull(type);
                ServcieTemplate.Create(type);
                RepositroyTemplate.Create(type);
                ApiControllerTemplate.CreateApiController(type, "ObjectId");
            }
        }
Ejemplo n.º 7
0
        private void CreateType(Module module, string moduleFolderBusinesses, string moduleFolderContracts, string moduleFolderControllers, GeneratorType type)
        {
            // create controller
            var act = new ApiControllerTemplate(projectName, type, module.ModuleName);

            TransformText(act, $"{moduleFolderControllers}\\{type.Name}Controller.cs");

            // create IBusiness interface for business class
            var ibt = new IBusinessTemplate(projectName, type, module.ModuleName);

            TransformText(ibt, $"{moduleFolderContracts}\\I{type.Name}Business.cs");

            // create Business classes
            var bt = new BusinessTemplate(projectName, type, module.ModuleName);

            TransformText(bt, $"{moduleFolderBusinesses}\\{type.Name}Business.cs");
        }
Ejemplo n.º 8
0
        public void CreateCode(Type type, string entityPath)
        {
            var keyIdType = Reflection.GetMemberType(type, "Id");

            if (keyIdType == null)
            {
                Console.WriteLine($@"{type.Name}非实体,请重新输入");
                return;
            }

            var idType = "long";

            if (keyIdType.Name.Contains("ObjectId"))
            {
                idType = "ObjectId";
            }

            ServcieTemplate.Create(type, idType, entityPath);
            //Console.WriteLine(@"服务代码已生成");
            RepositroyTemplate.Create(type, idType, entityPath);
            //Console.WriteLine(@"仓储代码已生成");
            ApiControllerTemplate.CreateApiController(type, idType, entityPath);
            //Console.WriteLine(@"Api接口代码已生成");
        }