示例#1
0
        private static void GenerateSettingsFiles(string ms, string pg, string d, string u, string p, FileInfo o)
        {
            IMetadataService metadataService = new MetadataService();

            if (!string.IsNullOrWhiteSpace(ms))
            {
                metadataService.UseDatabaseProvider(DatabaseProviders.SQLServer);
                metadataService.ConfigureConnectionString(ms, d, u, p);
            }
            else
            {
                metadataService.UseDatabaseProvider(DatabaseProviders.PostgreSQL);
                metadataService.ConfigureConnectionString(pg, d, u, p);
            }

            InfoBase infoBase = metadataService.LoadInfoBase();

            MessageConsumerSettings consumerSettings = CreateConsumerSettings(infoBase, metadataService);
            MessageProducerSettings producerSettings = CreateProducerSettings(infoBase, metadataService);

            string consumerPath = Path.Combine(o.FullName, CONSUMER_SETTINGS_FILE_NAME);
            string producerPath = Path.Combine(o.FullName, PRODUCER_SETTINGS_FILE_NAME);

            SaveConsumerSettings(consumerPath, consumerSettings);
            SaveProducerSettings(producerPath, producerSettings);
        }
示例#2
0
        private static void ConfigureConsumerSettings(IServiceCollection services, string catalogPath)
        {
            MessageConsumerSettings settings = new MessageConsumerSettings();
            IConfigurationRoot      config   = new ConfigurationBuilder()
                                               .SetBasePath(catalogPath)
                                               .AddJsonFile("consumer-settings.json", optional: false)
                                               .Build();

            config.Bind(settings);
            services.Configure <MessageConsumerSettings>(config);
        }
示例#3
0
        private static void SaveConsumerSettings(string filePath, MessageConsumerSettings consumerSettings)
        {
            JsonSerializerOptions options = new JsonSerializerOptions()
            {
                WriteIndented = true,
                Encoder       = JavaScriptEncoder.Create(UnicodeRanges.All)
            };

            byte[] bytes = JsonSerializer.SerializeToUtf8Bytes(consumerSettings, options);
            string json  = Encoding.UTF8.GetString(bytes);

            using (StreamWriter stream = new StreamWriter(filePath, false, Encoding.UTF8))
            {
                stream.Write(json);
            }
        }
示例#4
0
        private static MessageConsumerSettings CreateConsumerSettings(IMetadataService metadataService)
        {
            MessageConsumerSettings settings = new MessageConsumerSettings();

            //ApplicationObject metaObject = infoBase.InformationRegisters.Values
            //    .Where(с => с.Name == CONSUMER_TABLE_QUEUE_NAME).FirstOrDefault();

            //if (metaObject == null) return settings;

            settings.DatabaseSettings = new Consumer.DatabaseSettings()
            {
                DatabaseProvider = metadataService.DatabaseProvider,
                ConnectionString = metadataService.ConnectionString
            };

            return(settings);
        }
示例#5
0
        private static MessageConsumerSettings CreateConsumerSettings(InfoBase infoBase, IMetadataService metadataService)
        {
            MessageConsumerSettings settings = new MessageConsumerSettings();

            MetadataObject metaObject = infoBase.InformationRegisters.Values.Where(с => с.Name == CONSUMER_TABLE_QUEUE_NAME).FirstOrDefault();

            if (metaObject == null)
            {
                return(settings);
            }

            metadataService.EnrichFromDatabase(metaObject);

            settings.DatabaseSettings = new Consumer.DatabaseSettings()
            {
                DatabaseProvider = metadataService.DatabaseProvider,
                ConnectionString = metadataService.ConnectionString,
                DatabaseQueue    = new Consumer.DatabaseQueue()
                {
                    TableName  = metaObject.TableName,
                    ObjectName = string.Format("{0}.{1}", METAOBJECT_BASE_NAME, CONSUMER_TABLE_QUEUE_NAME)
                }
            };
            foreach (MetadataProperty property in metaObject.Properties)
            {
                foreach (DatabaseField field in property.Fields)
                {
                    settings.DatabaseSettings.DatabaseQueue.Fields.Add(new Consumer.TableField()
                    {
                        Name     = field.Name,
                        Property = property.Name
                    });
                }
            }

            return(settings);
        }