Exemple #1
0
        private void UpdateBrandColour()
        {
            var model    = new ColorModel(_settings.NewAppSettings.BrandColour);
            var template = Generator.GetCompiledTemplate("main.dart.colorfragment");
            var codeFile = new CodeFile {
                Contents = template(model), IsFragment = true, Name = "main.dart", RelativePath = @".\lib\"
            };

            _fileWriter.ApplyCodeFiles(new List <CodeFile>()
            {
                codeFile
            }, _flutterRootDirectory);
        }
Exemple #2
0
        public void Generate(ITypeProvider typeProvider)
        {
            Log.Information("Starting Code Generation in {RootDirectory}", _settings.RootDirectory);

            if (_settings.NewAppSettings?.CreateNew == true)
            {
                var newProjectGen    = new NewProjectGenerator(_settings, _fs);
                var newProjectResult = newProjectGen.Generate();
                if (newProjectResult == false)
                {
                    Log.Error("Error generating new project - exiting");
                    return;
                }
            }

            if (_settings.AddGeneratedOptionsToDatabase)
            {
                var sb = new StringBuilder();
                sb.AppendLine("-- generated by a tool");
                typeProvider.DropGeneratedOperations(_settings, sb);
                typeProvider.DropGeneratedTypes(_settings, sb);
                var dropFile = new CodeFile()
                {
                    Contents = sb.ToString(), Name = "drop_generated.sql"
                };
                _fileWriter.ApplyCodeFiles(new List <CodeFile> {
                    dropFile
                }, DatabaseScriptsFolder);
                Log.Information("Finishing dropping generated operations");
            }

            var domain = typeProvider.GetDomain(_settings);

            Log.Information("Finished building domain");

            domain.DefaultNamespace = _settings.ApplicationName;

            SetupRootFolder();

            GenerateDbFunctions(domain, _settings.AddGeneratedOptionsToDatabase, typeProvider);
            Log.Information("Finished generating db functions");

            typeProvider.GetOperations(domain);
            Log.Information("Finished adding operations to domain");

            SanityCheckDomain(domain);

            GenerateClasses(domain);
            Log.Information("Finished generating classes");

            GenerateRepositories(domain);
            Log.Information("Finished generating repositories");

            if (_settings.GenerateTestRepos && !string.IsNullOrEmpty(_settings.TestDataDirectory))
            {
                // this is very much a work-in-progress
                GenerateTestRepositories(domain);
                Log.Information("Finished generating test repositories");
            }

            if (domain.ResultTypes.Any(rt => !rt.Ignore))
            {
                GenerateReturnTypes(domain);
                Log.Information("Finished generating return types");
            }

            if (_settings.WebUIType == WebUIType.MVC)
            {
                GenerateControllers(domain);
                GenerateViews(domain);
                GenerateViewModels(domain);
                Log.Information("Finished generating MVC UI");
            }

            if (_settings.WebUIType == WebUIType.React)
            {
                GenerateWebApi(domain);
                GenerateWebApiModels(domain);

                if (!string.IsNullOrEmpty(_settings.OpenApiUri))
                {
                    var openApiDocProvider    = new OpenApiDocumentProvider(_fs, _settings);
                    var openApiDomainProvider = new OpenApiDomainProvider(openApiDocProvider);
                    openApiDomainProvider.AugmentDomainFromOpenApi(domain);
                }

                GenerateClientServiceProxy(domain);
                GenerateClientApiModels(domain);
                GenerateClientPages(domain);
                Log.Information("Finished generating react UI");
            }

            if (_settings.ClientAppTypes.Contains(ClientAppUIType.Flutter))
            {
                var flutterGen = new Flutter.Generator(_fs, _settings, _fileWriter);
                flutterGen.Generate(domain);
            }

            if (_settings.TestDataSize != null && _settings.TestDataSize > 0)
            {
                var testDataGen = new TestDataGenerator();
                var testData    = testDataGen.Generate(domain);
                if (testData.Any())
                {
                    typeProvider.AddTestData(testData);
                }
            }

            Log.Information("Finished Code Generation");
        }