示例#1
0
 public NewInstallStep(HttpContextBase http, IUserService userService, DatabaseBuilder databaseBuilder, IGlobalSettings globalSettings)
 {
     _http            = http;
     _userService     = userService;
     _databaseBuilder = databaseBuilder;
     _globalSettings  = globalSettings;
 }
示例#2
0
 public NewInstallStep(
     IUserService userService,
     DatabaseBuilder databaseBuilder,
     IHttpClientFactory httpClientFactory,
     IOptions <UserPasswordConfigurationSettings> passwordConfiguration,
     IOptions <SecuritySettings> securitySettings,
     IOptionsMonitor <ConnectionStrings> connectionStrings,
     ICookieManager cookieManager,
     IBackOfficeUserManager userManager,
     IDbProviderFactoryCreator dbProviderFactoryCreator,
     IEnumerable <IDatabaseProviderMetadata> databaseProviderMetadata,
     ILocalizedTextService localizedTextService,
     IMetricsConsentService metricsConsentService)
 {
     _userService              = userService ?? throw new ArgumentNullException(nameof(userService));
     _databaseBuilder          = databaseBuilder ?? throw new ArgumentNullException(nameof(databaseBuilder));
     _httpClientFactory        = httpClientFactory;
     _passwordConfiguration    = passwordConfiguration.Value ?? throw new ArgumentNullException(nameof(passwordConfiguration));
     _securitySettings         = securitySettings.Value ?? throw new ArgumentNullException(nameof(securitySettings));
     _connectionStrings        = connectionStrings;
     _cookieManager            = cookieManager;
     _userManager              = userManager ?? throw new ArgumentNullException(nameof(userManager));
     _dbProviderFactoryCreator = dbProviderFactoryCreator ?? throw new ArgumentNullException(nameof(dbProviderFactoryCreator));
     _databaseProviderMetadata = databaseProviderMetadata;
     _localizedTextService     = localizedTextService;
     _metricsConsentService    = metricsConsentService;
 }
    private static void BuildMasterData()
    {
        try {
            CompositeResolver.RegisterAndSetAsDefault(new [] {
                MasterMemoryResolver.Instance,
                GeneratedResolver.Instance,
                StandardResolver.Instance
            });
        } catch { }

        var builder = new DatabaseBuilder();

        builder = BuildParson(builder);
        builder = BuildSkill(builder);
        builder = BuildSkillParameter(builder);

        byte[] data = builder.Build();

        var resourcesDir = $"{Application.dataPath}/Resources";

        Directory.CreateDirectory(resourcesDir);
        var filename = "/master-data.bytes";

        using (var fs = new FileStream(resourcesDir + filename, FileMode.Create)) {
            fs.Write(data, 0, data.Length);
        }

        Debug.Log($"Write byte[] to: {resourcesDir + filename}");

        AssetDatabase.Refresh();
    }
示例#4
0
        public Migrator(
            [NotNull] DbContextConfiguration contextConfiguration,
            [NotNull] HistoryRepository historyRepository,
            [NotNull] MigrationAssembly migrationAssembly,
            [NotNull] DatabaseBuilder databaseBuilder,
            [NotNull] IMigrationOperationSqlGeneratorFactory ddlSqlGeneratorFactory,
            [NotNull] SqlGenerator dmlSqlGenerator,
            [NotNull] SqlStatementExecutor sqlExecutor)
        {
            Check.NotNull(contextConfiguration, "contextConfiguration");
            Check.NotNull(historyRepository, "historyRepository");
            Check.NotNull(migrationAssembly, "migrationAssembly");
            Check.NotNull(databaseBuilder, "databaseBuilder");
            Check.NotNull(ddlSqlGeneratorFactory, "ddlSqlGeneratorFactory");
            Check.NotNull(dmlSqlGenerator, "dmlSqlGenerator");
            Check.NotNull(sqlExecutor, "sqlExecutor");

            _contextConfiguration   = contextConfiguration;
            _historyRepository      = historyRepository;
            _migrationAssembly      = migrationAssembly;
            _databaseBuilder        = databaseBuilder;
            _ddlSqlGeneratorFactory = ddlSqlGeneratorFactory;
            _dmlSqlGenerator        = dmlSqlGenerator;
            _sqlExecutor            = sqlExecutor;
        }
        public void Columns_are_ordered_by_name_with_pk_columns_first_and_fk_columns_last()
        {
            var modelBuider = new BasicModelBuilder();

            modelBuider.Entity("A",
                               b =>
            {
                b.Property <int>("Px");
                b.Property <int>("Py");
                b.Key("Px", "Py");
            });
            modelBuider.Entity("B",
                               b =>
            {
                b.Property <int>("P6");
                b.Property <int>("P5");
                b.Property <int>("P4");
                b.Property <int>("P3");
                b.Property <int>("P2");
                b.Property <int>("P1");
                b.Key("P5", "P2");
                b.ForeignKey("A", "P6", "P4");
                b.ForeignKey("A", "P4", "P5");
            });

            var databaseModel = new DatabaseBuilder().GetDatabase(modelBuider.Model);

            Assert.Equal(2, databaseModel.Tables.Count);
            Assert.Equal(new[] { "Px", "Py" }, databaseModel.Tables[0].Columns.Select(c => c.Name));
            Assert.Equal(new[] { "P5", "P2", "P1", "P3", "P6", "P4" }, databaseModel.Tables[1].Columns.Select(c => c.Name));
        }
