From 2ca45d30df6172e5679e658be9d02d9420501f52 Mon Sep 17 00:00:00 2001 From: Thomas Hounsell Date: Tue, 6 Oct 2015 20:54:14 +0100 Subject: [PATCH] Complete User and Role Migration in Tool --- BuildFeed/Models/Build.cs | 2 +- RedisMongoMigration/Mongo/Build.cs | 4 + RedisMongoMigration/Mongo/MongoMember.cs | 44 ++++++++- RedisMongoMigration/Mongo/MongoRole.cs | 44 ++++++++- RedisMongoMigration/Program.cs | 20 ++-- RedisMongoMigration/Redis/Build.cs | 116 ++++++++++++----------- 6 files changed, 162 insertions(+), 68 deletions(-) diff --git a/BuildFeed/Models/Build.cs b/BuildFeed/Models/Build.cs index 6555870..2fb80e8 100644 --- a/BuildFeed/Models/Build.cs +++ b/BuildFeed/Models/Build.cs @@ -118,7 +118,7 @@ public string FullBuildString } } - public string GenerateLabUrl() => Lab.Replace('/', '-').ToLower(); + public string GenerateLabUrl() => (Lab ?? "").Replace('/', '-').ToLower(); } public class Build diff --git a/RedisMongoMigration/Mongo/Build.cs b/RedisMongoMigration/Mongo/Build.cs index a5cfbc0..a75b304 100644 --- a/RedisMongoMigration/Mongo/Build.cs +++ b/RedisMongoMigration/Mongo/Build.cs @@ -26,6 +26,8 @@ public class BuildModel public DateTime? LeakDate { get; set; } public MongoLevelOfFlight FlightLevel { get; set; } + public string LabUrl { get; set; } + public bool IsLeaked { get @@ -68,6 +70,8 @@ public string FullBuildString return sb.ToString(); } } + + public string GenerateLabUrl() => (Lab ?? "").Replace('/', '-').ToLower(); } public class Build diff --git a/RedisMongoMigration/Mongo/MongoMember.cs b/RedisMongoMigration/Mongo/MongoMember.cs index f934cb5..2402e00 100644 --- a/RedisMongoMigration/Mongo/MongoMember.cs +++ b/RedisMongoMigration/Mongo/MongoMember.cs @@ -1,4 +1,6 @@ -using MongoDB.Bson.Serialization.Attributes; +using MongoDB.Bson; +using MongoDB.Bson.Serialization.Attributes; +using MongoDB.Driver; using System; using System.Collections.Generic; using System.Linq; @@ -7,7 +9,7 @@ namespace RedisMongoMigration.Mongo { - public class MongoMember + public class MemberModel { [BsonId] public Guid Id { get; set; } @@ -28,4 +30,42 @@ public class MongoMember public DateTime LockoutWindowStart { get; set; } public int LockoutWindowAttempts { get; set; } } + + public class MongoMember + { + private const string _buildCollectionName = "members"; + + private MongoClient _dbClient; + private IMongoCollection _buildCollection; + + public MongoMember() + { + _dbClient = new MongoClient(new MongoClientSettings() + { + Server = new MongoServerAddress("localhost", 27017) + }); + + _buildCollection = _dbClient.GetDatabase("BuildFeed").GetCollection(_buildCollectionName); + } + + public List Select() + { + var task = _buildCollection.Find(new BsonDocument()).ToListAsync(); + task.Wait(); + return task.Result; + } + + public void Insert(MemberModel item) + { + item.Id = Guid.NewGuid(); + var task = _buildCollection.InsertOneAsync(item); + task.Wait(); + } + + public void InsertAll(IEnumerable items) + { + var task = _buildCollection.InsertManyAsync(items); + task.Wait(); + } + } } diff --git a/RedisMongoMigration/Mongo/MongoRole.cs b/RedisMongoMigration/Mongo/MongoRole.cs index 5f67131..c0fa786 100644 --- a/RedisMongoMigration/Mongo/MongoRole.cs +++ b/RedisMongoMigration/Mongo/MongoRole.cs @@ -1,4 +1,6 @@ -using MongoDB.Bson.Serialization.Attributes; +using MongoDB.Bson; +using MongoDB.Bson.Serialization.Attributes; +using MongoDB.Driver; using System; using System.Collections.Generic; using System.Linq; @@ -7,7 +9,7 @@ namespace RedisMongoMigration.Mongo { - public class MongoRole + public class RoleModel { [BsonId] public Guid Id { get; set; } @@ -16,4 +18,42 @@ public class MongoRole public Guid[] Users { get; set; } } + + public class MongoRole + { + private const string _buildCollectionName = "roles"; + + private MongoClient _dbClient; + private IMongoCollection _buildCollection; + + public MongoRole() + { + _dbClient = new MongoClient(new MongoClientSettings() + { + Server = new MongoServerAddress("localhost", 27017) + }); + + _buildCollection = _dbClient.GetDatabase("BuildFeed").GetCollection(_buildCollectionName); + } + + public List Select() + { + var task = _buildCollection.Find(new BsonDocument()).ToListAsync(); + task.Wait(); + return task.Result; + } + + public void Insert(RoleModel item) + { + item.Id = Guid.NewGuid(); + var task = _buildCollection.InsertOneAsync(item); + task.Wait(); + } + + public void InsertAll(IEnumerable items) + { + var task = _buildCollection.InsertManyAsync(items); + task.Wait(); + } + } } diff --git a/RedisMongoMigration/Program.cs b/RedisMongoMigration/Program.cs index 251fc4b..46fa8b6 100644 --- a/RedisMongoMigration/Program.cs +++ b/RedisMongoMigration/Program.cs @@ -9,8 +9,10 @@ using RBuild = RedisMongoMigration.Redis.Build; using MongoLevelOfFlight = RedisMongoMigration.Mongo.MongoLevelOfFlight; using RedisLevelOfFlight = RedisMongoMigration.Redis.RedisLevelOfFlight; -using MMember = RedisMongoMigration.Mongo.MongoMember; +using MMemberModel = RedisMongoMigration.Mongo.MemberModel; using RMember = RedisMongoMigration.Redis.RedisMember; +using MMember = RedisMongoMigration.Mongo.MongoMember; +using MRoleModel = RedisMongoMigration.Mongo.RoleModel; using RRole = RedisMongoMigration.Redis.RedisRole; using MRole = RedisMongoMigration.Mongo.MongoRole; @@ -38,14 +40,16 @@ static void Main(string[] args) SourceType = b.SourceType, SourceDetails = b.SourceDetails, LeakDate = b.LeakDate, - FlightLevel = ExchangeFlights(b.FlightLevel) + FlightLevel = ExchangeFlights(b.FlightLevel), + + LabUrl = b.GenerateLabUrl() }; - MBuild m = new MBuild(); - m.InsertAll(builds); + MBuild mb = new MBuild(); + mb.InsertAll(builds); Console.WriteLine("Builds: Complete"); var members = from r in RMember.Select() - select new MMember() + select new MMemberModel() { CreationDate = r.CreationDate, EmailAddress = r.EmailAddress, @@ -61,15 +65,19 @@ static void Main(string[] args) PassSalt = r.PassSalt, UserName = r.UserName }; + MMember mm = new MMember(); + mm.InsertAll(members); Console.WriteLine("Members: Complete"); var roles = from r in RRole.Select() - select new MRole() + select new MRoleModel() { Id = r.Id, RoleName = r.RoleName, Users = r.Users }; + MRole mr = new MRole(); + mr.InsertAll(roles); Console.WriteLine("Roles: Complete"); Console.ReadKey(); diff --git a/RedisMongoMigration/Redis/Build.cs b/RedisMongoMigration/Redis/Build.cs index 52f5385..393d149 100644 --- a/RedisMongoMigration/Redis/Build.cs +++ b/RedisMongoMigration/Redis/Build.cs @@ -9,69 +9,71 @@ namespace RedisMongoMigration.Redis { - [DataObject] - public class Build : IHasId - { - [Key] - [AutoIncrement] - [Index] - public long Id { get; set; } - public byte MajorVersion { get; set; } - public byte MinorVersion { get; set; } - public ushort Number { get; set; } - public ushort? Revision { get; set; } - public string Lab { get; set; } - public DateTime? BuildTime { get; set; } + [DataObject] + public class Build : IHasId + { + [Key] + [AutoIncrement] + [Index] + public long Id { get; set; } + public byte MajorVersion { get; set; } + public byte MinorVersion { get; set; } + public ushort Number { get; set; } + public ushort? Revision { get; set; } + public string Lab { get; set; } + public DateTime? BuildTime { get; set; } - public DateTime Added { get; set; } - public DateTime Modified { get; set; } - public TypeOfSource SourceType { get; set; } - public string SourceDetails { get; set; } - public DateTime? LeakDate { get; set; } - public RedisLevelOfFlight FlightLevel { get; set; } + public DateTime Added { get; set; } + public DateTime Modified { get; set; } + public TypeOfSource SourceType { get; set; } + public string SourceDetails { get; set; } + public DateTime? LeakDate { get; set; } + public RedisLevelOfFlight FlightLevel { get; set; } - public bool IsLeaked - { - get + public bool IsLeaked + { + get + { + switch (SourceType) { - switch (SourceType) - { - case TypeOfSource.PublicRelease: - case TypeOfSource.InternalLeak: - case TypeOfSource.UpdateGDR: - return true; - default: - return false; - } - } - } - - public string FullBuildString - { - get - { - StringBuilder sb = new StringBuilder(); - sb.AppendFormat("{0}.{1}.{2}", MajorVersion, MinorVersion, Number); - - if (Revision.HasValue) - { - sb.AppendFormat(".{0}", Revision); - } - - if (!string.IsNullOrWhiteSpace(Lab)) - { - sb.AppendFormat(".{0}", Lab); - } - - if (BuildTime.HasValue) - { - sb.AppendFormat(".{0:yyMMdd-HHmm}", BuildTime); - } - - return sb.ToString(); + case TypeOfSource.PublicRelease: + case TypeOfSource.InternalLeak: + case TypeOfSource.UpdateGDR: + return true; + default: + return false; } + } } + public string FullBuildString + { + get + { + StringBuilder sb = new StringBuilder(); + sb.AppendFormat("{0}.{1}.{2}", MajorVersion, MinorVersion, Number); + + if (Revision.HasValue) + { + sb.AppendFormat(".{0}", Revision); + } + + if (!string.IsNullOrWhiteSpace(Lab)) + { + sb.AppendFormat(".{0}", Lab); + } + + if (BuildTime.HasValue) + { + sb.AppendFormat(".{0:yyMMdd-HHmm}", BuildTime); + } + + return sb.ToString(); + } + } + + public string GenerateLabUrl() => (Lab ?? "").Replace('/', '-').ToLower(); + public static IEnumerable Select() { using (RedisClient rClient = new RedisClient("localhost", 6379, db: 1))