Let's go live.

inb4 everything breaks.
This commit is contained in:
Thomas Hounsell 2015-10-13 20:24:39 +01:00
parent a84b410cea
commit e55b1667f4
13 changed files with 276 additions and 141 deletions

View File

@ -9,6 +9,13 @@ public class RouteConfig
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapHttpRoute("API", "api/{action}/{id}",
new
{
controller = "api",
action = "GetBuilds",
id = UrlParameter.Optional
});
routes.AppendTrailingSlash = true;
routes.MapMvcAttributeRoutes();
}

View File

@ -1,10 +1,10 @@
@model BuildFeed.Models.MetaItem
@model BuildFeed.Models.MetaItemModel
@{
ViewBag.Title = $"Add metadata for {Model.Id.Value} | BuildFeed";
ViewBag.Title = string.Format("Add metadata for {0} | BuildFeed", Model.Id.Value);
}
<h2>@($"Add metadata for {Model.Id.Value}")</h2>
<h2>@string.Format("Add metadata for {0}", Model.Id.Value)</h2>
@using (Html.BeginForm())
{

View File

@ -19,7 +19,6 @@ public apiController() : base()
bModel = new Build();
}
[Route("/api/GetWin10Labs/")]
public async Task<IEnumerable<string>> GetWin10Labs()
{
List<string> labs = new List<string>();
@ -34,7 +33,6 @@ public async Task<IEnumerable<string>> GetWin10Labs()
}
[HttpPost]
[Route("/api/AddWin10Builds/")]
public async Task<bool> AddWin10Builds(NewBuild apiModel)
{
if (apiModel == null)
@ -61,10 +59,9 @@ public async Task<bool> AddWin10Builds(NewBuild apiModel)
}
}
[Route("/api/GetSearchResult/{query}/")]
public async Task<IEnumerable<SearchResult>> GetSearchResult(string query)
public async Task<IEnumerable<SearchResult>> GetSearchResult(string id)
{
if (string.IsNullOrWhiteSpace(query))
if (string.IsNullOrWhiteSpace(id))
{
return new SearchResult[0];
}
@ -72,12 +69,12 @@ public async Task<IEnumerable<SearchResult>> GetSearchResult(string query)
List<SearchResult> results = new List<SearchResult>();
var sourceResults = from s in Enum.GetValues(typeof(TypeOfSource)).Cast<TypeOfSource>().Select(s => new { Text = DisplayHelpers.GetDisplayTextForEnum(s), Value = s })
where s.Text.ToLower().Contains(query.ToLower())
orderby s.Text.ToLower().IndexOf(query.ToLower(), StringComparison.Ordinal) ascending
where s.Text.ToLower().Contains(id.ToLower())
orderby s.Text.ToLower().IndexOf(id.ToLower(), StringComparison.Ordinal) ascending
select new SearchResult()
{
Url = Url.Route("Source Root", new { controller = "front", action = "viewSource", source = s.Value }),
Label = s.Text.Replace(query, "<strong>" + query + "</strong>"),
Label = s.Text.Replace(id, "<strong>" + id + "</strong>"),
Title = s.Text,
Group = Common.SearchSource
};
@ -86,12 +83,12 @@ orderby s.Text.ToLower().IndexOf(query.ToLower(), StringComparison.Ordinal) asce
var versionResults = from v in await bModel.SelectBuildVersions()
where $"{v.Major}.{v.Minor}".StartsWith(query)
where $"{v.Major}.{v.Minor}".StartsWith(id)
orderby v.Major descending, v.Minor descending
select new SearchResult()
{
Url = Url.Route("Version Root", new { controller = "front", action = "viewVersion", major = v.Major, minor = v.Minor }),
Label = $"{v.Major}.{v.Minor}".Replace(query, "<strong>" + query + "</strong>"),
Label = $"{v.Major}.{v.Minor}".Replace(id, "<strong>" + id + "</strong>"),
Title = "",
Group = Common.SearchVersion
};
@ -100,12 +97,12 @@ orderby s.Text.ToLower().IndexOf(query.ToLower(), StringComparison.Ordinal) asce
var yearResults = from y in await bModel.SelectBuildYears()
where y.ToString().Contains(query)
where y.ToString().Contains(id)
orderby y descending
select new SearchResult()
{
Url = Url.Route("Year Root", new { controller = "front", action = "viewYear", year = y }),
Label = y.ToString().Replace(query, "<strong>" + query + "</strong>"),
Label = y.ToString().Replace(id, "<strong>" + id + "</strong>"),
Title = "",
Group = Common.SearchYear
};
@ -113,13 +110,13 @@ orderby y descending
results.AddRange(yearResults);
var labResults = from l in await bModel.SearchBuildLabs(query)
orderby l.IndexOf(query.ToLower()) ascending,
var labResults = from l in await bModel.SearchBuildLabs(id)
orderby l.IndexOf(id.ToLower()) ascending,
l.Length ascending
select new SearchResult()
{
Url = Url.Route("Lab Root", new { controller = "front", action = "viewLab", lab = l.Replace('/', '-') }),
Label = l.Replace(query, $"<strong>{query}</strong>"),
Label = l.Replace(id, $"<strong>{id}</strong>"),
Title = l,
Group = Common.SearchLab
};
@ -128,13 +125,13 @@ l.Length ascending
var buildResults = from b in await bModel.Select()
where b.FullBuildString.ToLower().Contains(query.ToLower())
orderby b.FullBuildString.ToLower().IndexOf(query.ToLower(), StringComparison.Ordinal) ascending,
where b.FullBuildString.ToLower().Contains(id.ToLower())
orderby b.FullBuildString.ToLower().IndexOf(id.ToLower(), StringComparison.Ordinal) ascending,
b.BuildTime descending
select new SearchResult()
{
Url = Url.Route("Build", new { controller = "front", action = "viewBuild", id = b.Id }),
Label = b.FullBuildString.Replace(query, $"<strong>{query}</strong>"),
Label = b.FullBuildString.Replace(id, $"<strong>{id}</strong>"),
Title = b.FullBuildString,
Group = Common.SearchBuild
};

View File

@ -2,5 +2,19 @@
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.web>
<httpModules>
<add name="Glimpse" type="Glimpse.AspNet.HttpModule, Glimpse.AspNet" xdt:Transform="Insert" />
</httpModules>
<httpHandlers>
<add path="glimpse.axd" verb="GET" type="Glimpse.AspNet.HttpHandler, Glimpse.AspNet" xdt:Transform="Insert" />
</httpHandlers>
</system.web>
<system.webServer>
<handlers>
<add name="Glimpse" path="glimpse.axd" verb="GET" type="Glimpse.AspNet.HttpHandler, Glimpse.AspNet" preCondition="integratedMode" xdt:Transform="Insert" />
</handlers>
<modules>
<add name="Glimpse" type="Glimpse.AspNet.HttpModule, Glimpse.AspNet" preCondition="integratedMode" xdt:Transform="Insert" />
</modules>
</system.webServer>
</configuration>

View File

@ -35,21 +35,21 @@
</providers>
</roleManager>
<httpModules>
<add name="Glimpse" type="Glimpse.AspNet.HttpModule, Glimpse.AspNet" />
</httpModules>
<httpHandlers>
<add path="glimpse.axd" verb="GET" type="Glimpse.AspNet.HttpHandler, Glimpse.AspNet" />
</httpHandlers>
</system.web>
<system.webServer>
<urlCompression doDynamicCompression="true" />
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="Glimpse" path="glimpse.axd" verb="GET" type="Glimpse.AspNet.HttpHandler, Glimpse.AspNet" preCondition="integratedMode" />
</handlers>
<modules>
</modules>
<rewrite>
<rules>
<rule name="(2015-05) Support Pages">
@ -83,10 +83,6 @@
</rewriteMap>
</rewriteMaps>
</rewrite>
<validation validateIntegratedModeConfiguration="false" />
<modules>
<add name="Glimpse" type="Glimpse.AspNet.HttpModule, Glimpse.AspNet" preCondition="integratedMode" />
</modules>
</system.webServer>
<system.net>
<mailSettings>

View File

@ -0,0 +1,39 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RedisMongoMigration
{
public class MetaItemKey
{
public string Value { get; set; }
public MetaType Type { get; set; }
public MetaItemKey()
{
}
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
}
}

View File

@ -0,0 +1,58 @@
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
using MongoDB.Driver;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RedisMongoMigration.Mongo
{
public class MetaItemModel
{
[BsonId]
public MetaItemKey Id { get; set; }
public string PageContent { get; set; }
public string MetaDescription { get; set; }
}
public class MetaItem
{
private const string _buildCollectionName = "metaitem";
private MongoClient _dbClient;
private IMongoCollection<MetaItemModel> _buildCollection;
public MetaItem()
{
_dbClient = new MongoClient(new MongoClientSettings()
{
Server = new MongoServerAddress("localhost", 27017)
});
_buildCollection = _dbClient.GetDatabase("BuildFeed").GetCollection<MetaItemModel>(_buildCollectionName);
}
public List<MetaItemModel> Select()
{
var task = _buildCollection.Find(new BsonDocument()).ToListAsync();
task.Wait();
return task.Result;
}
public void Insert(MetaItemModel item)
{
var task = _buildCollection.InsertOneAsync(item);
task.Wait();
}
public void InsertAll(IEnumerable<MetaItemModel> items)
{
var task = _buildCollection.InsertManyAsync(items);
task.Wait();
}
}
}

View File

@ -7,6 +7,9 @@
using MBuildModel = RedisMongoMigration.Mongo.BuildModel;
using MBuild = RedisMongoMigration.Mongo.Build;
using RBuild = RedisMongoMigration.Redis.Build;
using MMetaItemModel = RedisMongoMigration.Mongo.MetaItemModel;
using MMetaItem = RedisMongoMigration.Mongo.MetaItem;
using RMetaItem = RedisMongoMigration.Redis.MetaItem;
using MongoLevelOfFlight = RedisMongoMigration.Mongo.MongoLevelOfFlight;
using RedisLevelOfFlight = RedisMongoMigration.Redis.RedisLevelOfFlight;
using MMemberModel = RedisMongoMigration.Mongo.MemberModel;
@ -48,6 +51,21 @@ static void Main(string[] args)
mb.InsertAll(builds);
Console.WriteLine("Builds: Complete");
var metas = from b in RMetaItem.Select()
select new MMetaItemModel()
{
Id = new MetaItemKey()
{
Type = b.Id.Type,
Value = b.Id.Value
},
MetaDescription = b.MetaDescription,
PageContent = b.PageContent
};
MMetaItem mmi = new MMetaItem();
mmi.InsertAll(metas);
Console.WriteLine("Meta Item: Complete");
var members = from r in RMember.Select()
select new MMemberModel()
{

View File

@ -1,6 +1,8 @@
using NServiceKit.DataAnnotations;
using NServiceKit.DesignPatterns.Model;
using NServiceKit.Redis;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
@ -16,6 +18,16 @@ public class MetaItem : IHasId<MetaItemKey>
public string PageContent { get; set; }
public string MetaDescription { get; set; }
public static IEnumerable<MetaItem> Select()
{
using (RedisClient rClient = new RedisClient("localhost", 6379, db: 1))
{
var client = rClient.As<MetaItem>();
return client.GetAll();
}
}
}
public struct MetaItemKey
@ -35,12 +47,4 @@ public override string ToString()
return $"{Type}:{Value}";
}
}
public enum MetaType
{
Lab,
Version,
Source,
Year
}
}