示例#6
0
 public void Print()
 {
     foreach (var pair in _itemCostByItemLevel.OrderBy(i => i.Key))
     {
         DatabaseBuilder.PrintLine($"ilvl: {pair.Key}, cost: {pair.Value.Cost}, item: {pair.Value.Item.en.name}");
     }
 }
        public SilentUpgradeComponent(IRuntimeState runtimeState,
                                      IGlobalSettings settings,
                                      IProfilingLogger logger,
                                      IUmbracoDatabaseFactory databaseFactory,
                                      DatabaseBuilder databaseBuilder)
        {
            this.runtimeState   = runtimeState;
            this.globalSettings = settings;
            this.logger         = logger;

            this.databaseFactory = databaseFactory;
            this.databaseBuilder = databaseBuilder;

            // Check to see if Silent Upgrade is on in web.config
            //  <add key="SilientUpgrade" value="true" />
            var silentUpgrade = ConfigurationManager.AppSettings["SilentUpgrade"].TryConvertTo <bool>();

            if (silentUpgrade.Success && silentUpgrade.Result)
            {
                logger.Info <SilentUpgradeComposer>("SilentUpgrade is On");
                SilentUpgradeOn = true;

                // we only need to worry about the request when we are on.
                UmbracoModule.EndRequest += UmbracoModule_EndRequest;
            }
            else
            {
                logger.Info <SilentUpgradeComposer>("SilentUpgrade is Off");
            }
        }
示例#8
0
        void WriteFiles()
        {
            var writing = Stopwatch.StartNew();

            var dataUpdate = new UpdatePackage("data");
            var jsout = new JsOutput(dataUpdate);
            jsout.Write();

            // Has to be after everything else because partials are modified here.
            var searchUpdate = new UpdatePackage("search");
            var sqlout = new SearchOutput(jsout, searchUpdate);
            sqlout.Write();

            if (dataUpdate.RowCount > 0)
            {
                DatabaseBuilder.PrintLine($"Updating {dataUpdate.RowCount} data rows.");
                dataUpdate.Write();
            }

            if (searchUpdate.RowCount > 0)
            {
                DatabaseBuilder.PrintLine($"Updating {searchUpdate.RowCount} data rows.");
                searchUpdate.Write();
            }

            writing.Stop();
            DatabaseBuilder.PrintLine($"Writing elapsed: {writing.Elapsed}");
        }
        public async Task CreateContainerAsync_PostgreSql_HelloWorld()
        {
            DatabaseContainer container = null;

            try
            {
                container = await DatabaseBuilder.CreateContainerAsync(DatabaseType.PostgreSql);

                var connection = await container.CreateConnectionAsync <Npgsql.NpgsqlConnection>();

                using (var cmd = connection.CreateCommand())
                {
                    cmd.CommandText = "select 'Hello World!'";
                    var msg = await cmd.ExecuteScalarAsync();

                    Assert.That(msg, Is.EqualTo("Hello World!"));
                }
            }
            finally
            {
                if (container != null)
                {
                    await container.StopAsync();
                }
            }
        }
