public static void EnsureSeeded(this IdeContext context, IFileStorageNoSqlDbSettings settings)
 {
     if (context.Users.Count() == 0)
     {
         context.SeedWithCorrectData(settings);
     }
 }
Esempio n. 2
0
        public NoSqlRepository(IFileStorageNoSqlDbSettings settings)
        {
            var client              = new MongoClient(settings.ConnectionString);
            var database            = client.GetDatabase(settings.DatabaseName);
            var itemsCollectionName = GetItemsCollectionName();

            _items = database.GetCollection <T>(itemsCollectionName);
        }
        public static void SeedWithCorrectData(this IdeContext context, IFileStorageNoSqlDbSettings settings)
        {
            var avatars = GenerateCorrectImages();

            context.Images.AddRange(avatars);
            var editorSettings = GenerateCorrectEditorSettings();

            context.EditorSettings.AddRange(editorSettings);
            context.SaveChanges();

            var users = GenerateCorrectUsers(context.Images.ToArray(), context.EditorSettings.ToArray());

            context.Users.AddRange(users);
            context.SaveChanges();

            var dBUsers = context.Users.ToArray();

            var projects = GenerateCorrectProjects(dBUsers, context.EditorSettings.ToArray());

            context.Projects.AddRange(projects);
            context.SaveChanges();

            var dBProjects = context.Projects.ToArray();

            var projectMembers = GenerateCorrectProjectMembers(dBProjects, dBUsers);

            context.ProjectMembers.AddRange(projectMembers);

            var favouriteProjects = GenerateCorrectFavouriteProjects(dBProjects, dBUsers);

            context.FavouriteProjects.AddRange(favouriteProjects);

            context.SaveChanges();

            EnsureNoSqlDbSeeded(settings, dBProjects);

            var builds = GenerateRandomBuilds(context.Users.ToList(), context.Projects.ToList());

            context.Builds.AddRange(builds);
            context.SaveChanges();
        }
Esempio n. 4
0
 public FileRepository(IFileStorageNoSqlDbSettings settings) : base(settings)
 {
 }
        private static void EnsureNoSqlDbSeeded(IFileStorageNoSqlDbSettings settings, ICollection <Project> projects)
        {
            IMongoCollection <ProjectStructure> projectStructureItems;
            IMongoCollection <File>             filesItems;
            IMongoCollection <FileHistory>      fileHistoriesItems;
            var client              = new MongoClient(settings.ConnectionString);
            var database            = client.GetDatabase(settings.DatabaseName);
            var itemsCollectionName = GetProjectStructureItemsCollectionName();

            projectStructureItems = database.GetCollection <ProjectStructure>(itemsCollectionName);
            filesItems            = database.GetCollection <File>(GetFileItemsCollectionName());
            fileHistoriesItems    = database.GetCollection <FileHistory>(GetFileHistoryItemsCollectionName());

            foreach (var project in projects)
            {
                var fileStructure = new FileStructure()
                {
                    Id      = Guid.NewGuid().ToString(),
                    Type    = Common.ModelsDTO.Enums.TreeNodeType.Folder,
                    Details = "Project details",
                    Name    = project.Name
                };
                File f1 = new File()
                {
                    Id        = Guid.NewGuid().ToString("N").Substring(0, 24),
                    Name      = "Program.cs",
                    Folder    = project.Name,
                    CreatorId = 1,
                    ProjectId = project.Id,
                    CreatedAt = DateTime.Now,
                    Content   = GetCSFileContent(project.Name),
                    Language  = "csharp"
                };
                File f2 = new File()
                {
                    Id        = Guid.NewGuid().ToString("N").Substring(0, 24),
                    Name      = project.Name + ".csproj",
                    Folder    = project.Name,
                    CreatorId = 1,
                    ProjectId = project.Id,
                    CreatedAt = DateTime.Now,
                    Content   = GetCSProjFileContent(),
                    Language  = "xml"
                };
                fileStructure.NestedFiles.Add(new FileStructure()
                {
                    Id   = f1.Id,
                    Name = "Program.cs",
                    Type = Common.ModelsDTO.Enums.TreeNodeType.File
                });
                fileStructure.NestedFiles.Add(new FileStructure()
                {
                    Id   = f2.Id,
                    Name = project.Name + ".csproj",
                    Type = Common.ModelsDTO.Enums.TreeNodeType.File
                });

                var emptyStructure = new ProjectStructure();
                emptyStructure.Id = project.Id.ToString();
                emptyStructure.NestedFiles.Add(fileStructure);

                filesItems.InsertOne(f1);
                filesItems.InsertOne(f2);
                projectStructureItems.InsertOne(emptyStructure);
            }
        }