View File

@ -45,16 +45,16 @@
<HintPath>..\packages\MongoDB.Driver.Core.2.0.1\lib\net45\MongoDB.Driver.Core.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="NServiceKit.Common, Version=1.0.40.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\NServiceKit.Common.1.0.40\lib\net35\NServiceKit.Common.dll</HintPath>
<Reference Include="NServiceKit.Common, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\NServiceKit.Common.1.0.27\lib\net35\NServiceKit.Common.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="NServiceKit.Interfaces, Version=1.0.40.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\NServiceKit.Common.1.0.40\lib\net35\NServiceKit.Interfaces.dll</HintPath>
<Reference Include="NServiceKit.Interfaces, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\NServiceKit.Common.1.0.27\lib\net35\NServiceKit.Interfaces.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="NServiceKit.Redis, Version=1.0.17.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\NServiceKit.Redis.1.0.17\lib\net35\NServiceKit.Redis.dll</HintPath>
<Reference Include="NServiceKit.Redis, Version=1.0.10.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\NServiceKit.Redis.1.0.10\lib\net35\NServiceKit.Redis.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="NServiceKit.Text, Version=1.0.10.0, Culture=neutral, processorArchitecture=MSIL">
@ -73,7 +73,9 @@
</ItemGroup>
<ItemGroup>
<Compile Include="Build.cs" />
<Compile Include="MetaItem.cs" />
<Compile Include="Mongo\Build.cs" />
<Compile Include="Mongo\MetaItem.cs" />
<Compile Include="Mongo\MongoMember.cs" />
<Compile Include="Mongo\MongoRole.cs" />
<Compile Include="Program.cs" />

View File

@ -3,7 +3,7 @@
<package id="MongoDB.Bson" version="2.0.1" targetFramework="net46" />
<package id="MongoDB.Driver" version="2.0.1" targetFramework="net46" />
<package id="MongoDB.Driver.Core" version="2.0.1" targetFramework="net46" />
<package id="NServiceKit.Common" version="1.0.40" targetFramework="net46" />
<package id="NServiceKit.Redis" version="1.0.17" targetFramework="net46" />
<package id="NServiceKit.Common" version="1.0.27" targetFramework="net46" />
<package id="NServiceKit.Redis" version="1.0.10" targetFramework="net46" />
<package id="NServiceKit.Text" version="1.0.10" targetFramework="net46" />
</packages>