示例#10
0
        dynamic BuildSupplementalCoffer(dynamic instance, dynamic jCoffer)
        {
            dynamic coffer = new JObject();

            var cofferItems = new JArray();

            coffer.items = cofferItems;

            foreach (dynamic jTreasureItem in jCoffer.items as JArray)
            {
                if (_builder.Db.ItemsByName.TryGetValue(
                        SanitizeItemName(jTreasureItem.Value), out dynamic item))
                {
                    cofferItems.Add(item.id);
                    BuildItemRelationship(item, instance, true);
                }
                else
                {
                    DatabaseBuilder.PrintLine($"Item named {jTreasureItem.Value} not found.");
                    continue;
                }
            }

            if (jCoffer.coords != null)
            {
                var coords = new JArray();
                coffer.coords = coords;
                coords.Add(jCoffer.coords.x);
                coords.Add(jCoffer.coords.y);
            }

            return(coffer);
        }
示例#11
0
        List <JsPartial> GetPartials(object source, string lang, bool isNestedOnly)
        {
            if (!_db.DataReferencesBySource.TryGetValue(source, out var list))
            {
                return(null);
            }

            var partials = new List <JsPartial>();

            foreach (var dataRef in list)
            {
                if (isNestedOnly && !dataRef.IsNested)
                {
                    continue;
                }
                try
                {
                    dynamic obj = _partialsByLangTypeById[Tuple.Create(lang, dataRef.Type)][dataRef.Id];
                    if (IsPartialObjectSkipped(dataRef, obj))
                    {
                        continue;
                    }

                    var partial = new JsPartial(dataRef.Type, dataRef.Id, obj);
                    partials.Add(partial);
                } catch (KeyNotFoundException ignored)
                {
                    DatabaseBuilder.PrintLine($"Couldn't find Partial of type '{dataRef.Type}' with ID '{dataRef.Id}'.");
                }
            }
            return(partials);
        }
示例#12
0
        public void Build_fills_in_names_if_StorageName_not_specified()
        {
            // TODO: Add and Index when supported by DatabaseBuilder.

            var modelBuilder = new ModelBuilder();

            modelBuilder.Entity <Blog>()
            .Key(k => k.BlogId)
            .Properties(p => p.Property(e => e.BlogId));

            modelBuilder.Entity <Post>()
            .Key(k => k.PostId)
            .Properties(p =>
            {
                p.Property(e => e.PostId);
                p.Property(e => e.BelongsToBlogId);
            })
            .ForeignKeys(f => f.ForeignKey <Blog>(p => p.BelongsToBlogId));

            var database = new DatabaseBuilder().GetDatabase(modelBuilder.Model);

            Assert.True(database.Tables.Any(t => t.Name == "Blog"));
            Assert.True(database.Tables.Any(t => t.Name == "Post"));

            Assert.Equal("BlogId", database.GetTable("Blog").Columns.Single().Name);
            Assert.Equal("PostId", database.GetTable("Post").Columns[1].Name);
            Assert.Equal("BelongsToBlogId", database.GetTable("Post").Columns[0].Name);

            Assert.Equal("PK_Blog", database.GetTable("Blog").PrimaryKey.Name);
            Assert.Equal("PK_Post", database.GetTable("Post").PrimaryKey.Name);

            Assert.Equal("FK_Post_Blog_BelongsToBlogId", database.GetTable("Post").ForeignKeys.Single().Name);
        }
示例#13
0
        public override void Start()
        {
            foreach (var sJob in _builder.Sheet <Saint.ClassJob>())
            {
                var name = sJob.Name.ToString();
                if (string.IsNullOrEmpty(name))
                {
                    DatabaseBuilder.PrintLine($"Skipping unreleased job {sJob.Key}!");
                    continue;
                }

                dynamic job = new JObject();
                job.id            = sJob.Key;
                job.abbreviation  = sJob.Abbreviation.ToString();
                job.name          = Utils.CapitalizeWords(name);
                job.category      = sJob.ClassJobCategory.Name.ToString();
                job.startingLevel = sJob.StartingLevel;

                if (sJob.SoulCrystal != null && sJob.SoulCrystal.Key != 0)
                {
                    job.isJob = 1;
                }

                var iconPath = JobIconPath + sJob.Abbreviation.ToString() + ".png";
                if (!File.Exists(iconPath))
                {
                    var icon = sJob.Icon.GetImage();
                    icon.Save(iconPath, System.Drawing.Imaging.ImageFormat.Png);
                }

                _builder.Db.Jobs.Add(job);
            }
        }
