using System; using Marr.Data; using Marr.Data.Mapping; using NzbDrone.Core.Configuration; using NzbDrone.Core.Datastore.Converters; using NzbDrone.Core.ExternalNotification; using NzbDrone.Core.Indexers; using NzbDrone.Core.Instrumentation; using NzbDrone.Core.Jobs; using NzbDrone.Core.MediaFiles; using NzbDrone.Core.Qualities; using NzbDrone.Core.ReferenceData; using NzbDrone.Core.RootFolders; using NzbDrone.Core.Tv; using BooleanIntConverter = NzbDrone.Core.Datastore.Converters.BooleanIntConverter; namespace NzbDrone.Core.Datastore { public static class TableMapping { private static readonly FluentMappings Mapper = new FluentMappings(true); public static void Map() { RegisterMappers(); Mapper.Entity().RegisterModel("Config"); Mapper.Entity().RegisterModel("RootFolders"); Mapper.Entity().RegisterModel("IndexerDefinitions"); Mapper.Entity().RegisterModel("NewznabDefinitions"); Mapper.Entity().RegisterModel("JobDefinitions"); Mapper.Entity().RegisterModel("ExternalNotificationDefinitions"); Mapper.Entity().RegisterModel("SceneMappings"); Mapper.Entity().RegisterModel("History"); Mapper.Entity().RegisterModel("Series"); Mapper.Entity().RegisterModel("Seasons"); Mapper.Entity().RegisterModel("Episodes"); Mapper.Entity().RegisterModel("EpisodeFiles"); Mapper.Entity().RegisterModel("QualityProfiles"); Mapper.Entity().RegisterModel("QualitySizes"); Mapper.Entity().RegisterModel("Logs"); } private static void RegisterMappers() { MapRepository.Instance.RegisterTypeConverter(typeof(Int32), new Int32Converter()); MapRepository.Instance.RegisterTypeConverter(typeof(Boolean), new BooleanIntConverter()); } private static void RegisterModel(this FluentMappings.MappingsFluentEntity mapBuilder, string tableName) where T : ModelBase { mapBuilder.Table.MapTable(tableName) .Columns .AutoMapSimpleTypeProperties() .For(c => c.Id) .SetPrimaryKey() .SetReturnValue() .SetAutoIncrement(); } } }