From c7a1f85ca3a1d44b51ba4e65df1eaa95071d5c2a Mon Sep 17 00:00:00 2001 From: Thomas Hounsell Date: Wed, 5 Aug 2015 12:28:16 +0100 Subject: [PATCH] More MongoDB Migration --- BuildFeed/App_Start/DatabaseConfig.cs | 32 ------------- BuildFeed/App_Start/MongoConfig.cs | 26 +++++++++++ BuildFeed/BuildFeed.csproj | 2 +- BuildFeed/Models/Build.cs | 29 ++++++------ BuildFeed/Models/MetaItem.cs | 20 ++++---- RedisMongoMigration/Redis/MetaItem.cs | 46 +++++++++++++++++++ RedisMongoMigration/Redis/RedisMember.cs | 36 +++++++++++++++ RedisMongoMigration/Redis/RedisRole.cs | 21 +++++++++ .../RedisMongoMigration.csproj | 3 ++ 9 files changed, 156 insertions(+), 59 deletions(-) delete mode 100644 BuildFeed/App_Start/DatabaseConfig.cs create mode 100644 BuildFeed/App_Start/MongoConfig.cs create mode 100644 RedisMongoMigration/Redis/MetaItem.cs create mode 100644 RedisMongoMigration/Redis/RedisMember.cs create mode 100644 RedisMongoMigration/Redis/RedisRole.cs diff --git a/BuildFeed/App_Start/DatabaseConfig.cs b/BuildFeed/App_Start/DatabaseConfig.cs deleted file mode 100644 index ddd69d6..0000000 --- a/BuildFeed/App_Start/DatabaseConfig.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System.Configuration; - -namespace BuildFeed -{ - public static class DatabaseConfig - { - public static string Host { get; private set; } - public static int Port { get; private set; } - public static long Database { get; private set; } - - static DatabaseConfig() - { - Host = ConfigurationManager.AppSettings["data:ServerHost"]; - - int port; - bool success = int.TryParse(ConfigurationManager.AppSettings["data:ServerPort"], out port); - if (!success) - { - port = 6379; // redis default port - } - Port = port; - - long db; - success = long.TryParse(ConfigurationManager.AppSettings["data:ServerDB"], out db); - if (!success) - { - db = 0; // redis default db - } - Database = db; - } - } -} \ No newline at end of file diff --git a/BuildFeed/App_Start/MongoConfig.cs b/BuildFeed/App_Start/MongoConfig.cs new file mode 100644 index 0000000..2060768 --- /dev/null +++ b/BuildFeed/App_Start/MongoConfig.cs @@ -0,0 +1,26 @@ +using System.Configuration; + +namespace BuildFeed +{ + internal static class MongoConfig + { + public static string Host { get; private set; } + public static int Port { get; private set; } + public static string Database { get; private set; } + + static MongoConfig() + { + Host = !string.IsNullOrEmpty(ConfigurationManager.AppSettings["data:MongoHost"]) ? ConfigurationManager.AppSettings["data:MongoHost"] : "localhost"; + + int _port; + bool success = int.TryParse(ConfigurationManager.AppSettings["data:MongoPort"], out _port); + if (!success) + { + _port = 27017; // mongo default port + } + Port = _port; + + Database = !string.IsNullOrEmpty(ConfigurationManager.AppSettings["data:MongoDB"]) ? ConfigurationManager.AppSettings["data:MongoDB"] : "MongoAuth"; + } + } +} \ No newline at end of file diff --git a/BuildFeed/BuildFeed.csproj b/BuildFeed/BuildFeed.csproj index 1b3f0a6..87a75d5 100644 --- a/BuildFeed/BuildFeed.csproj +++ b/BuildFeed/BuildFeed.csproj @@ -190,7 +190,7 @@ - + diff --git a/BuildFeed/Models/Build.cs b/BuildFeed/Models/Build.cs index b45dbdb..6031313 100644 --- a/BuildFeed/Models/Build.cs +++ b/BuildFeed/Models/Build.cs @@ -4,9 +4,6 @@ using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; -using NServiceKit.DataAnnotations; -using NServiceKit.DesignPatterns.Model; -using NServiceKit.Redis; using Required = System.ComponentModel.DataAnnotations.RequiredAttribute; using System.Web.Mvc; @@ -15,7 +12,7 @@ namespace BuildFeed.Models { [DataObject] - public class Build : IHasId + public class Build { [Key] [AutoIncrement] @@ -116,7 +113,7 @@ public string FullBuildString [DataObjectMethod(DataObjectMethodType.Select, true)] public static IEnumerable Select() { - using (RedisClient rClient = new RedisClient(DatabaseConfig.Host, DatabaseConfig.Port, db: DatabaseConfig.Database)) + using (RedisClient rClient = new RedisClient(MongoConfig.Host, MongoConfig.Port, db: MongoConfig.Database)) { var client = rClient.As(); return client.GetAll(); @@ -126,7 +123,7 @@ public static IEnumerable Select() [DataObjectMethod(DataObjectMethodType.Select, false)] public static Build SelectById(long id) { - using (RedisClient rClient = new RedisClient(DatabaseConfig.Host, DatabaseConfig.Port, db: DatabaseConfig.Database)) + using (RedisClient rClient = new RedisClient(MongoConfig.Host, MongoConfig.Port, db: MongoConfig.Database)) { var client = rClient.As(); return client.GetById(id); @@ -136,7 +133,7 @@ public static Build SelectById(long id) [DataObjectMethod(DataObjectMethodType.Select, false)] public static IEnumerable SelectInBuildOrder() { - using (RedisClient rClient = new RedisClient(DatabaseConfig.Host, DatabaseConfig.Port, db: DatabaseConfig.Database)) + using (RedisClient rClient = new RedisClient(MongoConfig.Host, MongoConfig.Port, db: MongoConfig.Database)) { var client = rClient.As(); return client.GetAll() @@ -151,7 +148,7 @@ public static IEnumerable SelectInBuildOrder() [DataObjectMethod(DataObjectMethodType.Select, false)] public static IEnumerable SelectInVersionOrder() { - using (RedisClient rClient = new RedisClient(DatabaseConfig.Host, DatabaseConfig.Port, db: DatabaseConfig.Database)) + using (RedisClient rClient = new RedisClient(MongoConfig.Host, MongoConfig.Port, db: MongoConfig.Database)) { var client = rClient.As(); return client.GetAll() @@ -166,7 +163,7 @@ public static IEnumerable SelectInVersionOrder() [DataObjectMethod(DataObjectMethodType.Select, false)] public static IEnumerable SelectBuildVersions() { - using (RedisClient rClient = new RedisClient(DatabaseConfig.Host, DatabaseConfig.Port, db: DatabaseConfig.Database)) + using (RedisClient rClient = new RedisClient(MongoConfig.Host, MongoConfig.Port, db: MongoConfig.Database)) { var client = rClient.As(); var results = client.GetAll() @@ -181,7 +178,7 @@ public static IEnumerable SelectBuildVersions() [DataObjectMethod(DataObjectMethodType.Select, false)] public static IEnumerable SelectBuildYears() { - using (RedisClient rClient = new RedisClient(DatabaseConfig.Host, DatabaseConfig.Port, db: DatabaseConfig.Database)) + using (RedisClient rClient = new RedisClient(MongoConfig.Host, MongoConfig.Port, db: MongoConfig.Database)) { var client = rClient.As(); var results = client.GetAll().Where(b => b.BuildTime.HasValue) @@ -195,7 +192,7 @@ public static IEnumerable SelectBuildYears() [DataObjectMethod(DataObjectMethodType.Select, false)] public static IEnumerable SelectBuildLabs() { - using (RedisClient rClient = new RedisClient(DatabaseConfig.Host, DatabaseConfig.Port, db: DatabaseConfig.Database)) + using (RedisClient rClient = new RedisClient(MongoConfig.Host, MongoConfig.Port, db: MongoConfig.Database)) { var client = rClient.As(); var results = client.GetAll() @@ -210,7 +207,7 @@ public static IEnumerable SelectBuildLabs() [DataObjectMethod(DataObjectMethodType.Select, false)] public static IEnumerable SelectBuildLabs(byte major, byte minor) { - using (RedisClient rClient = new RedisClient(DatabaseConfig.Host, DatabaseConfig.Port, db: DatabaseConfig.Database)) + using (RedisClient rClient = new RedisClient(MongoConfig.Host, MongoConfig.Port, db: MongoConfig.Database)) { var client = rClient.As(); var results = client.GetAll() @@ -227,7 +224,7 @@ public static IEnumerable SelectBuildLabs(byte major, byte minor) [DataObjectMethod(DataObjectMethodType.Insert, true)] public static void Insert(Build item) { - using (RedisClient rClient = new RedisClient(DatabaseConfig.Host, DatabaseConfig.Port, db: DatabaseConfig.Database)) + using (RedisClient rClient = new RedisClient(MongoConfig.Host, MongoConfig.Port, db: MongoConfig.Database)) { var client = rClient.As(); item.Id = client.GetNextSequence(); @@ -242,7 +239,7 @@ public static void Update(Build item) item.Added = old.Added; item.Modified = DateTime.Now; - using (RedisClient rClient = new RedisClient(DatabaseConfig.Host, DatabaseConfig.Port, db: DatabaseConfig.Database)) + using (RedisClient rClient = new RedisClient(MongoConfig.Host, MongoConfig.Port, db: MongoConfig.Database)) { var client = rClient.As(); client.Store(item); @@ -252,7 +249,7 @@ public static void Update(Build item) [DataObjectMethod(DataObjectMethodType.Insert, false)] public static void InsertAll(IEnumerable items) { - using (RedisClient rClient = new RedisClient(DatabaseConfig.Host, DatabaseConfig.Port, db: DatabaseConfig.Database)) + using (RedisClient rClient = new RedisClient(MongoConfig.Host, MongoConfig.Port, db: MongoConfig.Database)) { var client = rClient.As(); client.StoreAll(items); @@ -262,7 +259,7 @@ public static void InsertAll(IEnumerable items) [DataObjectMethod(DataObjectMethodType.Delete, true)] public static void DeleteById(long id) { - using (RedisClient rClient = new RedisClient(DatabaseConfig.Host, DatabaseConfig.Port, db: DatabaseConfig.Database)) + using (RedisClient rClient = new RedisClient(MongoConfig.Host, MongoConfig.Port, db: MongoConfig.Database)) { var client = rClient.As(); client.DeleteById(id); diff --git a/BuildFeed/Models/MetaItem.cs b/BuildFeed/Models/MetaItem.cs index aa6d42b..4af77f0 100644 --- a/BuildFeed/Models/MetaItem.cs +++ b/BuildFeed/Models/MetaItem.cs @@ -31,7 +31,7 @@ public class MetaItem : IHasId [DataObjectMethod(DataObjectMethodType.Select, false)] public static IEnumerable Select() { - using (RedisClient rClient = new RedisClient(DatabaseConfig.Host, DatabaseConfig.Port, db: DatabaseConfig.Database)) + using (RedisClient rClient = new RedisClient(MongoConfig.Host, MongoConfig.Port, db: MongoConfig.Database)) { var client = rClient.As(); return client.GetAll(); @@ -41,7 +41,7 @@ public static IEnumerable Select() [DataObjectMethod(DataObjectMethodType.Select, true)] public static IEnumerable SelectByType(MetaType type) { - using (RedisClient rClient = new RedisClient(DatabaseConfig.Host, DatabaseConfig.Port, db: DatabaseConfig.Database)) + using (RedisClient rClient = new RedisClient(MongoConfig.Host, MongoConfig.Port, db: MongoConfig.Database)) { var client = rClient.As(); return from t in client.GetAll() @@ -53,7 +53,7 @@ public static IEnumerable SelectByType(MetaType type) [DataObjectMethod(DataObjectMethodType.Select, false)] public static MetaItem SelectById(MetaItemKey id) { - using (RedisClient rClient = new RedisClient(DatabaseConfig.Host, DatabaseConfig.Port, db: DatabaseConfig.Database)) + using (RedisClient rClient = new RedisClient(MongoConfig.Host, MongoConfig.Port, db: MongoConfig.Database)) { var client = rClient.As(); return client.GetById(id); @@ -64,7 +64,7 @@ public static MetaItem SelectById(MetaItemKey id) public static IEnumerable SelectUnusedLabs() { - using (RedisClient rClient = new RedisClient(DatabaseConfig.Host, DatabaseConfig.Port, db: DatabaseConfig.Database)) + using (RedisClient rClient = new RedisClient(MongoConfig.Host, MongoConfig.Port, db: MongoConfig.Database)) { var client = rClient.As(); var labs = Build.SelectBuildLabs(); @@ -83,7 +83,7 @@ where usedLabs.All(ul => ul.Id.Value != l) public static IEnumerable SelectUnusedVersions() { - using (RedisClient rClient = new RedisClient(DatabaseConfig.Host, DatabaseConfig.Port, db: DatabaseConfig.Database)) + using (RedisClient rClient = new RedisClient(MongoConfig.Host, MongoConfig.Port, db: MongoConfig.Database)) { var client = rClient.As(); var versions = Build.SelectBuildVersions(); @@ -102,7 +102,7 @@ where usedLabs.All(ul => ul.Id.Value != v.ToString()) public static IEnumerable SelectUnusedYears() { - using (RedisClient rClient = new RedisClient(DatabaseConfig.Host, DatabaseConfig.Port, db: DatabaseConfig.Database)) + using (RedisClient rClient = new RedisClient(MongoConfig.Host, MongoConfig.Port, db: MongoConfig.Database)) { var client = rClient.As(); var years = Build.SelectBuildYears(); @@ -120,7 +120,7 @@ where usedYears.All(ul => ul.Id.Value != y.ToString()) [DataObjectMethod(DataObjectMethodType.Insert, true)] public static void Insert(MetaItem item) { - using (RedisClient rClient = new RedisClient(DatabaseConfig.Host, DatabaseConfig.Port, db: DatabaseConfig.Database)) + using (RedisClient rClient = new RedisClient(MongoConfig.Host, MongoConfig.Port, db: MongoConfig.Database)) { var client = rClient.As(); client.Store(item); @@ -130,7 +130,7 @@ public static void Insert(MetaItem item) [DataObjectMethod(DataObjectMethodType.Update, true)] public static void Update(MetaItem item) { - using (RedisClient rClient = new RedisClient(DatabaseConfig.Host, DatabaseConfig.Port, db: DatabaseConfig.Database)) + using (RedisClient rClient = new RedisClient(MongoConfig.Host, MongoConfig.Port, db: MongoConfig.Database)) { var client = rClient.As(); client.Store(item); @@ -140,7 +140,7 @@ public static void Update(MetaItem item) [DataObjectMethod(DataObjectMethodType.Insert, false)] public static void InsertAll(IEnumerable items) { - using (RedisClient rClient = new RedisClient(DatabaseConfig.Host, DatabaseConfig.Port, db: DatabaseConfig.Database)) + using (RedisClient rClient = new RedisClient(MongoConfig.Host, MongoConfig.Port, db: MongoConfig.Database)) { var client = rClient.As(); client.StoreAll(items); @@ -150,7 +150,7 @@ public static void InsertAll(IEnumerable items) [DataObjectMethod(DataObjectMethodType.Delete, true)] public static void DeleteById(long id) { - using (RedisClient rClient = new RedisClient(DatabaseConfig.Host, DatabaseConfig.Port, db: DatabaseConfig.Database)) + using (RedisClient rClient = new RedisClient(MongoConfig.Host, MongoConfig.Port, db: MongoConfig.Database)) { var client = rClient.As(); client.DeleteById(id); diff --git a/RedisMongoMigration/Redis/MetaItem.cs b/RedisMongoMigration/Redis/MetaItem.cs new file mode 100644 index 0000000..8942968 --- /dev/null +++ b/RedisMongoMigration/Redis/MetaItem.cs @@ -0,0 +1,46 @@ +using NServiceKit.DataAnnotations; +using NServiceKit.DesignPatterns.Model; +using System; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; + +namespace RedisMongoMigration.Redis +{ + [DataObject] + public class MetaItem : IHasId + { + [Key] + [Index] + public MetaItemKey Id { get; set; } + + public string PageContent { get; set; } + + public string MetaDescription { get; set; } + } + + public struct MetaItemKey + { + public string Value { get; set; } + public MetaType Type { get; set; } + + public MetaItemKey(string id) + { + var items = id.Split(':'); + Type = (MetaType)Enum.Parse(typeof(MetaType), items[0]); + Value = items[1]; + } + + public override string ToString() + { + return $"{Type}:{Value}"; + } + } + + public enum MetaType + { + Lab, + Version, + Source, + Year + } +} diff --git a/RedisMongoMigration/Redis/RedisMember.cs b/RedisMongoMigration/Redis/RedisMember.cs new file mode 100644 index 0000000..ad82a61 --- /dev/null +++ b/RedisMongoMigration/Redis/RedisMember.cs @@ -0,0 +1,36 @@ +using NServiceKit.DataAnnotations; +using NServiceKit.DesignPatterns.Model; +using System; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; + +namespace RedisMongoMigration.Redis +{ + + [DataObject] + public class RedisMember : IHasId + { + [Key] + [Index] + public Guid Id { get; set; } + + [Key] + public string UserName { get; set; } + public byte[] PassHash { get; set; } + public byte[] PassSalt { get; set; } + + [Key] + public string EmailAddress { get; set; } + + public bool IsApproved { get; set; } + public bool IsLockedOut { get; set; } + + public DateTime CreationDate { get; set; } + public DateTime LastActivityDate { get; set; } + public DateTime LastLockoutDate { get; set; } + public DateTime LastLoginDate { get; set; } + + public DateTime LockoutWindowStart { get; set; } + public int LockoutWindowAttempts { get; set; } + } +} diff --git a/RedisMongoMigration/Redis/RedisRole.cs b/RedisMongoMigration/Redis/RedisRole.cs new file mode 100644 index 0000000..3c33534 --- /dev/null +++ b/RedisMongoMigration/Redis/RedisRole.cs @@ -0,0 +1,21 @@ +using NServiceKit.DataAnnotations; +using NServiceKit.DesignPatterns.Model; +using System; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; + +namespace RedisMongoMigration.Redis +{ + [DataObject] + public class RedisRole : IHasId + { + [Key] + [Index] + public Guid Id { get; set; } + + [Key] + public string RoleName { get; set; } + + public Guid[] Users { get; set; } + } +} diff --git a/RedisMongoMigration/RedisMongoMigration.csproj b/RedisMongoMigration/RedisMongoMigration.csproj index 3d96459..329b7a1 100644 --- a/RedisMongoMigration/RedisMongoMigration.csproj +++ b/RedisMongoMigration/RedisMongoMigration.csproj @@ -63,6 +63,9 @@ + + +