示例#14
0
 public NewInstallStep(
     IUserService userService,
     DatabaseBuilder databaseBuilder,
     IHttpClientFactory httpClientFactory,
     IOptions <UserPasswordConfigurationSettings> passwordConfiguration,
     IOptions <SecuritySettings> securitySettings,
     IOptionsMonitor <ConnectionStrings> connectionStrings,
     ICookieManager cookieManager,
     IBackOfficeUserManager userManager,
     IDbProviderFactoryCreator dbProviderFactoryCreator,
     IEnumerable <IDatabaseProviderMetadata> databaseProviderMetadata)
     : this(
         userService,
         databaseBuilder,
         httpClientFactory,
         passwordConfiguration,
         securitySettings,
         connectionStrings,
         cookieManager,
         userManager,
         dbProviderFactoryCreator,
         databaseProviderMetadata,
         StaticServiceProvider.Instance.GetRequiredService <ILocalizedTextService>(),
         StaticServiceProvider.Instance.GetRequiredService <IMetricsConsentService>())
 {
 }
        public static void Calculate(DatabaseBuilder builder, ItemSourceComplexity complexity)
        {
            var rareItemsById = builder.Db.Items
                                .Where(i => i.craft == null)
                                .Where(i => ((JToken)i.id).Type == JTokenType.Integer)
                                .Where(i => complexity.GetNqComplexity((int)i.id) >= 80)
                                .ToDictionary(i => (int)i.id);

            var candidateItems = builder.Db.Items
                                 .Where(i => i.craft != null)
                                 .Where(i => i.desynthSkill != null)
                                 .Where(i => ((JToken)i.id).Type == JTokenType.Integer)
                                 .Where(i => complexity.GetNqComplexity((int)i.id) <= 75);

            var lines = new List <string>();

            foreach (var item in candidateItems)
            {
                foreach (var recipe in item.craft)
                {
                    foreach (var ingredient in recipe.ingredients)
                    {
                        if (rareItemsById.TryGetValue((int)ingredient.id, out var rareIngredientItem))
                        {
                            lines.Add($"{rareIngredientItem.en.name} appears in recipe list of {item.en.name}.");
                        }
                    }
                }
            }

            File.WriteAllLines("rare-desynth.txt", lines);
        }
        private static InversionContainer build_items_for_container(ConfigurationPropertyHolder configuration_property_holder)
        {
            configuration_property_holder.DatabaseType = DatabaseTypeSynonyms.convert_database_type_synonyms(configuration_property_holder.DatabaseType);

            set_up_current_mappings(configuration_property_holder);

            Logger multiLogger = GetMultiLogger(configuration_property_holder);

            var container = new StructureMap.Container(cfg =>
            {
                cfg.For <ConfigurationPropertyHolder>().Singleton().Use(configuration_property_holder);
                cfg.For <FileSystemAccess>().Singleton().Use(context => new DotNetFileSystemAccess(configuration_property_holder));
                cfg.For <Database>().Singleton().Use(context => DatabaseBuilder.build(context.GetInstance <FileSystemAccess>(), configuration_property_holder));
                cfg.For <KnownFolders>().Singleton().Use(context => KnownFoldersBuilder.build(context.GetInstance <FileSystemAccess>(), configuration_property_holder));
                cfg.For <LogFactory>().Singleton().Use <MultipleLoggerLogFactory>();
                //cfg.For<Logger>().Singleton().Use(context => LogBuilder.build(context.GetInstance<FileSystemAccess>(), configuration_property_holder));
                cfg.For <Logger>().Use(multiLogger);
                cfg.For <CryptographicService>().Singleton().Use <MD5CryptographicService>();
                cfg.For <DatabaseMigrator>().Singleton().Use(context => new DefaultDatabaseMigrator(context.GetInstance <Database>(), context.GetInstance <CryptographicService>(), configuration_property_holder));
                cfg.For <VersionResolver>().Singleton().Use(
                    context => VersionResolverBuilder.build(context.GetInstance <FileSystemAccess>(), configuration_property_holder));
                cfg.For <EnvironmentSet>().Singleton().Use(new DefaultEnvironmentSet(configuration_property_holder));
                cfg.For <Initializer>().Singleton().Use <FileSystemInitializer>();
            });

            // forcing a build of database to initialize connections so we can be sure server/database have values
            Database database = container.GetInstance <Database>();

            database.initialize_connections(configuration_property_holder);
            configuration_property_holder.ServerName       = database.server_name;
            configuration_property_holder.DatabaseName     = database.database_name;
            configuration_property_holder.ConnectionString = database.connection_string;

            return(new StructureMapContainer(container));
        }
