Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            try
            {
                SonFact.init("server=localhost;database=LLR;uid=sa;pwd=123456Aa;Max Pool Size=1000");

                Console.WriteLine("=====================");
                Console.WriteLine("Generator Start...");
                Console.WriteLine("=====================");

                GeneratorCore.Generate("TrainLearner");

                Console.WriteLine("=====================");
                Console.WriteLine("Generator Success!");
                Console.WriteLine("=====================");
                Console.WriteLine("Press Any Key To Exit!");
            }
            catch (Exception ex)
            {
                Console.WriteLine("Generator Error:" + ex.Message);
            }
            finally
            {
                Console.ReadKey();
            }
        }
        public static IEnumerable <string> GenerateCode(string jsonSchema, string defaultNamespace, bool namespaceIsForced)
        {
            var sources = new List <string>();

            IEnumerable <TypeSchema> schemas = Utils.CodeGenerator.ResolveCodeGeneratingSchemas(jsonSchema);

            foreach (TypeSchema schema in schemas)
            {
                using (var memoryStream = new MemoryStream())
                {
                    GeneratorCore.Generate(schema, defaultNamespace, namespaceIsForced, memoryStream);
                    memoryStream.Flush();
                    var reader = new StreamReader(memoryStream, new UTF8Encoding());
                    memoryStream.Seek(0, SeekOrigin.Begin);
                    sources.Add(reader.ReadToEnd());
                }
            }

            return(sources);
        }
        /// <summary>
        /// Generate Entity Class Files from Postgresql.
        /// </summary>
        /// <param name="connectionString">Connection String to Postgresql Database.</param>
        /// <param name="nameSpace">Namespace of generated Entity class.</param>
        /// <param name="outputFolder">Output folder (optional)</param>
        /// <param name="schema">Schema of Table to generate Entity class (optional)</param>
        public async Task GenerateFileAsync(
            [Option("c", "Connection String to Postgresql Database.")]string connectionString,
            [Option("n", "Namespace of generated Entity class.")]string nameSpace,
            [Option("o", "Output folder (optional)")]string? outputFolder = null,
            [Option("s", "Schema of Table to generate Entity class (optional)")]string? schema = null)
        {
            if (nameSpace is null)
                throw new ArgumentNullException(nameof(nameSpace));
            if (string.IsNullOrWhiteSpace(nameSpace))
                throw new ArgumentException(nameof(nameSpace) + " is required.", nameof(nameSpace));

            var repository = new PgTableInfoRepository(connectionString, schema);
            var generator = new GeneratorCore(repository);
            foreach (var (fileName, text) in await generator.GenerateSourceFileAsync(nameSpace))
            {
                Context.Logger.LogInformation($"Write {fileName}");
                string filePath = string.IsNullOrEmpty(outputFolder)
                ? Path.Combine(Environment.CurrentDirectory, fileName)
                : Path.Combine(outputFolder, fileName);
                await File.AppendAllTextAsync(filePath, text, UTF8Encoding.Default, Context.CancellationToken);
            }
        }