using Raven.Client.Documents; using System; using System.Collections.Generic; using System.Threading.Tasks; using zero.Core.Database; using zero.Core.Entities; using zero.Core.Extensions; using zero.Core.Options; namespace zero.Core.Routing { public class NewRouteProvider : NewAbtractRouteProvider { protected Route PageRoute { get; set; } public NewRouteProvider(IZeroDocumentSession session, IZeroOptions options) : base("new.test", session, options) { Options = options; } /// public override async Task Warmup() { PageRoute ??= await ResolvePageRoute(); } /// public override string Url(Country model) { return String.Join(SLASH, PageRoute.Url, "story", model.Alias); } /// public override Route Create(Country model) { return new Route(Alias) { Id = Id(model), Url = Url(model), }.DependsOn(model.Id); } /// public override async Task Resolve(RouteResponse response) { PageRoute resolved = new(response.Route); resolved.Page = await Session.LoadAsync(response.Route.Dependencies[0]); return resolved.Page == null ? null : resolved; } /// public override async Task> All() { return await Session.Query().ToListAsync(); } } }