示例#17
0
        public static void Build()
        {
            try
            {
                MessagePackResolver.SetupMessagePackResolver();
            }
            catch
            {
                // ignored
            }

            var builder = new DatabaseBuilder();
            builder = BuildParson(builder);
            builder = BuildSkill(builder);
            builder = BuildSkillParameter(builder);

            byte[] data = builder.Build();

            string resourcesDir = $"{Application.dataPath}/Resources/";
            string fileName = MasterDataDb.MASTER_RESOURCE_PATH + ".bytes";
            Directory.CreateDirectory(resourcesDir);

            using (var fs = new FileStream(resourcesDir + fileName, FileMode.Create))
            {
                fs.Write(data, 0, data.Length);
            }

            Debug.Log($"Write byte[] to: {resourcesDir + fileName}");

            AssetDatabase.Refresh();
        }
示例#18
0
        protected virtual IReadOnlyList <SqlStatement> GenerateUpdateDatabaseSql(
            IReadOnlyList <IMigrationMetadata> downgradeMigrations,
            IReadOnlyList <IMigrationMetadata> upgradeMigrations)
        {
            var sqlStatements = new List <SqlStatement>();

            foreach (var migration in downgradeMigrations)
            {
                var database        = DatabaseBuilder.GetDatabase(migration.TargetModel);
                var ddlSqlGenerator = DdlSqlGeneratorFactory.Create(database);

                sqlStatements.AddRange(
                    ddlSqlGenerator.Generate(
                        migration.DowngradeOperations, generateIdempotentSql: true));

                sqlStatements.AddRange(
                    HistoryRepository.GenerateDeleteMigrationSql(migration, DmlSqlGenerator));
            }

            foreach (var migration in upgradeMigrations)
            {
                var database        = DatabaseBuilder.GetDatabase(migration.TargetModel);
                var ddlSqlGenerator = DdlSqlGeneratorFactory.Create(database);

                sqlStatements.AddRange(
                    ddlSqlGenerator.Generate(
                        migration.UpgradeOperations, generateIdempotentSql: true));

                sqlStatements.AddRange(
                    HistoryRepository.GenerateInsertMigrationSql(migration, DmlSqlGenerator));
            }

            return(sqlStatements);
        }
示例#19
0
        //protected WebProxy Proxy = false ? new WebProxy("127.0.0.1", 8081) : null;
        //127.0.0.1:8081
        //8888

        public virtual Database CreateDatabase()
        {
            string env = Environment.GetEnvironmentVariable("DB");

            if (!string.IsNullOrWhiteSpace(env))
            {
                if (!env.StartsWith("http://"))
                {
                    env = $"http://{env}";
                }
                if (!env.EndsWith(":5984"))
                {
                    env = $"{env}:5984";
                }
                Console.WriteLine("using env conn " + env);
                DbLocation = env;
            }

            var conn = new Connection(DbLocation);

            //conn.SetupConfig(cfg => cfg.Proxy = Proxy);
            //conn.Authentication = new BasicAuthentication("admin", "abc123!!");

            return(DatabaseBuilder.Create(DbName, conn)
                   .SetLogger(new Logger())
                   .Build());

            //return new Database(DbName, conn);
        }
