public override void GenerateMigrationMetadataClass(
            string @namespace,
            string className,
            IMigrationMetadata migration,
            IndentedStringBuilder stringBuilder)
        {
            foreach (var ns in GetMetadataDefaultNamespaces()
                     .Concat(ModelCodeGenerator.GetNamespaces(migration.TargetModel))
                     .OrderBy(n => n)
                     .Distinct())
            {
                stringBuilder
                .Append("using ")
                .Append(ns)
                .AppendLine(";");
            }

            stringBuilder
            .AppendLine()
            .Append("namespace ")
            .AppendLine(@namespace)
            .AppendLine("{");

            using (stringBuilder.Indent())
            {
                stringBuilder
                .Append("public partial class ")
                .Append(className)
                .AppendLine(" : IMigrationMetadata")
                .AppendLine("{");

                using (stringBuilder.Indent())
                {
                    GenerateMigrationProperty(
                        "string IMigrationMetadata.MigrationId",
                        () => stringBuilder
                        .Append("return ")
                        .Append(GenerateLiteral(migration.MigrationId))
                        .Append(";"),
                        stringBuilder);

                    stringBuilder.AppendLine().AppendLine();

                    GenerateMigrationProperty(
                        "IModel IMigrationMetadata.TargetModel",
                        () => ModelCodeGenerator.Generate(migration.TargetModel, stringBuilder),
                        stringBuilder);
                }

                stringBuilder
                .AppendLine()
                .Append("}");
            }

            stringBuilder
            .AppendLine()
            .Append("}");
        }
Example #2
0
        public void Execute(GeneratorExecutionContext context)
        {
            if (!RegisterAttributes(context, out var receiver, out var compilation))
            {
                return;
            }

            if (!context.AnalyzerConfigOptions.GlobalOptions.TryGetValue(
                    BuildPropertyOutputPath,
                    out string?typeScriptGeneratorOutputPath))
            {
                return;
            }

            if (!Directory.Exists(typeScriptGeneratorOutputPath))
            {
                Directory.CreateDirectory(typeScriptGeneratorOutputPath);
            }

            // get the newly bound attributes
            var includeAttributeSymbol = compilation !.GetTypeByMetadataName(IncludeAttributeFullName);

            if (includeAttributeSymbol is null)
            {
                throw new SymbolNotFoundException();
            }

            var customNameAttributeSymbol = compilation !.GetTypeByMetadataName(CustomNameAttributeFullName);

            if (customNameAttributeSymbol is null)
            {
                throw new SymbolNotFoundException();
            }

            ////CleanOutputFolders(TargetPath);
            // loop over the candidate fields, and keep the ones that are actually annotated
            var enumSymbols = FilterEnumSymbols(receiver !, compilation, includeAttributeSymbol !);

            if (enumSymbols.Count > 0)
            {
                var enumHelperGenerator = new EnumHelperGenerator();
                enumHelperGenerator.Generate(typeScriptGeneratorOutputPath);
            }

            var enumCodeGenerator = new EnumCodeGenerator();

            enumCodeGenerator.Generate(
                typeScriptGeneratorOutputPath,
                compilation !,
                enumSymbols);
            var classSymbols       = FilterClassSymbols(receiver !, compilation, includeAttributeSymbol !);
            var modelCodeGenerator = new ModelCodeGenerator();

            modelCodeGenerator.Generate(typeScriptGeneratorOutputPath, compilation, classSymbols);
        }
        protected override async Task OnInitialization()
        {
            await base.OnInitialization();

            ImportArgumentes = AsyncObservableCollection <TableImportArgumentsViewModel> .Create();

            _modelGenerator = new ModelCodeGenerator();
            _repositoryInterfaceGenerator = new RepositoryInterfaceCodeGenerator();
            _linqRepositoryGenerator      = new LinqRepositoryCodeGenerator();
            _restRepositoryGenerator      = new RestRepositoryCodeGenerator();
        }
Example #4
0
        public override void GenerateMigrationMetadataClass(
            string @namespace,
            string className,
            MigrationInfo migration,
            Type contextType,
            IndentedStringBuilder stringBuilder)
        {
            Check.NotEmpty(@namespace, "namespace");
            Check.NotEmpty(className, "className");
            Check.NotNull(migration, "migration");
            Check.NotNull(contextType, "contextType");
            Check.NotNull(stringBuilder, "stringBuilder");

            foreach (var ns in GetMetadataNamespaces(migration, contextType).OrderBy(n => n).Distinct())
            {
                stringBuilder
                .Append("using ")
                .Append(ns)
                .AppendLine(";");
            }

            stringBuilder
            .AppendLine()
            .Append("namespace ")
            .AppendLine(@namespace)
            .AppendLine("{");

            using (stringBuilder.Indent())
            {
                stringBuilder
                .Append("[ContextType(typeof(")
                .Append(contextType.GetNestedName())
                .AppendLine("))]")
                .Append("public partial class ")
                .Append(className)
                .AppendLine(" : IMigrationMetadata")
                .AppendLine("{");

                using (stringBuilder.Indent())
                {
                    GenerateMigrationProperty(
                        "string IMigrationMetadata.MigrationId",
                        () => stringBuilder
                        .Append("return ")
                        .Append(GenerateLiteral(migration.MigrationId))
                        .Append(";"),
                        stringBuilder);

                    stringBuilder.AppendLine().AppendLine();

                    GenerateMigrationProperty(
                        "string IMigrationMetadata.ProductVersion",
                        () => stringBuilder
                        .Append("return ")
                        .Append(GenerateLiteral(migration.ProductVersion))
                        .Append(";"),
                        stringBuilder);

                    stringBuilder.AppendLine().AppendLine();

                    GenerateMigrationProperty(
                        "IModel IMigrationMetadata.TargetModel",
                        () => ModelCodeGenerator.Generate(migration.TargetModel, stringBuilder),
                        stringBuilder);
                }

                stringBuilder
                .AppendLine()
                .Append("}");
            }

            stringBuilder
            .AppendLine()
            .Append("}");
        }