using BuildFeed; using NServiceKit.DataAnnotations; using NServiceKit.DesignPatterns.Model; using NServiceKit.Redis; using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Web; using System.Web.Mvc; using Required = System.ComponentModel.DataAnnotations.RequiredAttribute; namespace BuildFeed.Models { [DataObject] public class LabMeta : IHasId { [Key] [Index] [@Required] public string Id { get; set; } [DisplayName("Page Content")] [AllowHtml] public string PageContent { get; set; } [DisplayName("Meta Description")] public string MetaDescription { get; set; } [DataObjectMethod(DataObjectMethodType.Select, true)] public static IEnumerable Select() { using (RedisClient rClient = new RedisClient(DatabaseConfig.Host, DatabaseConfig.Port, db: DatabaseConfig.Database)) { var client = rClient.As(); return client.GetAll(); } } [DataObjectMethod(DataObjectMethodType.Select, false)] public static LabMeta SelectById(string id) { using (RedisClient rClient = new RedisClient(DatabaseConfig.Host, DatabaseConfig.Port, db: DatabaseConfig.Database)) { var client = rClient.As(); return client.GetById(id); } } [DataObjectMethod(DataObjectMethodType.Select, false)] public static IEnumerable SelectUnusedLabs() { using (RedisClient rClient = new RedisClient(DatabaseConfig.Host, DatabaseConfig.Port, db: DatabaseConfig.Database)) { var client = rClient.As(); var labs = Build.SelectBuildLabs(); var usedLabs = client.GetAll(); return from l in labs where !usedLabs.Any(ul => ul.Id == l) select l; } } [DataObjectMethod(DataObjectMethodType.Insert, true)] public static void Insert(LabMeta item) { using (RedisClient rClient = new RedisClient(DatabaseConfig.Host, DatabaseConfig.Port, db: DatabaseConfig.Database)) { var client = rClient.As(); client.Store(item); } } [DataObjectMethod(DataObjectMethodType.Update, true)] public static void Update(LabMeta item) { using (RedisClient rClient = new RedisClient(DatabaseConfig.Host, DatabaseConfig.Port, db: DatabaseConfig.Database)) { var client = rClient.As(); client.Store(item); } } [DataObjectMethod(DataObjectMethodType.Insert, false)] public static void InsertAll(IEnumerable items) { using (RedisClient rClient = new RedisClient(DatabaseConfig.Host, DatabaseConfig.Port, db: DatabaseConfig.Database)) { var client = rClient.As(); client.StoreAll(items); } } [DataObjectMethod(DataObjectMethodType.Delete, true)] public static void DeleteById(long id) { using (RedisClient rClient = new RedisClient(DatabaseConfig.Host, DatabaseConfig.Port, db: DatabaseConfig.Database)) { var client = rClient.As(); client.DeleteById(id); } } } }