示例#20
0
文件: 5_0_0.cs 项目: zendbit/StringDB
        public void WorksIGuess()
        {
            // using (var fs = File.Open("copy.db", FileMode.OpenOrCreate))
            using (var ms = new MemoryStream())
            {
                using (var db = new DatabaseBuilder()
                                .UseIODatabase(builder => builder.UseStringDB(StringDBVersion.v5_0_0, ms, true))
                                .WithTransform(StringTransformer.Default, StringTransformer.Default))
                {
                    db.Insert("test", "value");
                    db.InsertRange(new KeyValuePair <string, string>[]
                    {
                        new KeyValuePair <string, string>("a,", "c,"),
                        new KeyValuePair <string, string>("b,", "d,"),
                    });

                    db.EnumerateAggressively(2)
                    .Should()
                    .BeEquivalentTo
                    (
                        new KeyValuePair <string, string>[]
                    {
                        new KeyValuePair <string, string>("test", "value"),
                        new KeyValuePair <string, string>("a,", "c,"),
                        new KeyValuePair <string, string>("b,", "d,"),
                    }
                    );
                }

                ms.Seek(0, SeekOrigin.Begin);
                // ms.CopyTo(fs);
            }
        }
示例#21
0
        private static MemoryDatabase BuildLargeCacheSet()
        {
            var builder = new DatabaseBuilder();

            // the file contains 1 million password blacklist entries
            var passwordEntries   = File.ReadAllLines("Cache\\Mocks\\passwordblacklist.txt");
            var passwordBlacklist = passwordEntries.Select(entry => new PasswordBlacklist {
                Value = entry
            }).ToList();

            var random = new Random();

            // build a search list by picking one million random values
            _searchList = new List <PasswordBlacklist>();

            for (var i = 0; i <= SearchListCount; i++)
            {
                var index = random.Next(1, SearchListCount - 10);
                var entry = passwordBlacklist[index];

                _searchList.Add(entry);
            }

            builder.Append(passwordBlacklist);

            var data = builder.Build();

            return(new MemoryDatabase(data));
        }
示例#22
0
        public override bool Execute()
        {
            // Load the certificate
            X509Certificate2 certificate = new X509Certificate2(CertificateFile, CertificatePassword);

            if (!certificate.HasPrivateKey)
            {
                Log.LogError("Input certificate must have a private key");
                return(false);
            }

            // Build regex filters
            List <FileFilter> excludeFilters = BuildFileFiltersList(ExcludePatterns);
            List <FileFilter> includeFilters = BuildFileFiltersList(IncludePatterns);

            // Build reporter
            ProgressReporter reporter = new MsBuildLogReporter(Log);

            // Build the database
            DatabaseBuildResult result = DatabaseBuilder.BuildDatabase(OutputFile,
                                                                       EmbedCertificate,
                                                                       InputDirectory,
                                                                       excludeFilters,
                                                                       includeFilters,
                                                                       certificate,
                                                                       reporter);

            return(result.Succeeded);
        }
示例#23
0
        void ExportOrchestrionMusic(int orchestrionId, dynamic orchestrion)
        {
            // Skip if the file is already exported.
            var targetFileName = Path.Combine(_resultMusicPath, orchestrionId + ".ogg");

            if (File.Exists(targetFileName))
            {
                return;
            }

            var sOrchestrionPaths = _builder.Sheet("OrchestrionPath");
            var sPath             = sOrchestrionPaths[orchestrionId];
            var filePath          = sPath.AsString("File").ToString();

            if (!_builder.Realm.Packs.TryGetFile(filePath, out var sFile))
            {
                return;
            }

            var sScdFile = new SaintCoinach.Sound.ScdFile(sFile);

            if (!ExportClip(sScdFile, targetFileName))
            {
                DatabaseBuilder.PrintLine($"No SCD headers for orchestrion #{orchestrionId} {orchestrion.name}");
            }
        }
示例#24
0
        public void Calibrate()
        {
            List <Saint.Item> ItemsToImport = _realm.GameData.GetSheet <Saint.Item>()
                                              .Where(i => !Hacks.IsItemSkipped(i.Name, i.Key)).ToList();

            DatabaseBuilder.PrintLine("Reading icon definition... (1/5)");
            ReadIconDefinition(ItemsToImport);

            DatabaseBuilder.PrintLine("Preparing working directory... (2/5)");
            PrepareDirectory();

            if (_config.Reextract)
            {
                DatabaseBuilder.PrintLine("Extracting in game icons... (3/5)");
                ExtractIcons(ItemsToImport);
            }

            DatabaseBuilder.PrintLine("Adjusting 128x icon... (4/5)");
            Move128Icons();

            DatabaseBuilder.PrintLine("Writing icon definition... (5/5)");
            WriteIconDefinition();

            //Cleanup();

            DatabaseBuilder.PrintLine("Icon calibration done. \n" +
                                      "Please re-export the database to bind icon to json.");
        }
示例#25
0
 public static DatabaseModel ProvideModel(DatabaseBuilder <SimpleDatabase> databaseBuilder)
 {
     return(databaseBuilder.Database(nameof(SimpleDatabase))
            .Table(d => d.Table(t => t.Users)
                   .Column(t => t.UserId, SqlType.Int)
                   .Build())
            .Build());
 }
示例#26
0
 public InstallApiController(DatabaseBuilder databaseBuilder, IProfilingLogger proflog, InstallHelper installHelper, InstallStepCollection installSteps)
 {
     _databaseBuilder = databaseBuilder ?? throw new ArgumentNullException(nameof(databaseBuilder));
     _proflog         = proflog ?? throw new ArgumentNullException(nameof(proflog));
     _installSteps    = installSteps;
     InstallHelper    = installHelper;
     _logger          = _proflog;
 }
示例#27
0
 public InstallHelper(
     IUmbracoContextAccessor umbracoContextAccessor,
     DatabaseBuilder databaseBuilder,
     ILogger logger,
     IGlobalSettings globalSettings)
     : this(umbracoContextAccessor, databaseBuilder, logger, globalSettings, Current.Factory.GetInstance <IInstallationService>())
 {
 }
示例#28
0
 static void WriteCore(string fullPath, string hashPath, string contents)
 {
     if (NeedsUpdate(hashPath, contents))
     {
         DatabaseBuilder.PrintLine($"Writing {fullPath}");
         File.WriteAllText(fullPath, contents, Encoding.UTF8);
     }
 }
示例#29
0
文件: Program.cs 项目: Banyc/MiniSQL
        static void Main(string[] args)
        {
            DatabaseBuilder builder    = new DatabaseBuilder();
            IApi            controller = new ApiController(builder);
            View            view       = new View(controller);

            view.Interactive();
        }
示例#30
0
 public InstallHelper(IUmbracoContextAccessor umbracoContextAccessor,
                      DatabaseBuilder databaseBuilder,
                      ILogger logger, IGlobalSettings globalSettings)
 {
     _httpContext     = umbracoContextAccessor.UmbracoContext.HttpContext;
     _logger          = logger;
     _globalSettings  = globalSettings;
     _databaseBuilder = databaseBuilder;
 }
        public void Build_creates_database()
        {
            var database = new DatabaseBuilder().GetDatabase(CreateModel());

            Assert.NotNull(database);
            Assert.Equal(2, database.Tables.Count);

            var table0 = database.Tables[0];
            var table1 = database.Tables[1];

            Assert.Equal("dbo.MyTable0", table0.Name);
            Assert.Equal(1, table0.Columns.Count);
            Assert.Equal("Id", table0.Columns[0].Name);
            Assert.Equal("int", table0.Columns[0].DataType);
            Assert.Equal(ValueGenerationOnSave.None, table0.Columns[0].ValueGenerationStrategy);
            Assert.NotNull(table1.PrimaryKey.Name);
            Assert.Equal("MyPK0", table0.PrimaryKey.Name);
            Assert.Same(table0.Columns[0], table0.PrimaryKey.Columns[0]);
            Assert.Equal(1, table0.ForeignKeys.Count);

            Assert.Equal("dbo.MyTable1", table1.Name);
            Assert.Equal(1, table1.Columns.Count);
            Assert.Equal("Id", table1.Columns[0].Name);
            Assert.Equal("int", table1.Columns[0].DataType);
            Assert.Equal(ValueGenerationOnSave.WhenInserting, table1.Columns[0].ValueGenerationStrategy);
            Assert.NotNull(table1.PrimaryKey.Name);
            Assert.Equal("MyPK1", table1.PrimaryKey.Name);
            Assert.Same(table1.Columns[0], table1.PrimaryKey.Columns[0]);
            Assert.Equal(0, table1.ForeignKeys.Count);

            var foreignKey = table0.ForeignKeys[0];

            Assert.Equal("MyFK", foreignKey.Name);
            Assert.Same(table0, foreignKey.Table);
            Assert.Same(table1, foreignKey.ReferencedTable);
            Assert.Same(table0.Columns[0], foreignKey.Columns[0]);
            Assert.Same(table1.Columns[0], foreignKey.ReferencedColumns[0]);
            Assert.True(foreignKey.CascadeDelete);

            var index = table0.Indexes[0];

            Assert.Equal("MyIndex", index.Name);
            Assert.Same(table0, index.Table);
            Assert.Same(table0.Columns[0], index.Columns[0]);
            Assert.True(index.IsUnique);
        }
        public void Build_fills_in_names_if_StorageName_not_specified()
        {
            // TODO: Add and Index when supported by DatabaseBuilder.

            var modelBuilder = new ModelBuilder();

            modelBuilder.Entity<Blog>(b =>
                {
                    b.Key(k => k.BlogId);
                    b.Property(e => e.BlogId);
                });

            modelBuilder.Entity<Post>(b =>
                {
                    b.Key(k => k.PostId);
                    b.Property(e => e.PostId);
                    b.Property(e => e.BelongsToBlogId);
                    b.ForeignKeys(f => f.ForeignKey<Blog>(p => p.BelongsToBlogId));
                    b.Indexes(ixs => ixs.Index(ix => ix.PostId));
                });

            var database = new DatabaseBuilder().GetDatabase(modelBuilder.Model);

            Assert.True(database.Tables.Any(t => t.Name == "Blog"));
            Assert.True(database.Tables.Any(t => t.Name == "Post"));

            Assert.Equal("BlogId", database.GetTable("Blog").Columns.Single().Name);
            Assert.Equal("PostId", database.GetTable("Post").Columns[1].Name);
            Assert.Equal("BelongsToBlogId", database.GetTable("Post").Columns[0].Name);

            Assert.Equal("PK_Blog", database.GetTable("Blog").PrimaryKey.Name);
            Assert.Equal("PK_Post", database.GetTable("Post").PrimaryKey.Name);

            Assert.Equal("FK_Post_Blog_BelongsToBlogId", database.GetTable("Post").ForeignKeys.Single().Name);

            Assert.Equal("IX_Post_PostId", database.GetTable("Post").Indexes.Single().Name);
        }
        public void Name_for_multi_column_FKs()
        {
            var modelBuilder = new ModelBuilder();

            modelBuilder.Entity<Principal>()
                .Key(k => new { k.Id0, k.Id1 });

            modelBuilder.Entity<Dependent>(b =>
                {
                    b.Key(k => k.Id);
                    b.ForeignKeys(f => f.ForeignKey<Principal>(p => new { p.FkAAA, p.FkZZZ }));
                });

            var builder = new DatabaseBuilder();
            var name = builder.GetDatabase(modelBuilder.Model).GetTable("Dependent").ForeignKeys.Single().Name;

            Assert.Equal("FK_Dependent_Principal_FkAAA_FkZZZ", name);
        }
        public void Name_for_multi_column_Indexes()
        {
            var modelBuilder = new ModelBuilder();

            modelBuilder.Entity<Dependent>(b =>
                {
                    b.Key(e => e.Id);
                    b.Property(e => e.Id);
                    b.Property(e => e.FkAAA).ColumnName("ColumnAaa");
                    b.Property(e => e.FkZZZ).ColumnName("ColumnZzz");
                    b.ToTable("MyTable");
                    b.Indexes(ixs => ixs.Index(e => new { e.FkAAA, e.FkZZZ }));
                });

            var builder = new DatabaseBuilder();
            var name = builder.GetDatabase(modelBuilder.Model).GetTable("MyTable").Indexes.Single().Name;

            Assert.Equal("IX_MyTable_ColumnAaa_ColumnZzz", name);
        }