From af9c5f846a8d13a57f700fd275cbaa4701f3dc3e Mon Sep 17 00:00:00 2001 From: Dao Yu Lai Date: Wed, 11 Dec 2024 16:10:26 -0800 Subject: [PATCH 1/6] MMI-3130 Reverted previous changes This reverts commit 5f21aa0b1079308603d05306d3e64744abfc65f7. --- .../Areas/Subscriber/Controllers/ContentController.cs | 1 - .../content/form/constants/defaultFormValues.ts | 1 - .../features/content/form/interfaces/IContentForm.ts | 1 - .../src/features/content/form/styled/ContentForm.tsx | 6 ------ app/editor/src/features/content/form/utils/toForm.ts | 1 - app/editor/src/features/content/form/utils/toModel.ts | 1 - .../content/hooks/useCastContentToSearchResult.ts | 1 - .../slices/content/interfaces/IContentSearchResult.ts | 1 - .../features/commentary/utils/castToSearchResult.ts | 1 - .../features/my-reports/constants/defaultContent.ts | 1 - .../edit/settings/template/utils/generateContent.ts | 1 - libs/net/dal/Configuration/ContentConfiguration.cs | 1 - libs/net/entities/Content.cs | 6 ------ .../models/Areas/Editor/Models/Content/ContentModel.cs | 6 ------ libs/net/models/Areas/Report/ContentModel.cs | 7 ------- .../Areas/Services/Models/Content/ContentModel.cs | 7 ------- .../Areas/Services/Models/Report/ContentModel.cs | 7 ------- .../Services/Models/ReportInstance/ContentModel.cs | 7 ------- .../Areas/Subscriber/Models/Content/ContentModel.cs | 7 ------- libs/net/template/Models/ContentModel.cs | 10 ---------- .../npm/core/src/hooks/api/interfaces/IContentModel.ts | 1 - libs/npm/core/src/hooks/api/mocks/contents.ts | 6 ------ 22 files changed, 81 deletions(-) diff --git a/api/net/Areas/Subscriber/Controllers/ContentController.cs b/api/net/Areas/Subscriber/Controllers/ContentController.cs index 5ff6c63a66..aa7207169f 100644 --- a/api/net/Areas/Subscriber/Controllers/ContentController.cs +++ b/api/net/Areas/Subscriber/Controllers/ContentController.cs @@ -247,7 +247,6 @@ public async Task UpdateAsync([FromBody] ContentModel model) content.Summary = model.Summary; content.Body = model.Body; content.Versions = model.Versions; - content.IsCBRAUnqualified = model.IsCBRAUnqualified; foreach (var tonePool in model.TonePools) { // Update or Add. diff --git a/app/editor/src/features/content/form/constants/defaultFormValues.ts b/app/editor/src/features/content/form/constants/defaultFormValues.ts index 3cad4625e3..53ef8453a8 100644 --- a/app/editor/src/features/content/form/constants/defaultFormValues.ts +++ b/app/editor/src/features/content/form/constants/defaultFormValues.ts @@ -48,6 +48,5 @@ export const defaultFormValues = (contentType: ContentTypeName): IContentForm => edition: '', byline: '', createdOn: publishedOn.toString(), - isCBRAUnqualified: false, }; }; diff --git a/app/editor/src/features/content/form/interfaces/IContentForm.ts b/app/editor/src/features/content/form/interfaces/IContentForm.ts index 862272f087..bf5ce8b902 100644 --- a/app/editor/src/features/content/form/interfaces/IContentForm.ts +++ b/app/editor/src/features/content/form/interfaces/IContentForm.ts @@ -29,5 +29,4 @@ export interface IContentForm prep?: number; // Print Content showOther?: boolean; - isCBRAUnqualified: boolean; } diff --git a/app/editor/src/features/content/form/styled/ContentForm.tsx b/app/editor/src/features/content/form/styled/ContentForm.tsx index c441c64462..822cc7f6be 100644 --- a/app/editor/src/features/content/form/styled/ContentForm.tsx +++ b/app/editor/src/features/content/form/styled/ContentForm.tsx @@ -75,12 +75,6 @@ export const ContentForm = styled.div` padding-right: 0.5em; } - .checkbox-cbra { - margin-left: 2em; - margin-top: 2em; - padding-right: 0.5em; - } - .content-properties { flex-grow: 1; padding-top: 1em; diff --git a/app/editor/src/features/content/form/utils/toForm.ts b/app/editor/src/features/content/form/utils/toForm.ts index b783130db2..af087b3eab 100644 --- a/app/editor/src/features/content/form/utils/toForm.ts +++ b/app/editor/src/features/content/form/utils/toForm.ts @@ -55,6 +55,5 @@ export function toForm(model: IContentModel): IContentForm { section: model.section ?? '', edition: model.edition ?? '', version: model.version, - isCBRAUnqualified: model.isCBRAUnqualified, }; } diff --git a/app/editor/src/features/content/form/utils/toModel.ts b/app/editor/src/features/content/form/utils/toModel.ts index 5d3a36ab29..70647ac15b 100644 --- a/app/editor/src/features/content/form/utils/toModel.ts +++ b/app/editor/src/features/content/form/utils/toModel.ts @@ -56,6 +56,5 @@ export function toModel(values: IContentForm): IContentModel { postedOn: values.postedOn ? moment(values.postedOn).toISOString() : undefined, publishedOn: moment(values.publishedOn).toISOString(), version: values.version, - isCBRAUnqualified: values.isCBRAUnqualified, }; } diff --git a/app/editor/src/store/slices/content/hooks/useCastContentToSearchResult.ts b/app/editor/src/store/slices/content/hooks/useCastContentToSearchResult.ts index a31cebe99c..fe4dd4b8dc 100644 --- a/app/editor/src/store/slices/content/hooks/useCastContentToSearchResult.ts +++ b/app/editor/src/store/slices/content/hooks/useCastContentToSearchResult.ts @@ -38,7 +38,6 @@ export const useCastContentToSearchResult = () => { ? content.actions.some((a) => a.id === featuredStoryActionId && a.value === 'true') : false, version: content.version, - isCBRAUnqualified: content.isCBRAUnqualified, }; return result; diff --git a/app/editor/src/store/slices/content/interfaces/IContentSearchResult.ts b/app/editor/src/store/slices/content/interfaces/IContentSearchResult.ts index 0d7ff120e3..5e16383f8a 100644 --- a/app/editor/src/store/slices/content/interfaces/IContentSearchResult.ts +++ b/app/editor/src/store/slices/content/interfaces/IContentSearchResult.ts @@ -26,5 +26,4 @@ export interface IContentSearchResult { transcriptStatus?: WorkOrderStatusName; original: IContentModel; version?: number; - isCBRAUnqualified: boolean; } diff --git a/app/subscriber/src/features/commentary/utils/castToSearchResult.ts b/app/subscriber/src/features/commentary/utils/castToSearchResult.ts index 377a16c667..b107cd4c1b 100644 --- a/app/subscriber/src/features/commentary/utils/castToSearchResult.ts +++ b/app/subscriber/src/features/commentary/utils/castToSearchResult.ts @@ -17,6 +17,5 @@ export const castToSearchResult = (message: IContentMessageModel): IContentSearc quotes: [], userNotifications: [], versions: {}, - isCBRAUnqualified: false, }; }; diff --git a/app/subscriber/src/features/my-reports/constants/defaultContent.ts b/app/subscriber/src/features/my-reports/constants/defaultContent.ts index 9144ba246c..d21598b1b4 100644 --- a/app/subscriber/src/features/my-reports/constants/defaultContent.ts +++ b/app/subscriber/src/features/my-reports/constants/defaultContent.ts @@ -31,5 +31,4 @@ export const defaultContent: IContentModel = { quotes: [], userNotifications: [], versions: {}, - isCBRAUnqualified: false, }; diff --git a/app/subscriber/src/features/my-reports/edit/settings/template/utils/generateContent.ts b/app/subscriber/src/features/my-reports/edit/settings/template/utils/generateContent.ts index f93dd9be94..84f31c328c 100644 --- a/app/subscriber/src/features/my-reports/edit/settings/template/utils/generateContent.ts +++ b/app/subscriber/src/features/my-reports/edit/settings/template/utils/generateContent.ts @@ -63,7 +63,6 @@ export const generateContent = (options: IGenerateContentOptions) => { quotes: [], userNotifications: [], versions: {}, - isCBRAUnqualified: false, ...options.content, }; return entity; diff --git a/libs/net/dal/Configuration/ContentConfiguration.cs b/libs/net/dal/Configuration/ContentConfiguration.cs index f8fba320d8..e2a32a6264 100644 --- a/libs/net/dal/Configuration/ContentConfiguration.cs +++ b/libs/net/dal/Configuration/ContentConfiguration.cs @@ -52,7 +52,6 @@ public override void Configure(EntityTypeBuilder builder) builder.HasIndex(m => new { m.ContentType, m.OtherSource, m.Uid, m.Page, m.Status, m.IsHidden }, "IX_content"); builder.HasIndex(m => new { m.Edition, m.Section, m.Byline }, "IX_print_content"); builder.HasIndex(m => m.Headline, "IX_headline"); - builder.Property(m => m.IsCBRAUnqualified).IsRequired(); base.Configure(builder); } diff --git a/libs/net/entities/Content.cs b/libs/net/entities/Content.cs index 1d148f5d44..2f00e6506d 100644 --- a/libs/net/entities/Content.cs +++ b/libs/net/entities/Content.cs @@ -304,12 +304,6 @@ public class Content : AuditColumns /// public virtual List Quotes { get; } = new List(); - /// - /// get/set - Whether content is CBRA unqualified. - /// - [Column("is_cbra_unqualified")] - public bool IsCBRAUnqualified { get; set; } - #endregion #region Constructors diff --git a/libs/net/models/Areas/Editor/Models/Content/ContentModel.cs b/libs/net/models/Areas/Editor/Models/Content/ContentModel.cs index 1351c5fb8e..403cce05ba 100644 --- a/libs/net/models/Areas/Editor/Models/Content/ContentModel.cs +++ b/libs/net/models/Areas/Editor/Models/Content/ContentModel.cs @@ -239,10 +239,6 @@ public class ContentModel : AuditColumnsModel /// public IEnumerable Quotes { get; set; } = Array.Empty(); - /// - /// get/set - Whether content is CBRA unqualified. - /// - public bool IsCBRAUnqualified { get; set; } #endregion #region Constructors @@ -299,7 +295,6 @@ public ContentModel(Entities.Content entity) : base(entity) this.Links = entity.Links.Select(e => new ContentLinkModel(e)); this.Quotes = entity.Quotes.Select(e => new QuoteModel(e)); this.Versions = entity.Versions; - this.IsCBRAUnqualified = entity.IsCBRAUnqualified; } #endregion @@ -347,7 +342,6 @@ public static explicit operator Entities.Content(ContentModel model) entity.FileReferences.AddRange(model.FileReferences.Select(f => f.ToEntity(entity.Id))); entity.TimeTrackings.AddRange(model.TimeTrackings.Select(t => t.ToEntity(entity.Id))); entity.Quotes.AddRange(model.Quotes.Select(f => f.ToEntity(entity.Id))); - entity.IsCBRAUnqualified = model.IsCBRAUnqualified; return entity; } diff --git a/libs/net/models/Areas/Report/ContentModel.cs b/libs/net/models/Areas/Report/ContentModel.cs index c3683888d6..d4d960128a 100644 --- a/libs/net/models/Areas/Report/ContentModel.cs +++ b/libs/net/models/Areas/Report/ContentModel.cs @@ -204,11 +204,6 @@ public class ContentModel /// get/set - An array of file references. /// public IEnumerable FileReferences { get; set; } = Array.Empty(); - - /// - /// get/set - Whether content is CBRA unqualified. - /// - public bool IsCBRAUnqualified { get; set; } #endregion #region Constructors @@ -254,7 +249,6 @@ public ContentModel(Entities.Content entity) this.Tags = entity.TagsManyToMany.Select(e => new ContentTagModel(e)); this.TonePools = entity.TonePoolsManyToMany.Select(e => new ContentTonePoolModel(e)); this.FileReferences = entity.FileReferences.Select(e => new FileReferenceModel(e)); - this.IsCBRAUnqualified = entity.IsCBRAUnqualified; } /// @@ -294,7 +288,6 @@ public ContentModel(TNO.API.Areas.Services.Models.Content.ContentModel model) this.Tags = model.Tags.Select(e => new ContentTagModel(e)); this.TonePools = model.TonePools.Select(e => new ContentTonePoolModel(e)); this.FileReferences = model.FileReferences.Select(e => new FileReferenceModel(e)); - this.IsCBRAUnqualified = model.IsCBRAUnqualified; } #endregion } diff --git a/libs/net/models/Areas/Services/Models/Content/ContentModel.cs b/libs/net/models/Areas/Services/Models/Content/ContentModel.cs index 6864b1e0f0..afe9d64313 100644 --- a/libs/net/models/Areas/Services/Models/Content/ContentModel.cs +++ b/libs/net/models/Areas/Services/Models/Content/ContentModel.cs @@ -244,11 +244,6 @@ public class ContentModel : AuditColumnsModel /// get/set - An array of quotes. /// public IEnumerable Quotes { get; set; } = Array.Empty(); - - /// - /// get/set - Whether content is CBRA unqualified. - /// - public bool IsCBRAUnqualified { get; set; } #endregion #region Constructors @@ -305,7 +300,6 @@ public ContentModel(Entities.Content entity, JsonSerializerOptions options) : ba this.Quotes = entity.Quotes.Select(e => new QuoteModel(e)); this.UserNotifications = entity.UserNotifications.Select(un => new UserContentNotificationModel(un)); this.Versions = entity.Versions; - this.IsCBRAUnqualified = entity.IsCBRAUnqualified; } #endregion @@ -352,7 +346,6 @@ public static explicit operator Entities.Content(ContentModel model) entity.FileReferences.AddRange(model.FileReferences.Select(f => f.ToEntity(entity.Id))); entity.NotificationsManyToMany.AddRange(model.Notifications.Select(n => (Entities.NotificationInstance)n)); entity.Quotes.AddRange(model.Quotes.Select(f => f.ToEntity(entity.Id))); - entity.IsCBRAUnqualified = model.IsCBRAUnqualified; return entity; } diff --git a/libs/net/models/Areas/Services/Models/Report/ContentModel.cs b/libs/net/models/Areas/Services/Models/Report/ContentModel.cs index 43e64560d7..d13c2f4076 100644 --- a/libs/net/models/Areas/Services/Models/Report/ContentModel.cs +++ b/libs/net/models/Areas/Services/Models/Report/ContentModel.cs @@ -204,11 +204,6 @@ public class ContentModel /// get/set - An array of file references. /// public IEnumerable FileReferences { get; set; } = Array.Empty(); - - /// - /// get/set - Whether content is CBRA unqualified. - /// - public bool IsCBRAUnqualified { get; set; } #endregion #region Constructors @@ -261,7 +256,6 @@ public ContentModel(Entities.Content entity) this.Labels = entity.Labels.Select(e => new ContentLabelModel(e)); this.TonePools = entity.TonePoolsManyToMany.Select(e => new ContentTonePoolModel(e)); this.FileReferences = entity.FileReferences.Select(e => new FileReferenceModel(e)); - this.IsCBRAUnqualified = entity.IsCBRAUnqualified; } /// @@ -308,7 +302,6 @@ public ContentModel(TNO.API.Areas.Services.Models.Content.ContentModel model) this.Labels = model.Labels.Select(e => new ContentLabelModel(e)); this.TonePools = model.TonePools.Select(e => new ContentTonePoolModel(e)); this.FileReferences = model.FileReferences.Select(e => new FileReferenceModel(e)); - this.IsCBRAUnqualified = model.IsCBRAUnqualified; } #endregion } diff --git a/libs/net/models/Areas/Services/Models/ReportInstance/ContentModel.cs b/libs/net/models/Areas/Services/Models/ReportInstance/ContentModel.cs index 185a94f107..035d2a5bc1 100644 --- a/libs/net/models/Areas/Services/Models/ReportInstance/ContentModel.cs +++ b/libs/net/models/Areas/Services/Models/ReportInstance/ContentModel.cs @@ -204,11 +204,6 @@ public class ContentModel /// get/set - An array of file references. /// public IEnumerable FileReferences { get; set; } = Array.Empty(); - - /// - /// get/set - Whether content is CBRA unqualified. - /// - public bool IsCBRAUnqualified { get; set; } #endregion #region Constructors @@ -261,7 +256,6 @@ public ContentModel(Entities.Content entity) this.Labels = entity.Labels.Select(e => new ContentLabelModel(e)); this.TonePools = entity.TonePoolsManyToMany.Select(e => new ContentTonePoolModel(e)); this.FileReferences = entity.FileReferences.Select(e => new FileReferenceModel(e)); - this.IsCBRAUnqualified = entity.IsCBRAUnqualified; } /// @@ -308,7 +302,6 @@ public ContentModel(TNO.API.Areas.Services.Models.Content.ContentModel model) this.Labels = model.Labels.Select(e => new ContentLabelModel(e)); this.TonePools = model.TonePools.Select(e => new ContentTonePoolModel(e)); this.FileReferences = model.FileReferences.Select(e => new FileReferenceModel(e)); - this.IsCBRAUnqualified = model.IsCBRAUnqualified; } #endregion } diff --git a/libs/net/models/Areas/Subscriber/Models/Content/ContentModel.cs b/libs/net/models/Areas/Subscriber/Models/Content/ContentModel.cs index 4ab1009142..5df5f06232 100644 --- a/libs/net/models/Areas/Subscriber/Models/Content/ContentModel.cs +++ b/libs/net/models/Areas/Subscriber/Models/Content/ContentModel.cs @@ -210,11 +210,6 @@ public class ContentModel : AuditColumnsModel /// get/set - An array of quotes. /// public IEnumerable Quotes { get; set; } = Array.Empty(); - - /// - /// get/set - Whether content is CBRA unqualified. - /// - public bool IsCBRAUnqualified { get; set; } #endregion #region Constructors @@ -267,7 +262,6 @@ public ContentModel(Entities.Content entity) : base(entity) this.TonePools = entity.TonePoolsManyToMany.Select(e => new ContentTonePoolModel(e)); this.Quotes = entity.Quotes.Select(e => new QuoteModel(e)); this.Versions = entity.Versions; - this.IsCBRAUnqualified = entity.IsCBRAUnqualified; } #endregion @@ -312,7 +306,6 @@ public static explicit operator Entities.Content(ContentModel model) entity.Labels.AddRange(model.Labels.Select(f => f.ToEntity(entity.Id))); entity.TonePoolsManyToMany.AddRange(model.TonePools.Select(tp => tp.ToEntity(entity.Id))); entity.Quotes.AddRange(model.Quotes.Select(f => f.ToEntity(entity.Id))); - entity.IsCBRAUnqualified = model.IsCBRAUnqualified; return entity; } diff --git a/libs/net/template/Models/ContentModel.cs b/libs/net/template/Models/ContentModel.cs index 65d7956579..ccd2ca3a86 100644 --- a/libs/net/template/Models/ContentModel.cs +++ b/libs/net/template/Models/ContentModel.cs @@ -219,11 +219,6 @@ public class ContentModel /// get/set - An array of file references. /// public IEnumerable FileReferences { get; set; } = Array.Empty(); - - /// - /// get/set - Whether content is CBRA unqualified. - /// - public bool IsCBRAUnqualified { get; set; } #endregion #region Constructors @@ -283,7 +278,6 @@ public ContentModel(Entities.Content entity, int sortOrder = 0, string sectionNa this.Labels = entity.Labels.Select(e => new ContentLabelModel(e)); this.TonePools = entity.TonePoolsManyToMany.Select(e => new ContentTonePoolModel(e)); this.FileReferences = entity.FileReferences.Select(e => new FileReferenceModel(e)); - this.IsCBRAUnqualified = entity.IsCBRAUnqualified; } /// @@ -337,7 +331,6 @@ public ContentModel(TNO.API.Areas.Editor.Models.Content.ContentModel model, int this.Labels = model.Labels.Select(e => new ContentLabelModel(e)); this.TonePools = model.TonePools.Select(e => new ContentTonePoolModel(e)); this.FileReferences = model.FileReferences.Select(e => new FileReferenceModel(e)); - this.IsCBRAUnqualified = model.IsCBRAUnqualified; } /// @@ -410,7 +403,6 @@ public ContentModel(TNO.API.Areas.Services.Models.Content.ContentModel model, in this.Labels = model.Labels.Select(e => new ContentLabelModel(e)); this.TonePools = model.TonePools.Select(e => new ContentTonePoolModel(e)); this.FileReferences = model.FileReferences.Select(e => new FileReferenceModel(e)); - this.IsCBRAUnqualified = model.IsCBRAUnqualified; } /// @@ -464,7 +456,6 @@ public ContentModel(TNO.API.Areas.Services.Models.Report.ContentModel model, int this.Labels = model.Labels.Select(e => new ContentLabelModel(e)); this.TonePools = model.TonePools.Select(e => new ContentTonePoolModel(e)); this.FileReferences = model.FileReferences.Select(e => new FileReferenceModel(e)); - this.IsCBRAUnqualified = model.IsCBRAUnqualified; } /// @@ -518,7 +509,6 @@ public ContentModel(TNO.API.Areas.Services.Models.ReportInstance.ContentModel mo this.Labels = model.Labels.Select(e => new ContentLabelModel(e)); this.TonePools = model.TonePools.Select(e => new ContentTonePoolModel(e)); this.FileReferences = model.FileReferences.Select(e => new FileReferenceModel(e)); - this.IsCBRAUnqualified = model.IsCBRAUnqualified; } #endregion } diff --git a/libs/npm/core/src/hooks/api/interfaces/IContentModel.ts b/libs/npm/core/src/hooks/api/interfaces/IContentModel.ts index a9f69233e9..8acb003d43 100644 --- a/libs/npm/core/src/hooks/api/interfaces/IContentModel.ts +++ b/libs/npm/core/src/hooks/api/interfaces/IContentModel.ts @@ -70,5 +70,4 @@ export interface IContentModel extends IAuditColumnsModel { // React-Table Properties // TODO: Should not be part of the API interface. isSelected?: boolean; - isCBRAUnqualified: boolean; } diff --git a/libs/npm/core/src/hooks/api/mocks/contents.ts b/libs/npm/core/src/hooks/api/mocks/contents.ts index 9f29a1d323..efc9d622a7 100644 --- a/libs/npm/core/src/hooks/api/mocks/contents.ts +++ b/libs/npm/core/src/hooks/api/mocks/contents.ts @@ -35,7 +35,6 @@ export const mockContents: IContentModel[] = [ quotes: [], userNotifications: [], versions: {}, - isCBRAUnqualified: false, }, { id: 2, @@ -70,7 +69,6 @@ export const mockContents: IContentModel[] = [ quotes: [], userNotifications: [], versions: {}, - isCBRAUnqualified: false, }, { id: 3, @@ -105,7 +103,6 @@ export const mockContents: IContentModel[] = [ quotes: [], userNotifications: [], versions: {}, - isCBRAUnqualified: false, }, { id: 4, @@ -140,7 +137,6 @@ export const mockContents: IContentModel[] = [ quotes: [], userNotifications: [], versions: {}, - isCBRAUnqualified: false, }, { id: 5, @@ -175,7 +171,6 @@ export const mockContents: IContentModel[] = [ quotes: [], userNotifications: [], versions: {}, - isCBRAUnqualified: false, }, { id: 6, @@ -210,6 +205,5 @@ export const mockContents: IContentModel[] = [ quotes: [], userNotifications: [], versions: {}, - isCBRAUnqualified: false, }, ]; From 6772abbfdd6179d564089c2d43e7cee296d69c52 Mon Sep 17 00:00:00 2001 From: Dao Yu Lai Date: Wed, 11 Dec 2024 18:00:08 -0800 Subject: [PATCH 2/6] MMI-3130 Reverted previous changes - added migration scripts --- .../20241212002825_1.3.11.Designer.cs | 7376 +++++++++++++++++ .../dal/Migrations/20241212002825_1.3.11.cs | 34 + .../dal/Migrations/TNOContextModelSnapshot.cs | 4 - 3 files changed, 7410 insertions(+), 4 deletions(-) create mode 100644 libs/net/dal/Migrations/20241212002825_1.3.11.Designer.cs create mode 100644 libs/net/dal/Migrations/20241212002825_1.3.11.cs diff --git a/libs/net/dal/Migrations/20241212002825_1.3.11.Designer.cs b/libs/net/dal/Migrations/20241212002825_1.3.11.Designer.cs new file mode 100644 index 0000000000..e8562179aa --- /dev/null +++ b/libs/net/dal/Migrations/20241212002825_1.3.11.Designer.cs @@ -0,0 +1,7376 @@ +// +using System; +using System.Collections.Generic; +using System.Text.Json; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using TNO.DAL; +using TNO.Entities.Models; + +#nullable disable + +namespace TNO.DAL.Migrations +{ + [DbContext(typeof(TNOContext))] + [Migration("20241212002825_1.3.11")] + partial class _1311 + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "9.0.0") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("TNO.Entities.AVOverviewInstance", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("IsPublished") + .HasColumnType("boolean"); + + b.Property("PublishedOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("published_on"); + + b.Property("Response") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("response") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("TemplateType") + .HasColumnType("integer") + .HasColumnName("template_type"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("PublishedOn") + .IsUnique(); + + b.HasIndex("TemplateType", "PublishedOn"); + + b.ToTable("av_overview_instance"); + }); + + modelBuilder.Entity("TNO.Entities.AVOverviewSection", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Anchors") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("anchors"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("InstanceId") + .HasColumnType("bigint") + .HasColumnName("av_overview_instance_id"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name"); + + b.Property("OtherSource") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("other_source"); + + b.Property("SeriesId") + .HasColumnType("integer") + .HasColumnName("series_id"); + + b.Property("SortOrder") + .HasColumnType("integer") + .HasColumnName("sort_order"); + + b.Property("SourceId") + .HasColumnType("integer") + .HasColumnName("source_id"); + + b.Property("StartTime") + .IsRequired() + .HasMaxLength(8) + .HasColumnType("character varying(8)") + .HasColumnName("start_time"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("InstanceId"); + + b.HasIndex("SeriesId"); + + b.HasIndex("SourceId"); + + b.ToTable("av_overview_section"); + }); + + modelBuilder.Entity("TNO.Entities.AVOverviewSectionItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ContentId") + .HasColumnType("bigint") + .HasColumnName("content_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("ItemType") + .HasColumnType("integer") + .HasColumnName("item_type"); + + b.Property("SectionId") + .HasColumnType("integer") + .HasColumnName("av_overview_section_id"); + + b.Property("SortOrder") + .HasColumnType("integer") + .HasColumnName("sort_order"); + + b.Property("Summary") + .IsRequired() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("summary"); + + b.Property("Time") + .IsRequired() + .HasMaxLength(8) + .HasColumnType("character varying(8)") + .HasColumnName("time"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("ContentId"); + + b.HasIndex("SectionId"); + + b.ToTable("av_overview_section_item"); + }); + + modelBuilder.Entity("TNO.Entities.AVOverviewTemplate", b => + { + b.Property("TemplateType") + .HasColumnType("integer") + .HasColumnName("template_type"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("TemplateId") + .HasColumnType("integer") + .HasColumnName("report_template_id"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("TemplateType"); + + b.HasIndex("TemplateId"); + + b.ToTable("av_overview_template"); + }); + + modelBuilder.Entity("TNO.Entities.AVOverviewTemplateSection", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Anchors") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("anchors"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name"); + + b.Property("OtherSource") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("other_source"); + + b.Property("SeriesId") + .HasColumnType("integer") + .HasColumnName("series_id"); + + b.Property("SortOrder") + .HasColumnType("integer") + .HasColumnName("sort_order"); + + b.Property("SourceId") + .HasColumnType("integer") + .HasColumnName("source_id"); + + b.Property("StartTime") + .IsRequired() + .HasMaxLength(8) + .HasColumnType("character varying(8)") + .HasColumnName("start_time"); + + b.Property("TemplateType") + .HasColumnType("integer") + .HasColumnName("av_overview_template_id"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("SeriesId"); + + b.HasIndex("SourceId"); + + b.HasIndex("TemplateType"); + + b.ToTable("av_overview_template_section"); + }); + + modelBuilder.Entity("TNO.Entities.AVOverviewTemplateSectionItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("ItemType") + .HasColumnType("integer") + .HasColumnName("item_type"); + + b.Property("SectionId") + .HasColumnType("integer") + .HasColumnName("av_overview_template_section_id"); + + b.Property("SortOrder") + .HasColumnType("integer") + .HasColumnName("sort_order"); + + b.Property("Summary") + .IsRequired() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("summary"); + + b.Property("Time") + .IsRequired() + .HasMaxLength(8) + .HasColumnType("character varying(8)") + .HasColumnName("time"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("SectionId"); + + b.ToTable("av_overview_template_section_item"); + }); + + modelBuilder.Entity("TNO.Entities.Action", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("DefaultValue") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("default_value") + .HasDefaultValueSql("''"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("ValueLabel") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("value_label") + .HasDefaultValueSql("''"); + + b.Property("ValueType") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("value_type"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "ValueType", "ValueLabel" }, "IX_action"); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_action_is_enabled"); + + b.HasIndex(new[] { "Name" }, "IX_name") + .IsUnique(); + + b.ToTable("action"); + }); + + modelBuilder.Entity("TNO.Entities.Cache", b => + { + b.Property("Key") + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("key"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("character varying(150)") + .HasColumnName("value"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Key"); + + b.HasIndex(new[] { "Key", "Value" }, "IX_cache"); + + b.ToTable("cache"); + }); + + modelBuilder.Entity("TNO.Entities.ChartTemplate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("IsPublic") + .HasColumnType("boolean") + .HasColumnName("is_public"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("Settings") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("settings") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("Template") + .IsRequired() + .HasColumnType("text") + .HasColumnName("template"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_charttemplate_is_enabled"); + + b.ToTable("chart_template"); + }); + + modelBuilder.Entity("TNO.Entities.Connection", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Configuration") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("configuration") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("ConnectionType") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("connection_type"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("IsReadOnly") + .HasColumnType("boolean") + .HasColumnName("is_read_only"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_connection_is_enabled"); + + b.HasIndex(new[] { "Name" }, "IX_name") + .IsUnique() + .HasDatabaseName("IX_name1"); + + b.ToTable("connection"); + }); + + modelBuilder.Entity("TNO.Entities.Content", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Body") + .IsRequired() + .HasColumnType("text") + .HasColumnName("body"); + + b.Property("Byline") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("character varying(500)") + .HasColumnName("byline"); + + b.Property("ContentType") + .HasColumnType("integer") + .HasColumnName("content_type"); + + b.Property("ContributorId") + .HasColumnType("integer") + .HasColumnName("contributor_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Edition") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("edition"); + + b.Property("ExternalUid") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(500) + .HasColumnType("character varying(500)") + .HasDefaultValue("") + .HasColumnName("external_uid"); + + b.Property("Headline") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("character varying(500)") + .HasColumnName("headline"); + + b.Property("IngestTypeId") + .HasColumnType("integer"); + + b.Property("IsApproved") + .HasColumnType("boolean") + .HasColumnName("is_approved"); + + b.Property("IsHidden") + .HasColumnType("boolean") + .HasColumnName("is_hidden"); + + b.Property("IsPrivate") + .HasColumnType("boolean") + .HasColumnName("is_private"); + + b.Property("LicenseId") + .HasColumnType("integer") + .HasColumnName("license_id"); + + b.Property("MediaTypeId") + .HasColumnType("integer") + .HasColumnName("media_type_id"); + + b.Property("OtherSource") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("source"); + + b.Property("OwnerId") + .HasColumnType("integer") + .HasColumnName("owner_id"); + + b.Property("Page") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("character varying(20)") + .HasColumnName("page"); + + b.Property("PostedOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("posted_on"); + + b.Property("PublishedOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("published_on"); + + b.Property("Section") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("section"); + + b.Property("SeriesId") + .HasColumnType("integer") + .HasColumnName("series_id"); + + b.Property("SourceId") + .HasColumnType("integer") + .HasColumnName("source_id"); + + b.Property("SourceUrl") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("character varying(500)") + .HasColumnName("source_url"); + + b.Property("Status") + .HasColumnType("integer") + .HasColumnName("status"); + + b.Property("Summary") + .IsRequired() + .HasColumnType("text") + .HasColumnName("summary"); + + b.Property("Uid") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("character varying(500)") + .HasColumnName("uid"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.Property>("Versions") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("versions") + .HasDefaultValueSql("'{}'::jsonb"); + + b.HasKey("Id"); + + b.HasIndex("ContributorId"); + + b.HasIndex("IngestTypeId"); + + b.HasIndex("LicenseId"); + + b.HasIndex("MediaTypeId"); + + b.HasIndex("OwnerId"); + + b.HasIndex("SeriesId"); + + b.HasIndex("SourceId"); + + b.HasIndex(new[] { "ContentType", "OtherSource", "Uid", "Page", "Status", "IsHidden" }, "IX_content"); + + b.HasIndex(new[] { "PublishedOn", "CreatedOn" }, "IX_content_dates"); + + b.HasIndex(new[] { "Headline" }, "IX_headline"); + + b.HasIndex(new[] { "Edition", "Section", "Byline" }, "IX_print_content"); + + b.ToTable("content"); + }); + + modelBuilder.Entity("TNO.Entities.ContentAction", b => + { + b.Property("ContentId") + .HasColumnType("bigint") + .HasColumnName("content_id"); + + b.Property("ActionId") + .HasColumnType("integer") + .HasColumnName("action_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("character varying(150)") + .HasColumnName("value"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("ContentId", "ActionId"); + + b.HasIndex("ActionId"); + + b.ToTable("content_action"); + }); + + modelBuilder.Entity("TNO.Entities.ContentLabel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ContentId") + .HasColumnType("bigint") + .HasColumnName("content_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Key") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .HasColumnName("key"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("value"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("ContentId"); + + b.HasIndex(new[] { "Key", "Value" }, "IX_content_label"); + + b.ToTable("content_label"); + }); + + modelBuilder.Entity("TNO.Entities.ContentLink", b => + { + b.Property("ContentId") + .HasColumnType("bigint") + .HasColumnName("content_id"); + + b.Property("LinkId") + .HasColumnType("bigint") + .HasColumnName("link_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Value") + .IsRequired() + .HasColumnType("text") + .HasColumnName("value"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("ContentId", "LinkId"); + + b.HasIndex("LinkId"); + + b.ToTable("content_link"); + }); + + modelBuilder.Entity("TNO.Entities.ContentLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ContentId") + .HasColumnType("bigint") + .HasColumnName("content_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Message") + .IsRequired() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("message"); + + b.Property("Status") + .HasColumnType("integer") + .HasColumnName("status"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("ContentId"); + + b.ToTable("content_log"); + }); + + modelBuilder.Entity("TNO.Entities.ContentReference", b => + { + b.Property("Source") + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("source"); + + b.Property("Uid") + .HasMaxLength(500) + .HasColumnType("character varying(500)") + .HasColumnName("uid"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Metadata") + .HasColumnType("jsonb") + .HasColumnName("metadata"); + + b.Property("PublishedOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("published_on"); + + b.Property("SourceUpdateOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("source_updated_on"); + + b.Property("Status") + .HasColumnType("integer") + .HasColumnName("status"); + + b.Property("Topic") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .HasColumnName("topic"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Source", "Uid"); + + b.HasIndex(new[] { "PublishedOn", "Status" }, "IX_content_reference"); + + b.HasIndex(new[] { "Source", "Uid" }, "IX_source_uid"); + + b.ToTable("content_reference"); + }); + + modelBuilder.Entity("TNO.Entities.ContentTag", b => + { + b.Property("ContentId") + .HasColumnType("bigint") + .HasColumnName("content_id"); + + b.Property("TagId") + .HasColumnType("integer") + .HasColumnName("tag_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("ContentId", "TagId"); + + b.HasIndex("TagId"); + + b.ToTable("content_tag"); + }); + + modelBuilder.Entity("TNO.Entities.ContentTonePool", b => + { + b.Property("ContentId") + .HasColumnType("bigint") + .HasColumnName("content_id"); + + b.Property("TonePoolId") + .HasColumnType("integer") + .HasColumnName("tone_pool_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Value") + .HasColumnType("integer") + .HasColumnName("value"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("ContentId", "TonePoolId"); + + b.HasIndex("TonePoolId"); + + b.ToTable("content_tone"); + }); + + modelBuilder.Entity("TNO.Entities.ContentTopic", b => + { + b.Property("ContentId") + .HasColumnType("bigint") + .HasColumnName("content_id"); + + b.Property("TopicId") + .HasColumnType("integer") + .HasColumnName("topic_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Score") + .HasColumnType("integer") + .HasColumnName("score"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("ContentId", "TopicId"); + + b.HasIndex("TopicId"); + + b.ToTable("content_topic"); + }); + + modelBuilder.Entity("TNO.Entities.ContentTypeAction", b => + { + b.Property("ContentType") + .HasColumnType("integer") + .HasColumnName("content_type"); + + b.Property("ActionId") + .HasColumnType("integer") + .HasColumnName("action_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("ContentType", "ActionId"); + + b.HasIndex("ActionId"); + + b.ToTable("content_type_action"); + }); + + modelBuilder.Entity("TNO.Entities.Contributor", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Aliases") + .HasMaxLength(500) + .HasColumnType("character varying(500)") + .HasColumnName("aliases"); + + b.Property("AutoTranscribe") + .HasColumnType("boolean") + .HasColumnName("auto_transcribe"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("IsPress") + .HasColumnType("boolean") + .HasColumnName("is_press"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("SourceId") + .HasColumnType("integer") + .HasColumnName("source_id"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("SourceId"); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_contributor_is_enabled"); + + b.ToTable("contributor"); + }); + + modelBuilder.Entity("TNO.Entities.DataLocation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ConnectionId") + .HasColumnType("integer") + .HasColumnName("connection_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("ConnectionId"); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_datalocation_is_enabled"); + + b.HasIndex(new[] { "Name" }, "IX_name") + .IsUnique() + .HasDatabaseName("IX_name2"); + + b.ToTable("data_location"); + }); + + modelBuilder.Entity("TNO.Entities.EarnedMedia", b => + { + b.Property("SourceId") + .HasColumnType("integer") + .HasColumnName("source_id"); + + b.Property("ContentType") + .HasColumnType("integer") + .HasColumnName("content_type"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("LengthOfContent") + .HasColumnType("integer") + .HasColumnName("length_of_content"); + + b.Property("Rate") + .HasColumnType("real") + .HasColumnName("rate"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("SourceId", "ContentType"); + + b.ToTable("earned_media"); + }); + + modelBuilder.Entity("TNO.Entities.EventSchedule", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description"); + + b.Property("EventType") + .HasColumnType("integer") + .HasColumnName("event_type"); + + b.Property("FolderId") + .HasColumnType("integer") + .HasColumnName("folder_id"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("LastRanOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_ran_on"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("NotificationId") + .HasColumnType("integer") + .HasColumnName("notification_id"); + + b.Property("ReportId") + .HasColumnType("integer") + .HasColumnName("report_id"); + + b.Property("RequestSentOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("request_sent_on"); + + b.Property("ScheduleId") + .HasColumnType("integer") + .HasColumnName("schedule_id"); + + b.Property("Settings") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("settings") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("FolderId"); + + b.HasIndex("NotificationId"); + + b.HasIndex("ReportId"); + + b.HasIndex("ScheduleId"); + + b.ToTable("event_schedule"); + }); + + modelBuilder.Entity("TNO.Entities.FileReference", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ContentId") + .HasColumnType("bigint") + .HasColumnName("content_id"); + + b.Property("ContentType") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("content_type"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("FileName") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("character varying(500)") + .HasColumnName("file_name"); + + b.Property("IsSyncedToS3") + .HasColumnType("boolean") + .HasColumnName("is_synced_to_s3"); + + b.Property("IsUploaded") + .HasColumnType("boolean") + .HasColumnName("is_uploaded"); + + b.Property("LastSyncedToS3On") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_synced_to_s3_on"); + + b.Property("Path") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("character varying(500)") + .HasColumnName("path"); + + b.Property("RunningTime") + .HasColumnType("bigint") + .HasColumnName("running_time"); + + b.Property("S3Path") + .HasColumnType("text") + .HasColumnName("s3_path"); + + b.Property("Size") + .HasColumnType("bigint") + .HasColumnName("size"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("ContentId"); + + b.ToTable("file_reference"); + }); + + modelBuilder.Entity("TNO.Entities.Filter", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("OwnerId") + .HasColumnType("integer") + .HasColumnName("owner_id"); + + b.Property("Query") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("query") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("Settings") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("settings") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("OwnerId", "Name") + .IsUnique(); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_filter_is_enabled"); + + b.ToTable("filter"); + }); + + modelBuilder.Entity("TNO.Entities.Folder", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("FilterId") + .HasColumnType("integer") + .HasColumnName("filter_id"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("OwnerId") + .HasColumnType("integer") + .HasColumnName("owner_id"); + + b.Property("Settings") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("settings") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("FilterId"); + + b.HasIndex("OwnerId", "Name") + .IsUnique(); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_folder_is_enabled"); + + b.ToTable("folder"); + }); + + modelBuilder.Entity("TNO.Entities.FolderContent", b => + { + b.Property("FolderId") + .HasColumnType("integer") + .HasColumnName("folder_id"); + + b.Property("ContentId") + .HasColumnType("bigint") + .HasColumnName("content_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("SortOrder") + .HasColumnType("integer") + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("FolderId", "ContentId"); + + b.HasIndex("ContentId"); + + b.ToTable("folder_content"); + }); + + modelBuilder.Entity("TNO.Entities.Ingest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Configuration") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("configuration") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("DestinationConnectionId") + .HasColumnType("integer") + .HasColumnName("destination_connection_id"); + + b.Property("IngestTypeId") + .HasColumnType("integer") + .HasColumnName("ingest_type_id"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("MediaTypeId") + .HasColumnType("integer") + .HasColumnName("media_type_id"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .HasColumnName("name"); + + b.Property("ResetRetryAfterDelayMs") + .HasColumnType("integer") + .HasColumnName("reset_retry_after_delay_ms"); + + b.Property("RetryLimit") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(3) + .HasColumnName("retry_limit"); + + b.Property("ScheduleType") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("schedule_type"); + + b.Property("SourceConnectionId") + .HasColumnType("integer") + .HasColumnName("source_connection_id"); + + b.Property("SourceId") + .HasColumnType("integer") + .HasColumnName("source_id"); + + b.Property("Topic") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .HasColumnName("topic"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("DestinationConnectionId"); + + b.HasIndex("MediaTypeId"); + + b.HasIndex("SourceConnectionId"); + + b.HasIndex("SourceId"); + + b.HasIndex(new[] { "IngestTypeId", "SourceId", "Topic" }, "IX_ingest"); + + b.HasIndex(new[] { "Name" }, "IX_name") + .IsUnique() + .HasDatabaseName("IX_name3"); + + b.ToTable("ingest"); + }); + + modelBuilder.Entity("TNO.Entities.IngestDataLocation", b => + { + b.Property("IngestId") + .HasColumnType("integer") + .HasColumnName("ingest_id"); + + b.Property("DataLocationId") + .HasColumnType("integer") + .HasColumnName("data_location_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("IngestId", "DataLocationId"); + + b.HasIndex("DataLocationId"); + + b.ToTable("ingest_data_location"); + }); + + modelBuilder.Entity("TNO.Entities.IngestSchedule", b => + { + b.Property("IngestId") + .HasColumnType("integer") + .HasColumnName("ingest_id"); + + b.Property("ScheduleId") + .HasColumnType("integer") + .HasColumnName("schedule_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("IngestId", "ScheduleId"); + + b.HasIndex("ScheduleId"); + + b.ToTable("ingest_schedule"); + }); + + modelBuilder.Entity("TNO.Entities.IngestState", b => + { + b.Property("IngestId") + .HasColumnType("integer") + .HasColumnName("ingest_id"); + + b.Property("CreationDateOfLastItem") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation_date_of_last_item"); + + b.Property("FailedAttempts") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("failed_attempts"); + + b.Property("LastRanOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_ran_on"); + + b.HasKey("IngestId"); + + b.ToTable("ingest_state"); + }); + + modelBuilder.Entity("TNO.Entities.IngestType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AutoTranscribe") + .HasColumnType("boolean") + .HasColumnName("auto_transcribe"); + + b.Property("ContentType") + .HasColumnType("integer") + .HasColumnName("content_type"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("DisableTranscribe") + .HasColumnType("boolean") + .HasColumnName("disable_transcribe"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_ingesttype_is_enabled"); + + b.HasIndex(new[] { "Name" }, "IX_name") + .IsUnique() + .HasDatabaseName("IX_name4"); + + b.ToTable("ingest_type"); + }); + + modelBuilder.Entity("TNO.Entities.License", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("TTL") + .HasColumnType("integer") + .HasColumnName("ttl"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_license_is_enabled"); + + b.HasIndex(new[] { "Name" }, "IX_name") + .IsUnique() + .HasDatabaseName("IX_name5"); + + b.ToTable("license"); + }); + + modelBuilder.Entity("TNO.Entities.MediaType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AutoTranscribe") + .HasColumnType("boolean") + .HasColumnName("auto_transcribe"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("ListOption") + .HasColumnType("integer") + .HasColumnName("list_option"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("Settings") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_mediatype_is_enabled"); + + b.HasIndex(new[] { "Name" }, "IX_name") + .IsUnique() + .HasDatabaseName("IX_name6"); + + b.ToTable("media_type"); + }); + + modelBuilder.Entity("TNO.Entities.Metric", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_metric_is_enabled"); + + b.HasIndex(new[] { "Name" }, "IX_name") + .IsUnique() + .HasDatabaseName("IX_name7"); + + b.ToTable("metric"); + }); + + modelBuilder.Entity("TNO.Entities.Minister", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Aliases") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("aliases") + .HasDefaultValueSql("''"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("OrganizationId") + .HasColumnType("integer") + .HasColumnName("organization_id"); + + b.Property("Position") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("position") + .HasDefaultValueSql("''"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.HasIndex("OrganizationId"); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_minister_is_enabled"); + + b.ToTable("minister"); + }); + + modelBuilder.Entity("TNO.Entities.Notification", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AlertOnIndex") + .HasColumnType("boolean") + .HasColumnName("alert_on_index"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("IsPublic") + .HasColumnType("boolean") + .HasColumnName("is_public"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("NotificationType") + .HasColumnType("integer") + .HasColumnName("notification_type"); + + b.Property("OwnerId") + .HasColumnType("integer") + .HasColumnName("owner_id"); + + b.Property("Query") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("query") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("Resend") + .HasColumnType("integer") + .HasColumnName("resend"); + + b.Property("Settings") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("settings") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("TemplateId") + .HasColumnType("integer") + .HasColumnName("notification_template_id"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("TemplateId"); + + b.HasIndex("OwnerId", "Name") + .IsUnique(); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_notification_is_enabled"); + + b.ToTable("notification"); + }); + + modelBuilder.Entity("TNO.Entities.NotificationInstance", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Body") + .IsRequired() + .HasColumnType("text") + .HasColumnName("body"); + + b.Property("ContentId") + .HasColumnType("bigint") + .HasColumnName("content_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("NotificationId") + .HasColumnType("integer") + .HasColumnName("notification_id"); + + b.Property("OwnerId") + .HasColumnType("integer") + .HasColumnName("owner_id"); + + b.Property("Response") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("response") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("SentOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("sent_on"); + + b.Property("Status") + .HasColumnType("integer") + .HasColumnName("status"); + + b.Property("Subject") + .IsRequired() + .HasColumnType("text") + .HasColumnName("subject"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("ContentId"); + + b.HasIndex("NotificationId"); + + b.ToTable("notification_instance"); + }); + + modelBuilder.Entity("TNO.Entities.NotificationTemplate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Body") + .IsRequired() + .HasColumnType("text") + .HasColumnName("body"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("IsPublic") + .HasColumnType("boolean") + .HasColumnName("is_public"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("Settings") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("settings") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("Subject") + .IsRequired() + .HasColumnType("text") + .HasColumnName("subject"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.HasIndex("IsPublic", "IsEnabled"); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_notificationtemplate_is_enabled"); + + b.ToTable("notification_template"); + }); + + modelBuilder.Entity("TNO.Entities.Organization", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("ParentId") + .HasColumnType("integer") + .HasColumnName("parent_id"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("ParentId", "Name") + .IsUnique(); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_organization_is_enabled"); + + b.ToTable("organization"); + }); + + modelBuilder.Entity("TNO.Entities.Product", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("IsPublic") + .HasColumnType("boolean") + .HasColumnName("is_public"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("ProductType") + .HasColumnType("integer") + .HasColumnName("product_type"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("TargetProductId") + .HasColumnType("integer") + .HasColumnName("target_product_id"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("Name", "TargetProductId", "ProductType") + .IsUnique(); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_product_is_enabled"); + + b.ToTable("product"); + }); + + modelBuilder.Entity("TNO.Entities.Quote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Byline") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("character varying(500)") + .HasColumnName("byline"); + + b.Property("ContentId") + .HasColumnType("bigint") + .HasColumnName("content_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("IsRelevant") + .HasColumnType("boolean") + .HasColumnName("is_relevant"); + + b.Property("Statement") + .IsRequired() + .HasColumnType("text") + .HasColumnName("statement"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("ContentId"); + + b.HasIndex(new[] { "Statement" }, "IX_statement"); + + b.ToTable("quote"); + }); + + modelBuilder.Entity("TNO.Entities.Report", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("IsPublic") + .HasColumnType("boolean") + .HasColumnName("is_public"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("OwnerId") + .HasColumnType("integer") + .HasColumnName("owner_id"); + + b.Property("Settings") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("settings") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("TemplateId") + .HasColumnType("integer") + .HasColumnName("report_template_id"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("TemplateId"); + + b.HasIndex("OwnerId", "Name") + .IsUnique(); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_report_is_enabled"); + + b.ToTable("report"); + }); + + modelBuilder.Entity("TNO.Entities.ReportInstance", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Body") + .IsRequired() + .HasColumnType("text") + .HasColumnName("body"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("OwnerId") + .HasColumnType("integer") + .HasColumnName("owner_id"); + + b.Property("PublishedOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("published_on"); + + b.Property("ReportId") + .HasColumnType("integer") + .HasColumnName("report_id"); + + b.Property("Response") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("response") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("SentOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("sent_on"); + + b.Property("Status") + .HasColumnType("integer") + .HasColumnName("status"); + + b.Property("Subject") + .IsRequired() + .HasColumnType("text") + .HasColumnName("subject"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("OwnerId"); + + b.HasIndex("ReportId"); + + b.HasIndex(new[] { "PublishedOn", "CreatedOn" }, "IX_report_dates"); + + b.ToTable("report_instance"); + }); + + modelBuilder.Entity("TNO.Entities.ReportInstanceContent", b => + { + b.Property("InstanceId") + .HasColumnType("bigint") + .HasColumnName("report_instance_id"); + + b.Property("ContentId") + .HasColumnType("bigint") + .HasColumnName("content_id"); + + b.Property("SectionName") + .ValueGeneratedOnAdd() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("section_name") + .HasDefaultValueSql("''"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("SortOrder") + .HasColumnType("integer") + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("InstanceId", "ContentId", "SectionName"); + + b.HasIndex("ContentId"); + + b.ToTable("report_instance_content"); + }); + + modelBuilder.Entity("TNO.Entities.ReportSection", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("FilterId") + .HasColumnType("integer") + .HasColumnName("filter_id"); + + b.Property("FolderId") + .HasColumnType("integer") + .HasColumnName("folder_id"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("LinkedReportId") + .HasColumnType("integer") + .HasColumnName("linked_report_id"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("ReportId") + .HasColumnType("integer") + .HasColumnName("report_id"); + + b.Property("SectionType") + .HasColumnType("integer") + .HasColumnName("section_type"); + + b.Property("Settings") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("settings") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("FilterId"); + + b.HasIndex("FolderId"); + + b.HasIndex("LinkedReportId"); + + b.HasIndex("ReportId", "Name") + .IsUnique(); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_reportsection_is_enabled"); + + b.ToTable("report_section"); + }); + + modelBuilder.Entity("TNO.Entities.ReportSectionChartTemplate", b => + { + b.Property("ReportSectionId") + .HasColumnType("integer") + .HasColumnName("report_section_id"); + + b.Property("ChartTemplateId") + .HasColumnType("integer") + .HasColumnName("chart_template_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Settings") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("settings") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("SortOrder") + .HasColumnType("integer") + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("ReportSectionId", "ChartTemplateId"); + + b.HasIndex("ChartTemplateId"); + + b.ToTable("report_section_chart_template"); + }); + + modelBuilder.Entity("TNO.Entities.ReportTemplate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Body") + .IsRequired() + .HasColumnType("text") + .HasColumnName("body"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("IsPublic") + .HasColumnType("boolean") + .HasColumnName("is_public"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("ReportType") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("report_type") + .HasDefaultValueSql("0"); + + b.Property("Settings") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("settings") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("Subject") + .IsRequired() + .HasColumnType("text") + .HasColumnName("subject"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.HasIndex("IsPublic", "IsEnabled"); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_reporttemplate_is_enabled"); + + b.ToTable("report_template"); + }); + + modelBuilder.Entity("TNO.Entities.ReportTemplateChartTemplate", b => + { + b.Property("ReportTemplateId") + .HasColumnType("integer") + .HasColumnName("report_template_id"); + + b.Property("ChartTemplateId") + .HasColumnType("integer") + .HasColumnName("chart_template_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("ReportTemplateId", "ChartTemplateId"); + + b.HasIndex("ChartTemplateId"); + + b.ToTable("report_template_chart_template"); + }); + + modelBuilder.Entity("TNO.Entities.Schedule", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("DayOfMonth") + .HasColumnType("integer") + .HasColumnName("day_of_month"); + + b.Property("DelayMS") + .HasColumnType("integer") + .HasColumnName("delay_ms"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("Repeat") + .HasColumnType("boolean") + .HasColumnName("repeat"); + + b.Property("RequestedById") + .HasColumnType("integer") + .HasColumnName("requested_by_id"); + + b.Property("RunOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("run_on"); + + b.Property("RunOnMonths") + .HasColumnType("integer") + .HasColumnName("run_on_months"); + + b.Property("RunOnWeekDays") + .HasColumnType("integer") + .HasColumnName("run_on_week_days"); + + b.Property("RunOnlyOnce") + .HasColumnType("boolean") + .HasColumnName("run_only_once"); + + b.Property("StartAt") + .HasColumnType("interval") + .HasColumnName("start_at"); + + b.Property("StopAt") + .HasColumnType("interval") + .HasColumnName("stop_at"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("RequestedById"); + + b.HasIndex(new[] { "Name", "IsEnabled" }, "IX_schedule"); + + b.ToTable("schedule"); + }); + + modelBuilder.Entity("TNO.Entities.Sentiment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("Rate") + .HasColumnType("real") + .HasColumnName("rate"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Value") + .HasColumnType("real") + .HasColumnName("value"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_sentiment_is_enabled"); + + b.ToTable("sentiment"); + }); + + modelBuilder.Entity("TNO.Entities.Series", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AutoTranscribe") + .HasColumnType("boolean") + .HasColumnName("auto_transcribe"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsCBRASource") + .HasColumnType("boolean") + .HasColumnName("is_cbra_source"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("IsOther") + .HasColumnType("boolean") + .HasColumnName("is_other"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("SourceId") + .HasColumnType("integer") + .HasColumnName("source_id"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UseInTopics") + .HasColumnType("boolean") + .HasColumnName("use_in_topics"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("SourceId"); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_series_is_enabled"); + + b.ToTable("series"); + }); + + modelBuilder.Entity("TNO.Entities.SeriesMediaTypeSearchMapping", b => + { + b.Property("SeriesId") + .HasColumnType("integer") + .HasColumnName("series_id"); + + b.Property("MediaTypeId") + .HasColumnType("integer") + .HasColumnName("media_type_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("SeriesId", "MediaTypeId"); + + b.HasIndex("MediaTypeId"); + + b.ToTable("series_media_type_search_mapping"); + }); + + modelBuilder.Entity("TNO.Entities.Setting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Value") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(500) + .HasColumnType("character varying(500)") + .HasColumnName("value") + .HasDefaultValueSql("''"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_setting_is_enabled"); + + b.HasIndex(new[] { "Name" }, "IX_setting_name") + .IsUnique(); + + b.ToTable("setting"); + }); + + modelBuilder.Entity("TNO.Entities.Source", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AutoTranscribe") + .HasColumnType("boolean") + .HasColumnName("auto_transcribe"); + + b.Property("Code") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("character varying(20)") + .HasColumnName("code"); + + b.Property("Configuration") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("configuration") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("DisableTranscribe") + .HasColumnType("boolean") + .HasColumnName("disable_transcribe"); + + b.Property("IsCBRASource") + .HasColumnType("boolean") + .HasColumnName("is_cbra_source"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("LicenseId") + .HasColumnType("integer") + .HasColumnName("license_id"); + + b.Property("MediaTypeId") + .HasColumnType("integer") + .HasColumnName("media_type_id"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("OwnerId") + .HasColumnType("integer") + .HasColumnName("owner_id"); + + b.Property("ShortName") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("short_name") + .HasDefaultValueSql("''"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UseInTopics") + .HasColumnType("boolean") + .HasColumnName("use_in_topics"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("LicenseId"); + + b.HasIndex("MediaTypeId"); + + b.HasIndex("OwnerId"); + + b.HasIndex(new[] { "Code" }, "IX_source_code") + .IsUnique(); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_source_is_enabled"); + + b.HasIndex(new[] { "Name" }, "IX_source_name") + .IsUnique(); + + b.ToTable("source"); + }); + + modelBuilder.Entity("TNO.Entities.SourceMediaTypeSearchMapping", b => + { + b.Property("SourceId") + .HasColumnType("integer") + .HasColumnName("source_id"); + + b.Property("MediaTypeId") + .HasColumnType("integer") + .HasColumnName("media_type_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("SourceId", "MediaTypeId"); + + b.HasIndex("MediaTypeId"); + + b.ToTable("source_media_type_search_mapping"); + }); + + modelBuilder.Entity("TNO.Entities.SourceMetric", b => + { + b.Property("SourceId") + .HasColumnType("integer") + .HasColumnName("source_id"); + + b.Property("MetricId") + .HasColumnType("integer") + .HasColumnName("metric_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Earned") + .ValueGeneratedOnAdd() + .HasColumnType("real") + .HasDefaultValue(0f) + .HasColumnName("earned"); + + b.Property("Impression") + .ValueGeneratedOnAdd() + .HasColumnType("real") + .HasDefaultValue(0f) + .HasColumnName("impression"); + + b.Property("Reach") + .ValueGeneratedOnAdd() + .HasColumnType("real") + .HasDefaultValue(0f) + .HasColumnName("reach"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("SourceId", "MetricId"); + + b.HasIndex("MetricId"); + + b.ToTable("source_metric"); + }); + + modelBuilder.Entity("TNO.Entities.SystemMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasColumnType("text") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text") + .HasColumnName("description"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("Message") + .IsRequired() + .HasColumnType("text") + .HasColumnName("message"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name"); + + b.Property("SortOrder") + .HasColumnType("integer") + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasColumnType("text") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on"); + + b.Property("Version") + .HasColumnType("bigint") + .HasColumnName("version"); + + b.HasKey("Id"); + + b.ToTable("system_message"); + }); + + modelBuilder.Entity("TNO.Entities.Tag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Code") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("character varying(15)") + .HasColumnName("code"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "Code" }, "IX_tag_code") + .IsUnique(); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_tag_is_enabled"); + + b.HasIndex(new[] { "Name" }, "IX_tag_name") + .IsUnique(); + + b.ToTable("tag"); + }); + + modelBuilder.Entity("TNO.Entities.TimeTracking", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Activity") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("activity"); + + b.Property("ContentId") + .HasColumnType("bigint") + .HasColumnName("content_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Effort") + .HasColumnType("real") + .HasColumnName("effort"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UserId") + .HasColumnType("integer") + .HasColumnName("user_id"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("ContentId"); + + b.HasIndex("UserId"); + + b.ToTable("time_tracking"); + }); + + modelBuilder.Entity("TNO.Entities.TonePool", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("IsPublic") + .HasColumnType("boolean") + .HasColumnName("is_public"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("OwnerId") + .HasColumnType("integer") + .HasColumnName("owner_id"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "OwnerId", "Name" }, "IX_tone_pool_name") + .IsUnique(); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_tonepool_is_enabled"); + + b.ToTable("tone_pool"); + }); + + modelBuilder.Entity("TNO.Entities.Topic", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("TopicType") + .HasColumnType("integer") + .HasColumnName("topic_type"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_topic_is_enabled"); + + b.HasIndex(new[] { "Name" }, "IX_topic_name") + .IsUnique(); + + b.ToTable("topic"); + }); + + modelBuilder.Entity("TNO.Entities.TopicScoreRule", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CharacterMax") + .HasColumnType("integer") + .HasColumnName("char_max"); + + b.Property("CharacterMin") + .HasColumnType("integer") + .HasColumnName("char_min"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("HasImage") + .HasColumnType("boolean") + .HasColumnName("has_image"); + + b.Property("PageMax") + .HasMaxLength(5) + .HasColumnType("character varying(5)") + .HasColumnName("page_max"); + + b.Property("PageMin") + .HasMaxLength(5) + .HasColumnType("character varying(5)") + .HasColumnName("page_min"); + + b.Property("Score") + .HasColumnType("integer") + .HasColumnName("score"); + + b.Property("Section") + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("section"); + + b.Property("SeriesId") + .HasColumnType("integer") + .HasColumnName("series_id"); + + b.Property("SortOrder") + .HasColumnType("integer") + .HasColumnName("sort_order"); + + b.Property("SourceId") + .HasColumnType("integer") + .HasColumnName("source_id"); + + b.Property("TimeMax") + .HasColumnType("interval") + .HasColumnName("time_max"); + + b.Property("TimeMin") + .HasColumnType("interval") + .HasColumnName("time_min"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("SeriesId"); + + b.HasIndex(new[] { "SourceId", "SeriesId", "Section" }, "IX_source_id_series_id_section"); + + b.ToTable("topic_score_rule"); + }); + + modelBuilder.Entity("TNO.Entities.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AccountType") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("account_type"); + + b.Property("Code") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(10) + .HasColumnType("character varying(10)") + .HasColumnName("code") + .HasDefaultValueSql("''"); + + b.Property("CodeCreatedOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("code_created_on"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("DisplayName") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("display_name") + .HasDefaultValueSql("''"); + + b.Property("Email") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("email") + .HasDefaultValueSql("''"); + + b.Property("EmailVerified") + .HasColumnType("boolean") + .HasColumnName("email_verified"); + + b.Property("FirstName") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("first_name") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("IsSystemAccount") + .HasColumnType("boolean") + .HasColumnName("is_system_account"); + + b.Property("Key") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("key"); + + b.Property("LastLoginOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_login_on"); + + b.Property("LastName") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("last_name") + .HasDefaultValueSql("''"); + + b.Property("Note") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("note") + .HasDefaultValueSql("''"); + + b.Property("Preferences") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("preferences") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("PreferredEmail") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("preferred_email") + .HasDefaultValueSql("''"); + + b.Property("Roles") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(500) + .HasColumnType("character varying(500)") + .HasColumnName("roles") + .HasDefaultValueSql("''"); + + b.Property("Status") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("status"); + + b.Property("UniqueLogins") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("unique_logins") + .HasDefaultValueSql("0"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Username") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .HasColumnName("username"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "Email" }, "IX_email"); + + b.HasIndex(new[] { "Key" }, "IX_key") + .IsUnique(); + + b.HasIndex(new[] { "LastName", "FirstName" }, "IX_last_first_name"); + + b.HasIndex(new[] { "Username" }, "IX_username") + .IsUnique(); + + b.ToTable("user"); + }); + + modelBuilder.Entity("TNO.Entities.UserAVOverview", b => + { + b.Property("UserId") + .HasColumnType("integer") + .HasColumnName("user_id"); + + b.Property("TemplateType") + .HasColumnType("integer") + .HasColumnName("av_overview_template_type"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("IsSubscribed") + .HasColumnType("boolean") + .HasColumnName("is_subscribed"); + + b.Property("SendTo") + .HasColumnType("integer") + .HasColumnName("send_to"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("UserId", "TemplateType"); + + b.HasIndex("TemplateType"); + + b.ToTable("user_av_overview"); + }); + + modelBuilder.Entity("TNO.Entities.UserAVOverviewInstance", b => + { + b.Property("UserId") + .HasColumnType("integer") + .HasColumnName("user_id"); + + b.Property("InstanceId") + .HasColumnType("bigint") + .HasColumnName("report_instance_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Response") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("response") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("SentOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("sent_on"); + + b.Property("Status") + .HasColumnType("integer") + .HasColumnName("status"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("UserId", "InstanceId"); + + b.HasIndex("InstanceId"); + + b.ToTable("user_av_overview_instance"); + }); + + modelBuilder.Entity("TNO.Entities.UserColleague", b => + { + b.Property("UserId") + .HasColumnType("integer") + .HasColumnName("user_id"); + + b.Property("ColleagueId") + .HasColumnType("integer") + .HasColumnName("colleague_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("UserId", "ColleagueId"); + + b.HasIndex("ColleagueId"); + + b.ToTable("user_colleague"); + }); + + modelBuilder.Entity("TNO.Entities.UserContentNotification", b => + { + b.Property("UserId") + .HasColumnType("integer") + .HasColumnName("user_id"); + + b.Property("ContentId") + .HasColumnType("bigint") + .HasColumnName("content_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("IsSubscribed") + .HasColumnType("boolean") + .HasColumnName("is_subscribed"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("UserId", "ContentId"); + + b.HasIndex("ContentId"); + + b.ToTable("user_content_notification"); + }); + + modelBuilder.Entity("TNO.Entities.UserDistribution", b => + { + b.Property("UserId") + .HasColumnType("integer") + .HasColumnName("user_id"); + + b.Property("LinkedUserId") + .HasColumnType("integer") + .HasColumnName("linked_user_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("UserId", "LinkedUserId"); + + b.HasIndex("LinkedUserId"); + + b.ToTable("user_distribution"); + }); + + modelBuilder.Entity("TNO.Entities.UserMediaType", b => + { + b.Property("UserId") + .HasColumnType("integer") + .HasColumnName("user_id"); + + b.Property("MediaTypeId") + .HasColumnType("integer") + .HasColumnName("media_type_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("UserId", "MediaTypeId"); + + b.HasIndex("MediaTypeId"); + + b.ToTable("user_media_type"); + }); + + modelBuilder.Entity("TNO.Entities.UserNotification", b => + { + b.Property("UserId") + .HasColumnType("integer") + .HasColumnName("user_id"); + + b.Property("NotificationId") + .HasColumnType("integer") + .HasColumnName("notification_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("IsSubscribed") + .HasColumnType("boolean") + .HasColumnName("is_subscribed"); + + b.Property("Resend") + .HasColumnType("integer") + .HasColumnName("resend"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("UserId", "NotificationId"); + + b.HasIndex("NotificationId"); + + b.ToTable("user_notification"); + }); + + modelBuilder.Entity("TNO.Entities.UserOrganization", b => + { + b.Property("UserId") + .HasColumnType("integer") + .HasColumnName("user_id"); + + b.Property("OrganizationId") + .HasColumnType("integer") + .HasColumnName("organization_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("UserId", "OrganizationId"); + + b.HasIndex("OrganizationId"); + + b.ToTable("user_organization"); + }); + + modelBuilder.Entity("TNO.Entities.UserProduct", b => + { + b.Property("UserId") + .HasColumnType("integer") + .HasColumnName("user_id"); + + b.Property("ProductId") + .HasColumnType("integer") + .HasColumnName("product_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Status") + .HasColumnType("integer") + .HasColumnName("status"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("UserId", "ProductId"); + + b.HasIndex("ProductId"); + + b.ToTable("user_product"); + }); + + modelBuilder.Entity("TNO.Entities.UserReport", b => + { + b.Property("UserId") + .HasColumnType("integer") + .HasColumnName("user_id"); + + b.Property("ReportId") + .HasColumnType("integer") + .HasColumnName("report_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Format") + .HasColumnType("integer") + .HasColumnName("format"); + + b.Property("IsSubscribed") + .HasColumnType("boolean") + .HasColumnName("is_subscribed"); + + b.Property("SendTo") + .HasColumnType("integer") + .HasColumnName("send_to"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("UserId", "ReportId"); + + b.HasIndex("ReportId"); + + b.ToTable("user_report"); + }); + + modelBuilder.Entity("TNO.Entities.UserReportInstance", b => + { + b.Property("UserId") + .HasColumnType("integer") + .HasColumnName("user_id"); + + b.Property("InstanceId") + .HasColumnType("bigint") + .HasColumnName("report_instance_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("LinkResponse") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("link_response") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("LinkSentOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("link_sent_on"); + + b.Property("LinkStatus") + .HasColumnType("integer") + .HasColumnName("link_status"); + + b.Property("TextResponse") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("text_response") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("TextSentOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("text_sent_on"); + + b.Property("TextStatus") + .HasColumnType("integer") + .HasColumnName("text_status"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("UserId", "InstanceId"); + + b.HasIndex("InstanceId"); + + b.ToTable("user_report_instance"); + }); + + modelBuilder.Entity("TNO.Entities.UserSource", b => + { + b.Property("UserId") + .HasColumnType("integer") + .HasColumnName("user_id"); + + b.Property("SourceId") + .HasColumnType("integer") + .HasColumnName("source_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("UserId", "SourceId"); + + b.HasIndex("SourceId"); + + b.ToTable("user_source"); + }); + + modelBuilder.Entity("TNO.Entities.WorkOrder", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AssignedId") + .HasColumnType("integer") + .HasColumnName("assigned_id"); + + b.Property("Configuration") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("configuration") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("ContentId") + .HasColumnType("bigint") + .HasColumnName("content_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("character varying(500)") + .HasColumnName("description"); + + b.Property("Note") + .IsRequired() + .HasColumnType("text") + .HasColumnName("note"); + + b.Property("RequestorId") + .HasColumnType("integer") + .HasColumnName("requestor_id"); + + b.Property("Status") + .HasColumnType("integer") + .HasColumnName("status"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.Property("WorkType") + .HasColumnType("integer") + .HasColumnName("work_type"); + + b.HasKey("Id"); + + b.HasIndex("AssignedId"); + + b.HasIndex("ContentId"); + + b.HasIndex("RequestorId"); + + b.HasIndex(new[] { "WorkType", "Status", "CreatedOn", "RequestorId", "AssignedId" }, "IX_work_order"); + + b.ToTable("work_order"); + }); + + modelBuilder.Entity("TNO.Entities.AVOverviewInstance", b => + { + b.HasOne("TNO.Entities.AVOverviewTemplate", "Template") + .WithMany("Instances") + .HasForeignKey("TemplateType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Template"); + }); + + modelBuilder.Entity("TNO.Entities.AVOverviewSection", b => + { + b.HasOne("TNO.Entities.AVOverviewInstance", "Instance") + .WithMany("Sections") + .HasForeignKey("InstanceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.Series", "Series") + .WithMany() + .HasForeignKey("SeriesId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.Source", "Source") + .WithMany() + .HasForeignKey("SourceId") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("Instance"); + + b.Navigation("Series"); + + b.Navigation("Source"); + }); + + modelBuilder.Entity("TNO.Entities.AVOverviewSectionItem", b => + { + b.HasOne("TNO.Entities.Content", "Content") + .WithMany() + .HasForeignKey("ContentId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.AVOverviewSection", "Section") + .WithMany("Items") + .HasForeignKey("SectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Content"); + + b.Navigation("Section"); + }); + + modelBuilder.Entity("TNO.Entities.AVOverviewTemplate", b => + { + b.HasOne("TNO.Entities.ReportTemplate", "Template") + .WithMany() + .HasForeignKey("TemplateId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Template"); + }); + + modelBuilder.Entity("TNO.Entities.AVOverviewTemplateSection", b => + { + b.HasOne("TNO.Entities.Series", "Series") + .WithMany() + .HasForeignKey("SeriesId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.Source", "Source") + .WithMany() + .HasForeignKey("SourceId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.AVOverviewTemplate", "Template") + .WithMany("Sections") + .HasForeignKey("TemplateType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Series"); + + b.Navigation("Source"); + + b.Navigation("Template"); + }); + + modelBuilder.Entity("TNO.Entities.AVOverviewTemplateSectionItem", b => + { + b.HasOne("TNO.Entities.AVOverviewTemplateSection", "Section") + .WithMany("Items") + .HasForeignKey("SectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Section"); + }); + + modelBuilder.Entity("TNO.Entities.Content", b => + { + b.HasOne("TNO.Entities.Contributor", "Contributor") + .WithMany("Contents") + .HasForeignKey("ContributorId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.IngestType", null) + .WithMany("Contents") + .HasForeignKey("IngestTypeId"); + + b.HasOne("TNO.Entities.License", "License") + .WithMany("Contents") + .HasForeignKey("LicenseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.MediaType", "MediaType") + .WithMany("Contents") + .HasForeignKey("MediaTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.User", "Owner") + .WithMany("Contents") + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("TNO.Entities.Series", "Series") + .WithMany("Contents") + .HasForeignKey("SeriesId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.Source", "Source") + .WithMany("Contents") + .HasForeignKey("SourceId") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("Contributor"); + + b.Navigation("License"); + + b.Navigation("MediaType"); + + b.Navigation("Owner"); + + b.Navigation("Series"); + + b.Navigation("Source"); + }); + + modelBuilder.Entity("TNO.Entities.ContentAction", b => + { + b.HasOne("TNO.Entities.Action", "Action") + .WithMany("ContentsManyToMany") + .HasForeignKey("ActionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.Content", "Content") + .WithMany("ActionsManyToMany") + .HasForeignKey("ContentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Action"); + + b.Navigation("Content"); + }); + + modelBuilder.Entity("TNO.Entities.ContentLabel", b => + { + b.HasOne("TNO.Entities.Content", "Content") + .WithMany("Labels") + .HasForeignKey("ContentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Content"); + }); + + modelBuilder.Entity("TNO.Entities.ContentLink", b => + { + b.HasOne("TNO.Entities.Content", "Content") + .WithMany("Links") + .HasForeignKey("ContentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.Content", "Link") + .WithMany() + .HasForeignKey("LinkId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Content"); + + b.Navigation("Link"); + }); + + modelBuilder.Entity("TNO.Entities.ContentLog", b => + { + b.HasOne("TNO.Entities.Content", "Content") + .WithMany("Logs") + .HasForeignKey("ContentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Content"); + }); + + modelBuilder.Entity("TNO.Entities.ContentTag", b => + { + b.HasOne("TNO.Entities.Content", "Content") + .WithMany("TagsManyToMany") + .HasForeignKey("ContentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.Tag", "Tag") + .WithMany("ContentsManyToMany") + .HasForeignKey("TagId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Content"); + + b.Navigation("Tag"); + }); + + modelBuilder.Entity("TNO.Entities.ContentTonePool", b => + { + b.HasOne("TNO.Entities.Content", "Content") + .WithMany("TonePoolsManyToMany") + .HasForeignKey("ContentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.TonePool", "TonePool") + .WithMany("ContentsManyToMany") + .HasForeignKey("TonePoolId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Content"); + + b.Navigation("TonePool"); + }); + + modelBuilder.Entity("TNO.Entities.ContentTopic", b => + { + b.HasOne("TNO.Entities.Content", "Content") + .WithMany("TopicsManyToMany") + .HasForeignKey("ContentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.Topic", "Topic") + .WithMany("ContentsManyToMany") + .HasForeignKey("TopicId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Content"); + + b.Navigation("Topic"); + }); + + modelBuilder.Entity("TNO.Entities.ContentTypeAction", b => + { + b.HasOne("TNO.Entities.Action", "Action") + .WithMany("ContentTypes") + .HasForeignKey("ActionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Action"); + }); + + modelBuilder.Entity("TNO.Entities.Contributor", b => + { + b.HasOne("TNO.Entities.Source", "Source") + .WithMany("Contributors") + .HasForeignKey("SourceId") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("Source"); + }); + + modelBuilder.Entity("TNO.Entities.DataLocation", b => + { + b.HasOne("TNO.Entities.Connection", "Connection") + .WithMany("DataLocations") + .HasForeignKey("ConnectionId") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("Connection"); + }); + + modelBuilder.Entity("TNO.Entities.EarnedMedia", b => + { + b.HasOne("TNO.Entities.Source", "Source") + .WithMany("EarnedMedia") + .HasForeignKey("SourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Source"); + }); + + modelBuilder.Entity("TNO.Entities.EventSchedule", b => + { + b.HasOne("TNO.Entities.Folder", "Folder") + .WithMany("Events") + .HasForeignKey("FolderId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.Notification", "Notification") + .WithMany("Schedules") + .HasForeignKey("NotificationId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.Report", "Report") + .WithMany("Events") + .HasForeignKey("ReportId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.Schedule", "Schedule") + .WithMany("Events") + .HasForeignKey("ScheduleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Folder"); + + b.Navigation("Notification"); + + b.Navigation("Report"); + + b.Navigation("Schedule"); + }); + + modelBuilder.Entity("TNO.Entities.FileReference", b => + { + b.HasOne("TNO.Entities.Content", "Content") + .WithMany("FileReferences") + .HasForeignKey("ContentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Content"); + }); + + modelBuilder.Entity("TNO.Entities.Filter", b => + { + b.HasOne("TNO.Entities.User", "Owner") + .WithMany("Filters") + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("TNO.Entities.Folder", b => + { + b.HasOne("TNO.Entities.Filter", "Filter") + .WithMany("Folders") + .HasForeignKey("FilterId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.User", "Owner") + .WithMany("Folders") + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("Filter"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("TNO.Entities.FolderContent", b => + { + b.HasOne("TNO.Entities.Content", "Content") + .WithMany("FoldersManyToMany") + .HasForeignKey("ContentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.Folder", "Folder") + .WithMany("ContentManyToMany") + .HasForeignKey("FolderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Content"); + + b.Navigation("Folder"); + }); + + modelBuilder.Entity("TNO.Entities.Ingest", b => + { + b.HasOne("TNO.Entities.Connection", "DestinationConnection") + .WithMany("DestinationIngests") + .HasForeignKey("DestinationConnectionId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("TNO.Entities.IngestType", "IngestType") + .WithMany("Ingests") + .HasForeignKey("IngestTypeId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("TNO.Entities.MediaType", "MediaType") + .WithMany("Ingests") + .HasForeignKey("MediaTypeId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("TNO.Entities.Connection", "SourceConnection") + .WithMany("SourceIngests") + .HasForeignKey("SourceConnectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.Source", "Source") + .WithMany("Ingests") + .HasForeignKey("SourceId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("DestinationConnection"); + + b.Navigation("IngestType"); + + b.Navigation("MediaType"); + + b.Navigation("Source"); + + b.Navigation("SourceConnection"); + }); + + modelBuilder.Entity("TNO.Entities.IngestDataLocation", b => + { + b.HasOne("TNO.Entities.DataLocation", "DataLocation") + .WithMany("IngestsManyToMany") + .HasForeignKey("DataLocationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.Ingest", "Ingest") + .WithMany("DataLocationsManyToMany") + .HasForeignKey("IngestId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DataLocation"); + + b.Navigation("Ingest"); + }); + + modelBuilder.Entity("TNO.Entities.IngestSchedule", b => + { + b.HasOne("TNO.Entities.Ingest", "Ingest") + .WithMany("SchedulesManyToMany") + .HasForeignKey("IngestId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.Schedule", "Schedule") + .WithMany("IngestsManyToMany") + .HasForeignKey("ScheduleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Ingest"); + + b.Navigation("Schedule"); + }); + + modelBuilder.Entity("TNO.Entities.IngestState", b => + { + b.HasOne("TNO.Entities.Ingest", "Ingest") + .WithOne("State") + .HasForeignKey("TNO.Entities.IngestState", "IngestId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Ingest"); + }); + + modelBuilder.Entity("TNO.Entities.Minister", b => + { + b.HasOne("TNO.Entities.Organization", "Organization") + .WithMany("Ministers") + .HasForeignKey("OrganizationId") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("Organization"); + }); + + modelBuilder.Entity("TNO.Entities.Notification", b => + { + b.HasOne("TNO.Entities.User", "Owner") + .WithMany("Notifications") + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.NotificationTemplate", "Template") + .WithMany("Notifications") + .HasForeignKey("TemplateId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + + b.Navigation("Template"); + }); + + modelBuilder.Entity("TNO.Entities.NotificationInstance", b => + { + b.HasOne("TNO.Entities.Content", "Content") + .WithMany("NotificationsManyToMany") + .HasForeignKey("ContentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.Notification", "Notification") + .WithMany("Instances") + .HasForeignKey("NotificationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Content"); + + b.Navigation("Notification"); + }); + + modelBuilder.Entity("TNO.Entities.Organization", b => + { + b.HasOne("TNO.Entities.Organization", "Parent") + .WithMany("Children") + .HasForeignKey("ParentId") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("TNO.Entities.Quote", b => + { + b.HasOne("TNO.Entities.Content", "Content") + .WithMany("Quotes") + .HasForeignKey("ContentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Content"); + }); + + modelBuilder.Entity("TNO.Entities.Report", b => + { + b.HasOne("TNO.Entities.User", "Owner") + .WithMany("Reports") + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.ReportTemplate", "Template") + .WithMany("Reports") + .HasForeignKey("TemplateId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + + b.Navigation("Template"); + }); + + modelBuilder.Entity("TNO.Entities.ReportInstance", b => + { + b.HasOne("TNO.Entities.User", "Owner") + .WithMany("ReportInstances") + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.Report", "Report") + .WithMany("Instances") + .HasForeignKey("ReportId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + + b.Navigation("Report"); + }); + + modelBuilder.Entity("TNO.Entities.ReportInstanceContent", b => + { + b.HasOne("TNO.Entities.Content", "Content") + .WithMany("ReportsManyToMany") + .HasForeignKey("ContentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.ReportInstance", "Instance") + .WithMany("ContentManyToMany") + .HasForeignKey("InstanceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Content"); + + b.Navigation("Instance"); + }); + + modelBuilder.Entity("TNO.Entities.ReportSection", b => + { + b.HasOne("TNO.Entities.Filter", "Filter") + .WithMany("ReportSections") + .HasForeignKey("FilterId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.Folder", "Folder") + .WithMany("ReportSections") + .HasForeignKey("FolderId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.Report", "LinkedReport") + .WithMany() + .HasForeignKey("LinkedReportId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.Report", "Report") + .WithMany("Sections") + .HasForeignKey("ReportId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Filter"); + + b.Navigation("Folder"); + + b.Navigation("LinkedReport"); + + b.Navigation("Report"); + }); + + modelBuilder.Entity("TNO.Entities.ReportSectionChartTemplate", b => + { + b.HasOne("TNO.Entities.ChartTemplate", "ChartTemplate") + .WithMany("ReportSectionsManyToMany") + .HasForeignKey("ChartTemplateId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.ReportSection", "ReportSection") + .WithMany("ChartTemplatesManyToMany") + .HasForeignKey("ReportSectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ChartTemplate"); + + b.Navigation("ReportSection"); + }); + + modelBuilder.Entity("TNO.Entities.ReportTemplateChartTemplate", b => + { + b.HasOne("TNO.Entities.ChartTemplate", "ChartTemplate") + .WithMany("ReportTemplatesManyToMany") + .HasForeignKey("ChartTemplateId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.ReportTemplate", "ReportTemplate") + .WithMany("ChartTemplatesManyToMany") + .HasForeignKey("ReportTemplateId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ChartTemplate"); + + b.Navigation("ReportTemplate"); + }); + + modelBuilder.Entity("TNO.Entities.Schedule", b => + { + b.HasOne("TNO.Entities.User", "RequestedBy") + .WithMany() + .HasForeignKey("RequestedById") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("RequestedBy"); + }); + + modelBuilder.Entity("TNO.Entities.Series", b => + { + b.HasOne("TNO.Entities.Source", "Source") + .WithMany("Series") + .HasForeignKey("SourceId") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("Source"); + }); + + modelBuilder.Entity("TNO.Entities.SeriesMediaTypeSearchMapping", b => + { + b.HasOne("TNO.Entities.MediaType", "MediaType") + .WithMany("SeriesSearchMappingsManyToMany") + .HasForeignKey("MediaTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.Series", "Series") + .WithMany("MediaTypeSearchMappingsManyToMany") + .HasForeignKey("SeriesId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("MediaType"); + + b.Navigation("Series"); + }); + + modelBuilder.Entity("TNO.Entities.Source", b => + { + b.HasOne("TNO.Entities.License", "License") + .WithMany("Sources") + .HasForeignKey("LicenseId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("TNO.Entities.MediaType", "MediaType") + .WithMany("Sources") + .HasForeignKey("MediaTypeId") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("TNO.Entities.User", "Owner") + .WithMany() + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("License"); + + b.Navigation("MediaType"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("TNO.Entities.SourceMediaTypeSearchMapping", b => + { + b.HasOne("TNO.Entities.MediaType", "MediaType") + .WithMany("SourceSearchMappingsManyToMany") + .HasForeignKey("MediaTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.Source", "Source") + .WithMany("MediaTypeSearchMappingsManyToMany") + .HasForeignKey("SourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("MediaType"); + + b.Navigation("Source"); + }); + + modelBuilder.Entity("TNO.Entities.SourceMetric", b => + { + b.HasOne("TNO.Entities.Metric", "Metric") + .WithMany("SourcesManyToMany") + .HasForeignKey("MetricId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.Source", "Source") + .WithMany("MetricsManyToMany") + .HasForeignKey("SourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Metric"); + + b.Navigation("Source"); + }); + + modelBuilder.Entity("TNO.Entities.TimeTracking", b => + { + b.HasOne("TNO.Entities.Content", "Content") + .WithMany("TimeTrackings") + .HasForeignKey("ContentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.User", "User") + .WithMany("TimeTrackings") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Content"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("TNO.Entities.TonePool", b => + { + b.HasOne("TNO.Entities.User", "Owner") + .WithMany("TonePools") + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("TNO.Entities.TopicScoreRule", b => + { + b.HasOne("TNO.Entities.Series", "Series") + .WithMany("ScoreRules") + .HasForeignKey("SeriesId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.Source", "Source") + .WithMany("ScoreRules") + .HasForeignKey("SourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Series"); + + b.Navigation("Source"); + }); + + modelBuilder.Entity("TNO.Entities.UserAVOverview", b => + { + b.HasOne("TNO.Entities.AVOverviewTemplate", "Template") + .WithMany("SubscribersManyToMany") + .HasForeignKey("TemplateType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.User", "User") + .WithMany("AVOverviewSubscriptionsManyToMany") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Template"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("TNO.Entities.UserAVOverviewInstance", b => + { + b.HasOne("TNO.Entities.AVOverviewInstance", "Instance") + .WithMany("UserInstances") + .HasForeignKey("InstanceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.User", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Instance"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("TNO.Entities.UserColleague", b => + { + b.HasOne("TNO.Entities.User", "Colleague") + .WithMany() + .HasForeignKey("ColleagueId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.User", "User") + .WithMany("ColleaguesManyToMany") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Colleague"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("TNO.Entities.UserContentNotification", b => + { + b.HasOne("TNO.Entities.Content", "Content") + .WithMany("UserNotifications") + .HasForeignKey("ContentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.User", "User") + .WithMany("ContentNotifications") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Content"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("TNO.Entities.UserDistribution", b => + { + b.HasOne("TNO.Entities.User", "LinkedUser") + .WithMany() + .HasForeignKey("LinkedUserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.User", "User") + .WithMany("Distribution") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("LinkedUser"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("TNO.Entities.UserMediaType", b => + { + b.HasOne("TNO.Entities.MediaType", "MediaType") + .WithMany("UsersManyToMany") + .HasForeignKey("MediaTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.User", "User") + .WithMany("MediaTypesManyToMany") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("MediaType"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("TNO.Entities.UserNotification", b => + { + b.HasOne("TNO.Entities.Notification", "Notification") + .WithMany("SubscribersManyToMany") + .HasForeignKey("NotificationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.User", "User") + .WithMany("NotificationSubscriptionsManyToMany") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Notification"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("TNO.Entities.UserOrganization", b => + { + b.HasOne("TNO.Entities.Organization", "Organization") + .WithMany("UsersManyToMany") + .HasForeignKey("OrganizationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.User", "User") + .WithMany("OrganizationsManyToMany") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Organization"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("TNO.Entities.UserProduct", b => + { + b.HasOne("TNO.Entities.Product", "Product") + .WithMany("SubscribersManyToMany") + .HasForeignKey("ProductId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.User", "User") + .WithMany("ProductSubscriptionsManyToMany") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Product"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("TNO.Entities.UserReport", b => + { + b.HasOne("TNO.Entities.Report", "Report") + .WithMany("SubscribersManyToMany") + .HasForeignKey("ReportId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.User", "User") + .WithMany("ReportSubscriptionsManyToMany") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Report"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("TNO.Entities.UserReportInstance", b => + { + b.HasOne("TNO.Entities.ReportInstance", "Instance") + .WithMany("UserInstances") + .HasForeignKey("InstanceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.User", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Instance"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("TNO.Entities.UserSource", b => + { + b.HasOne("TNO.Entities.Source", "Source") + .WithMany("UsersManyToMany") + .HasForeignKey("SourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.User", "User") + .WithMany("SourcesManyToMany") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Source"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("TNO.Entities.WorkOrder", b => + { + b.HasOne("TNO.Entities.User", "Assigned") + .WithMany("WorkOrdersAssigned") + .HasForeignKey("AssignedId") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("TNO.Entities.Content", "Content") + .WithMany("WorkOrders") + .HasForeignKey("ContentId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.User", "Requestor") + .WithMany("WorkOrderRequests") + .HasForeignKey("RequestorId") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("Assigned"); + + b.Navigation("Content"); + + b.Navigation("Requestor"); + }); + + modelBuilder.Entity("TNO.Entities.AVOverviewInstance", b => + { + b.Navigation("Sections"); + + b.Navigation("UserInstances"); + }); + + modelBuilder.Entity("TNO.Entities.AVOverviewSection", b => + { + b.Navigation("Items"); + }); + + modelBuilder.Entity("TNO.Entities.AVOverviewTemplate", b => + { + b.Navigation("Instances"); + + b.Navigation("Sections"); + + b.Navigation("SubscribersManyToMany"); + }); + + modelBuilder.Entity("TNO.Entities.AVOverviewTemplateSection", b => + { + b.Navigation("Items"); + }); + + modelBuilder.Entity("TNO.Entities.Action", b => + { + b.Navigation("ContentTypes"); + + b.Navigation("ContentsManyToMany"); + }); + + modelBuilder.Entity("TNO.Entities.ChartTemplate", b => + { + b.Navigation("ReportSectionsManyToMany"); + + b.Navigation("ReportTemplatesManyToMany"); + }); + + modelBuilder.Entity("TNO.Entities.Connection", b => + { + b.Navigation("DataLocations"); + + b.Navigation("DestinationIngests"); + + b.Navigation("SourceIngests"); + }); + + modelBuilder.Entity("TNO.Entities.Content", b => + { + b.Navigation("ActionsManyToMany"); + + b.Navigation("FileReferences"); + + b.Navigation("FoldersManyToMany"); + + b.Navigation("Labels"); + + b.Navigation("Links"); + + b.Navigation("Logs"); + + b.Navigation("NotificationsManyToMany"); + + b.Navigation("Quotes"); + + b.Navigation("ReportsManyToMany"); + + b.Navigation("TagsManyToMany"); + + b.Navigation("TimeTrackings"); + + b.Navigation("TonePoolsManyToMany"); + + b.Navigation("TopicsManyToMany"); + + b.Navigation("UserNotifications"); + + b.Navigation("WorkOrders"); + }); + + modelBuilder.Entity("TNO.Entities.Contributor", b => + { + b.Navigation("Contents"); + }); + + modelBuilder.Entity("TNO.Entities.DataLocation", b => + { + b.Navigation("IngestsManyToMany"); + }); + + modelBuilder.Entity("TNO.Entities.Filter", b => + { + b.Navigation("Folders"); + + b.Navigation("ReportSections"); + }); + + modelBuilder.Entity("TNO.Entities.Folder", b => + { + b.Navigation("ContentManyToMany"); + + b.Navigation("Events"); + + b.Navigation("ReportSections"); + }); + + modelBuilder.Entity("TNO.Entities.Ingest", b => + { + b.Navigation("DataLocationsManyToMany"); + + b.Navigation("SchedulesManyToMany"); + + b.Navigation("State"); + }); + + modelBuilder.Entity("TNO.Entities.IngestType", b => + { + b.Navigation("Contents"); + + b.Navigation("Ingests"); + }); + + modelBuilder.Entity("TNO.Entities.License", b => + { + b.Navigation("Contents"); + + b.Navigation("Sources"); + }); + + modelBuilder.Entity("TNO.Entities.MediaType", b => + { + b.Navigation("Contents"); + + b.Navigation("Ingests"); + + b.Navigation("SeriesSearchMappingsManyToMany"); + + b.Navigation("SourceSearchMappingsManyToMany"); + + b.Navigation("Sources"); + + b.Navigation("UsersManyToMany"); + }); + + modelBuilder.Entity("TNO.Entities.Metric", b => + { + b.Navigation("SourcesManyToMany"); + }); + + modelBuilder.Entity("TNO.Entities.Notification", b => + { + b.Navigation("Instances"); + + b.Navigation("Schedules"); + + b.Navigation("SubscribersManyToMany"); + }); + + modelBuilder.Entity("TNO.Entities.NotificationTemplate", b => + { + b.Navigation("Notifications"); + }); + + modelBuilder.Entity("TNO.Entities.Organization", b => + { + b.Navigation("Children"); + + b.Navigation("Ministers"); + + b.Navigation("UsersManyToMany"); + }); + + modelBuilder.Entity("TNO.Entities.Product", b => + { + b.Navigation("SubscribersManyToMany"); + }); + + modelBuilder.Entity("TNO.Entities.Report", b => + { + b.Navigation("Events"); + + b.Navigation("Instances"); + + b.Navigation("Sections"); + + b.Navigation("SubscribersManyToMany"); + }); + + modelBuilder.Entity("TNO.Entities.ReportInstance", b => + { + b.Navigation("ContentManyToMany"); + + b.Navigation("UserInstances"); + }); + + modelBuilder.Entity("TNO.Entities.ReportSection", b => + { + b.Navigation("ChartTemplatesManyToMany"); + }); + + modelBuilder.Entity("TNO.Entities.ReportTemplate", b => + { + b.Navigation("ChartTemplatesManyToMany"); + + b.Navigation("Reports"); + }); + + modelBuilder.Entity("TNO.Entities.Schedule", b => + { + b.Navigation("Events"); + + b.Navigation("IngestsManyToMany"); + }); + + modelBuilder.Entity("TNO.Entities.Series", b => + { + b.Navigation("Contents"); + + b.Navigation("MediaTypeSearchMappingsManyToMany"); + + b.Navigation("ScoreRules"); + }); + + modelBuilder.Entity("TNO.Entities.Source", b => + { + b.Navigation("Contents"); + + b.Navigation("Contributors"); + + b.Navigation("EarnedMedia"); + + b.Navigation("Ingests"); + + b.Navigation("MediaTypeSearchMappingsManyToMany"); + + b.Navigation("MetricsManyToMany"); + + b.Navigation("ScoreRules"); + + b.Navigation("Series"); + + b.Navigation("UsersManyToMany"); + }); + + modelBuilder.Entity("TNO.Entities.Tag", b => + { + b.Navigation("ContentsManyToMany"); + }); + + modelBuilder.Entity("TNO.Entities.TonePool", b => + { + b.Navigation("ContentsManyToMany"); + }); + + modelBuilder.Entity("TNO.Entities.Topic", b => + { + b.Navigation("ContentsManyToMany"); + }); + + modelBuilder.Entity("TNO.Entities.User", b => + { + b.Navigation("AVOverviewSubscriptionsManyToMany"); + + b.Navigation("ColleaguesManyToMany"); + + b.Navigation("ContentNotifications"); + + b.Navigation("Contents"); + + b.Navigation("Distribution"); + + b.Navigation("Filters"); + + b.Navigation("Folders"); + + b.Navigation("MediaTypesManyToMany"); + + b.Navigation("NotificationSubscriptionsManyToMany"); + + b.Navigation("Notifications"); + + b.Navigation("OrganizationsManyToMany"); + + b.Navigation("ProductSubscriptionsManyToMany"); + + b.Navigation("ReportInstances"); + + b.Navigation("ReportSubscriptionsManyToMany"); + + b.Navigation("Reports"); + + b.Navigation("SourcesManyToMany"); + + b.Navigation("TimeTrackings"); + + b.Navigation("TonePools"); + + b.Navigation("WorkOrderRequests"); + + b.Navigation("WorkOrdersAssigned"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/libs/net/dal/Migrations/20241212002825_1.3.11.cs b/libs/net/dal/Migrations/20241212002825_1.3.11.cs new file mode 100644 index 0000000000..5093c6e60a --- /dev/null +++ b/libs/net/dal/Migrations/20241212002825_1.3.11.cs @@ -0,0 +1,34 @@ +using Microsoft.EntityFrameworkCore.Migrations; +using TNO.DAL; + +#nullable disable + +namespace TNO.DAL.Migrations +{ + /// + public partial class _1311 : SeedMigration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + PreUp(migrationBuilder); + migrationBuilder.DropColumn( + name: "is_cbra_unqualified", + table: "content"); + PostUp(migrationBuilder); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + PreDown(migrationBuilder); + migrationBuilder.AddColumn( + name: "is_cbra_unqualified", + table: "content", + type: "boolean", + nullable: false, + defaultValue: false); + PostDown(migrationBuilder); + } + } +} diff --git a/libs/net/dal/Migrations/TNOContextModelSnapshot.cs b/libs/net/dal/Migrations/TNOContextModelSnapshot.cs index 91d4a59b9e..10f68f74ba 100644 --- a/libs/net/dal/Migrations/TNOContextModelSnapshot.cs +++ b/libs/net/dal/Migrations/TNOContextModelSnapshot.cs @@ -875,10 +875,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("boolean") .HasColumnName("is_approved"); - b.Property("IsCBRAUnqualified") - .HasColumnType("boolean") - .HasColumnName("is_cbra_unqualified"); - b.Property("IsHidden") .HasColumnType("boolean") .HasColumnName("is_hidden"); From fe615be0747f26ac1d03ee52bdce3aef16a412d1 Mon Sep 17 00:00:00 2001 From: Jeremy Foster Date: Sun, 15 Dec 2024 08:30:04 -0800 Subject: [PATCH 3/6] Fix message alignment (#2364) --- .../src/features/login/styled/SystemMessage.tsx | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/subscriber/src/features/login/styled/SystemMessage.tsx b/app/subscriber/src/features/login/styled/SystemMessage.tsx index b1460188ab..f2d0635a78 100644 --- a/app/subscriber/src/features/login/styled/SystemMessage.tsx +++ b/app/subscriber/src/features/login/styled/SystemMessage.tsx @@ -13,4 +13,16 @@ export const SystemMessage = styled.div` float: right; color: ${(props) => props.theme.css.btnBkPrimary}; } + + .ql-align-left { + text-align: left; + } + + .ql-align-center { + text-align: center; + } + + .ql-align-right { + text-align: right; + } `; From fff7beebd2fd461d8c95a05c10f799c108267422 Mon Sep 17 00:00:00 2001 From: Dao Yu Lai Date: Wed, 11 Dec 2024 16:10:26 -0800 Subject: [PATCH 4/6] MMI-3130 Reverted previous changes This reverts commit 5f21aa0b1079308603d05306d3e64744abfc65f7. --- .../Areas/Subscriber/Controllers/ContentController.cs | 1 - .../content/form/constants/defaultFormValues.ts | 1 - .../features/content/form/interfaces/IContentForm.ts | 1 - .../src/features/content/form/styled/ContentForm.tsx | 6 ------ app/editor/src/features/content/form/utils/toForm.ts | 1 - app/editor/src/features/content/form/utils/toModel.ts | 1 - .../content/hooks/useCastContentToSearchResult.ts | 1 - .../slices/content/interfaces/IContentSearchResult.ts | 1 - .../features/commentary/utils/castToSearchResult.ts | 1 - .../features/my-reports/constants/defaultContent.ts | 1 - .../edit/settings/template/utils/generateContent.ts | 1 - libs/net/dal/Configuration/ContentConfiguration.cs | 1 - libs/net/entities/Content.cs | 6 ------ .../models/Areas/Editor/Models/Content/ContentModel.cs | 6 ------ libs/net/models/Areas/Report/ContentModel.cs | 7 ------- .../Areas/Services/Models/Content/ContentModel.cs | 7 ------- .../Areas/Services/Models/Report/ContentModel.cs | 7 ------- .../Services/Models/ReportInstance/ContentModel.cs | 7 ------- .../Areas/Subscriber/Models/Content/ContentModel.cs | 7 ------- libs/net/template/Models/ContentModel.cs | 10 ---------- .../npm/core/src/hooks/api/interfaces/IContentModel.ts | 1 - libs/npm/core/src/hooks/api/mocks/contents.ts | 6 ------ 22 files changed, 81 deletions(-) diff --git a/api/net/Areas/Subscriber/Controllers/ContentController.cs b/api/net/Areas/Subscriber/Controllers/ContentController.cs index 5ff6c63a66..aa7207169f 100644 --- a/api/net/Areas/Subscriber/Controllers/ContentController.cs +++ b/api/net/Areas/Subscriber/Controllers/ContentController.cs @@ -247,7 +247,6 @@ public async Task UpdateAsync([FromBody] ContentModel model) content.Summary = model.Summary; content.Body = model.Body; content.Versions = model.Versions; - content.IsCBRAUnqualified = model.IsCBRAUnqualified; foreach (var tonePool in model.TonePools) { // Update or Add. diff --git a/app/editor/src/features/content/form/constants/defaultFormValues.ts b/app/editor/src/features/content/form/constants/defaultFormValues.ts index 3cad4625e3..53ef8453a8 100644 --- a/app/editor/src/features/content/form/constants/defaultFormValues.ts +++ b/app/editor/src/features/content/form/constants/defaultFormValues.ts @@ -48,6 +48,5 @@ export const defaultFormValues = (contentType: ContentTypeName): IContentForm => edition: '', byline: '', createdOn: publishedOn.toString(), - isCBRAUnqualified: false, }; }; diff --git a/app/editor/src/features/content/form/interfaces/IContentForm.ts b/app/editor/src/features/content/form/interfaces/IContentForm.ts index 862272f087..bf5ce8b902 100644 --- a/app/editor/src/features/content/form/interfaces/IContentForm.ts +++ b/app/editor/src/features/content/form/interfaces/IContentForm.ts @@ -29,5 +29,4 @@ export interface IContentForm prep?: number; // Print Content showOther?: boolean; - isCBRAUnqualified: boolean; } diff --git a/app/editor/src/features/content/form/styled/ContentForm.tsx b/app/editor/src/features/content/form/styled/ContentForm.tsx index c441c64462..822cc7f6be 100644 --- a/app/editor/src/features/content/form/styled/ContentForm.tsx +++ b/app/editor/src/features/content/form/styled/ContentForm.tsx @@ -75,12 +75,6 @@ export const ContentForm = styled.div` padding-right: 0.5em; } - .checkbox-cbra { - margin-left: 2em; - margin-top: 2em; - padding-right: 0.5em; - } - .content-properties { flex-grow: 1; padding-top: 1em; diff --git a/app/editor/src/features/content/form/utils/toForm.ts b/app/editor/src/features/content/form/utils/toForm.ts index b783130db2..af087b3eab 100644 --- a/app/editor/src/features/content/form/utils/toForm.ts +++ b/app/editor/src/features/content/form/utils/toForm.ts @@ -55,6 +55,5 @@ export function toForm(model: IContentModel): IContentForm { section: model.section ?? '', edition: model.edition ?? '', version: model.version, - isCBRAUnqualified: model.isCBRAUnqualified, }; } diff --git a/app/editor/src/features/content/form/utils/toModel.ts b/app/editor/src/features/content/form/utils/toModel.ts index 5d3a36ab29..70647ac15b 100644 --- a/app/editor/src/features/content/form/utils/toModel.ts +++ b/app/editor/src/features/content/form/utils/toModel.ts @@ -56,6 +56,5 @@ export function toModel(values: IContentForm): IContentModel { postedOn: values.postedOn ? moment(values.postedOn).toISOString() : undefined, publishedOn: moment(values.publishedOn).toISOString(), version: values.version, - isCBRAUnqualified: values.isCBRAUnqualified, }; } diff --git a/app/editor/src/store/slices/content/hooks/useCastContentToSearchResult.ts b/app/editor/src/store/slices/content/hooks/useCastContentToSearchResult.ts index a31cebe99c..fe4dd4b8dc 100644 --- a/app/editor/src/store/slices/content/hooks/useCastContentToSearchResult.ts +++ b/app/editor/src/store/slices/content/hooks/useCastContentToSearchResult.ts @@ -38,7 +38,6 @@ export const useCastContentToSearchResult = () => { ? content.actions.some((a) => a.id === featuredStoryActionId && a.value === 'true') : false, version: content.version, - isCBRAUnqualified: content.isCBRAUnqualified, }; return result; diff --git a/app/editor/src/store/slices/content/interfaces/IContentSearchResult.ts b/app/editor/src/store/slices/content/interfaces/IContentSearchResult.ts index 0d7ff120e3..5e16383f8a 100644 --- a/app/editor/src/store/slices/content/interfaces/IContentSearchResult.ts +++ b/app/editor/src/store/slices/content/interfaces/IContentSearchResult.ts @@ -26,5 +26,4 @@ export interface IContentSearchResult { transcriptStatus?: WorkOrderStatusName; original: IContentModel; version?: number; - isCBRAUnqualified: boolean; } diff --git a/app/subscriber/src/features/commentary/utils/castToSearchResult.ts b/app/subscriber/src/features/commentary/utils/castToSearchResult.ts index 377a16c667..b107cd4c1b 100644 --- a/app/subscriber/src/features/commentary/utils/castToSearchResult.ts +++ b/app/subscriber/src/features/commentary/utils/castToSearchResult.ts @@ -17,6 +17,5 @@ export const castToSearchResult = (message: IContentMessageModel): IContentSearc quotes: [], userNotifications: [], versions: {}, - isCBRAUnqualified: false, }; }; diff --git a/app/subscriber/src/features/my-reports/constants/defaultContent.ts b/app/subscriber/src/features/my-reports/constants/defaultContent.ts index 9144ba246c..d21598b1b4 100644 --- a/app/subscriber/src/features/my-reports/constants/defaultContent.ts +++ b/app/subscriber/src/features/my-reports/constants/defaultContent.ts @@ -31,5 +31,4 @@ export const defaultContent: IContentModel = { quotes: [], userNotifications: [], versions: {}, - isCBRAUnqualified: false, }; diff --git a/app/subscriber/src/features/my-reports/edit/settings/template/utils/generateContent.ts b/app/subscriber/src/features/my-reports/edit/settings/template/utils/generateContent.ts index f93dd9be94..84f31c328c 100644 --- a/app/subscriber/src/features/my-reports/edit/settings/template/utils/generateContent.ts +++ b/app/subscriber/src/features/my-reports/edit/settings/template/utils/generateContent.ts @@ -63,7 +63,6 @@ export const generateContent = (options: IGenerateContentOptions) => { quotes: [], userNotifications: [], versions: {}, - isCBRAUnqualified: false, ...options.content, }; return entity; diff --git a/libs/net/dal/Configuration/ContentConfiguration.cs b/libs/net/dal/Configuration/ContentConfiguration.cs index f8fba320d8..e2a32a6264 100644 --- a/libs/net/dal/Configuration/ContentConfiguration.cs +++ b/libs/net/dal/Configuration/ContentConfiguration.cs @@ -52,7 +52,6 @@ public override void Configure(EntityTypeBuilder builder) builder.HasIndex(m => new { m.ContentType, m.OtherSource, m.Uid, m.Page, m.Status, m.IsHidden }, "IX_content"); builder.HasIndex(m => new { m.Edition, m.Section, m.Byline }, "IX_print_content"); builder.HasIndex(m => m.Headline, "IX_headline"); - builder.Property(m => m.IsCBRAUnqualified).IsRequired(); base.Configure(builder); } diff --git a/libs/net/entities/Content.cs b/libs/net/entities/Content.cs index 1d148f5d44..2f00e6506d 100644 --- a/libs/net/entities/Content.cs +++ b/libs/net/entities/Content.cs @@ -304,12 +304,6 @@ public class Content : AuditColumns /// public virtual List Quotes { get; } = new List(); - /// - /// get/set - Whether content is CBRA unqualified. - /// - [Column("is_cbra_unqualified")] - public bool IsCBRAUnqualified { get; set; } - #endregion #region Constructors diff --git a/libs/net/models/Areas/Editor/Models/Content/ContentModel.cs b/libs/net/models/Areas/Editor/Models/Content/ContentModel.cs index 1351c5fb8e..403cce05ba 100644 --- a/libs/net/models/Areas/Editor/Models/Content/ContentModel.cs +++ b/libs/net/models/Areas/Editor/Models/Content/ContentModel.cs @@ -239,10 +239,6 @@ public class ContentModel : AuditColumnsModel /// public IEnumerable Quotes { get; set; } = Array.Empty(); - /// - /// get/set - Whether content is CBRA unqualified. - /// - public bool IsCBRAUnqualified { get; set; } #endregion #region Constructors @@ -299,7 +295,6 @@ public ContentModel(Entities.Content entity) : base(entity) this.Links = entity.Links.Select(e => new ContentLinkModel(e)); this.Quotes = entity.Quotes.Select(e => new QuoteModel(e)); this.Versions = entity.Versions; - this.IsCBRAUnqualified = entity.IsCBRAUnqualified; } #endregion @@ -347,7 +342,6 @@ public static explicit operator Entities.Content(ContentModel model) entity.FileReferences.AddRange(model.FileReferences.Select(f => f.ToEntity(entity.Id))); entity.TimeTrackings.AddRange(model.TimeTrackings.Select(t => t.ToEntity(entity.Id))); entity.Quotes.AddRange(model.Quotes.Select(f => f.ToEntity(entity.Id))); - entity.IsCBRAUnqualified = model.IsCBRAUnqualified; return entity; } diff --git a/libs/net/models/Areas/Report/ContentModel.cs b/libs/net/models/Areas/Report/ContentModel.cs index c3683888d6..d4d960128a 100644 --- a/libs/net/models/Areas/Report/ContentModel.cs +++ b/libs/net/models/Areas/Report/ContentModel.cs @@ -204,11 +204,6 @@ public class ContentModel /// get/set - An array of file references. /// public IEnumerable FileReferences { get; set; } = Array.Empty(); - - /// - /// get/set - Whether content is CBRA unqualified. - /// - public bool IsCBRAUnqualified { get; set; } #endregion #region Constructors @@ -254,7 +249,6 @@ public ContentModel(Entities.Content entity) this.Tags = entity.TagsManyToMany.Select(e => new ContentTagModel(e)); this.TonePools = entity.TonePoolsManyToMany.Select(e => new ContentTonePoolModel(e)); this.FileReferences = entity.FileReferences.Select(e => new FileReferenceModel(e)); - this.IsCBRAUnqualified = entity.IsCBRAUnqualified; } /// @@ -294,7 +288,6 @@ public ContentModel(TNO.API.Areas.Services.Models.Content.ContentModel model) this.Tags = model.Tags.Select(e => new ContentTagModel(e)); this.TonePools = model.TonePools.Select(e => new ContentTonePoolModel(e)); this.FileReferences = model.FileReferences.Select(e => new FileReferenceModel(e)); - this.IsCBRAUnqualified = model.IsCBRAUnqualified; } #endregion } diff --git a/libs/net/models/Areas/Services/Models/Content/ContentModel.cs b/libs/net/models/Areas/Services/Models/Content/ContentModel.cs index 6864b1e0f0..afe9d64313 100644 --- a/libs/net/models/Areas/Services/Models/Content/ContentModel.cs +++ b/libs/net/models/Areas/Services/Models/Content/ContentModel.cs @@ -244,11 +244,6 @@ public class ContentModel : AuditColumnsModel /// get/set - An array of quotes. /// public IEnumerable Quotes { get; set; } = Array.Empty(); - - /// - /// get/set - Whether content is CBRA unqualified. - /// - public bool IsCBRAUnqualified { get; set; } #endregion #region Constructors @@ -305,7 +300,6 @@ public ContentModel(Entities.Content entity, JsonSerializerOptions options) : ba this.Quotes = entity.Quotes.Select(e => new QuoteModel(e)); this.UserNotifications = entity.UserNotifications.Select(un => new UserContentNotificationModel(un)); this.Versions = entity.Versions; - this.IsCBRAUnqualified = entity.IsCBRAUnqualified; } #endregion @@ -352,7 +346,6 @@ public static explicit operator Entities.Content(ContentModel model) entity.FileReferences.AddRange(model.FileReferences.Select(f => f.ToEntity(entity.Id))); entity.NotificationsManyToMany.AddRange(model.Notifications.Select(n => (Entities.NotificationInstance)n)); entity.Quotes.AddRange(model.Quotes.Select(f => f.ToEntity(entity.Id))); - entity.IsCBRAUnqualified = model.IsCBRAUnqualified; return entity; } diff --git a/libs/net/models/Areas/Services/Models/Report/ContentModel.cs b/libs/net/models/Areas/Services/Models/Report/ContentModel.cs index 43e64560d7..d13c2f4076 100644 --- a/libs/net/models/Areas/Services/Models/Report/ContentModel.cs +++ b/libs/net/models/Areas/Services/Models/Report/ContentModel.cs @@ -204,11 +204,6 @@ public class ContentModel /// get/set - An array of file references. /// public IEnumerable FileReferences { get; set; } = Array.Empty(); - - /// - /// get/set - Whether content is CBRA unqualified. - /// - public bool IsCBRAUnqualified { get; set; } #endregion #region Constructors @@ -261,7 +256,6 @@ public ContentModel(Entities.Content entity) this.Labels = entity.Labels.Select(e => new ContentLabelModel(e)); this.TonePools = entity.TonePoolsManyToMany.Select(e => new ContentTonePoolModel(e)); this.FileReferences = entity.FileReferences.Select(e => new FileReferenceModel(e)); - this.IsCBRAUnqualified = entity.IsCBRAUnqualified; } /// @@ -308,7 +302,6 @@ public ContentModel(TNO.API.Areas.Services.Models.Content.ContentModel model) this.Labels = model.Labels.Select(e => new ContentLabelModel(e)); this.TonePools = model.TonePools.Select(e => new ContentTonePoolModel(e)); this.FileReferences = model.FileReferences.Select(e => new FileReferenceModel(e)); - this.IsCBRAUnqualified = model.IsCBRAUnqualified; } #endregion } diff --git a/libs/net/models/Areas/Services/Models/ReportInstance/ContentModel.cs b/libs/net/models/Areas/Services/Models/ReportInstance/ContentModel.cs index 185a94f107..035d2a5bc1 100644 --- a/libs/net/models/Areas/Services/Models/ReportInstance/ContentModel.cs +++ b/libs/net/models/Areas/Services/Models/ReportInstance/ContentModel.cs @@ -204,11 +204,6 @@ public class ContentModel /// get/set - An array of file references. /// public IEnumerable FileReferences { get; set; } = Array.Empty(); - - /// - /// get/set - Whether content is CBRA unqualified. - /// - public bool IsCBRAUnqualified { get; set; } #endregion #region Constructors @@ -261,7 +256,6 @@ public ContentModel(Entities.Content entity) this.Labels = entity.Labels.Select(e => new ContentLabelModel(e)); this.TonePools = entity.TonePoolsManyToMany.Select(e => new ContentTonePoolModel(e)); this.FileReferences = entity.FileReferences.Select(e => new FileReferenceModel(e)); - this.IsCBRAUnqualified = entity.IsCBRAUnqualified; } /// @@ -308,7 +302,6 @@ public ContentModel(TNO.API.Areas.Services.Models.Content.ContentModel model) this.Labels = model.Labels.Select(e => new ContentLabelModel(e)); this.TonePools = model.TonePools.Select(e => new ContentTonePoolModel(e)); this.FileReferences = model.FileReferences.Select(e => new FileReferenceModel(e)); - this.IsCBRAUnqualified = model.IsCBRAUnqualified; } #endregion } diff --git a/libs/net/models/Areas/Subscriber/Models/Content/ContentModel.cs b/libs/net/models/Areas/Subscriber/Models/Content/ContentModel.cs index 4ab1009142..5df5f06232 100644 --- a/libs/net/models/Areas/Subscriber/Models/Content/ContentModel.cs +++ b/libs/net/models/Areas/Subscriber/Models/Content/ContentModel.cs @@ -210,11 +210,6 @@ public class ContentModel : AuditColumnsModel /// get/set - An array of quotes. /// public IEnumerable Quotes { get; set; } = Array.Empty(); - - /// - /// get/set - Whether content is CBRA unqualified. - /// - public bool IsCBRAUnqualified { get; set; } #endregion #region Constructors @@ -267,7 +262,6 @@ public ContentModel(Entities.Content entity) : base(entity) this.TonePools = entity.TonePoolsManyToMany.Select(e => new ContentTonePoolModel(e)); this.Quotes = entity.Quotes.Select(e => new QuoteModel(e)); this.Versions = entity.Versions; - this.IsCBRAUnqualified = entity.IsCBRAUnqualified; } #endregion @@ -312,7 +306,6 @@ public static explicit operator Entities.Content(ContentModel model) entity.Labels.AddRange(model.Labels.Select(f => f.ToEntity(entity.Id))); entity.TonePoolsManyToMany.AddRange(model.TonePools.Select(tp => tp.ToEntity(entity.Id))); entity.Quotes.AddRange(model.Quotes.Select(f => f.ToEntity(entity.Id))); - entity.IsCBRAUnqualified = model.IsCBRAUnqualified; return entity; } diff --git a/libs/net/template/Models/ContentModel.cs b/libs/net/template/Models/ContentModel.cs index 65d7956579..ccd2ca3a86 100644 --- a/libs/net/template/Models/ContentModel.cs +++ b/libs/net/template/Models/ContentModel.cs @@ -219,11 +219,6 @@ public class ContentModel /// get/set - An array of file references. /// public IEnumerable FileReferences { get; set; } = Array.Empty(); - - /// - /// get/set - Whether content is CBRA unqualified. - /// - public bool IsCBRAUnqualified { get; set; } #endregion #region Constructors @@ -283,7 +278,6 @@ public ContentModel(Entities.Content entity, int sortOrder = 0, string sectionNa this.Labels = entity.Labels.Select(e => new ContentLabelModel(e)); this.TonePools = entity.TonePoolsManyToMany.Select(e => new ContentTonePoolModel(e)); this.FileReferences = entity.FileReferences.Select(e => new FileReferenceModel(e)); - this.IsCBRAUnqualified = entity.IsCBRAUnqualified; } /// @@ -337,7 +331,6 @@ public ContentModel(TNO.API.Areas.Editor.Models.Content.ContentModel model, int this.Labels = model.Labels.Select(e => new ContentLabelModel(e)); this.TonePools = model.TonePools.Select(e => new ContentTonePoolModel(e)); this.FileReferences = model.FileReferences.Select(e => new FileReferenceModel(e)); - this.IsCBRAUnqualified = model.IsCBRAUnqualified; } /// @@ -410,7 +403,6 @@ public ContentModel(TNO.API.Areas.Services.Models.Content.ContentModel model, in this.Labels = model.Labels.Select(e => new ContentLabelModel(e)); this.TonePools = model.TonePools.Select(e => new ContentTonePoolModel(e)); this.FileReferences = model.FileReferences.Select(e => new FileReferenceModel(e)); - this.IsCBRAUnqualified = model.IsCBRAUnqualified; } /// @@ -464,7 +456,6 @@ public ContentModel(TNO.API.Areas.Services.Models.Report.ContentModel model, int this.Labels = model.Labels.Select(e => new ContentLabelModel(e)); this.TonePools = model.TonePools.Select(e => new ContentTonePoolModel(e)); this.FileReferences = model.FileReferences.Select(e => new FileReferenceModel(e)); - this.IsCBRAUnqualified = model.IsCBRAUnqualified; } /// @@ -518,7 +509,6 @@ public ContentModel(TNO.API.Areas.Services.Models.ReportInstance.ContentModel mo this.Labels = model.Labels.Select(e => new ContentLabelModel(e)); this.TonePools = model.TonePools.Select(e => new ContentTonePoolModel(e)); this.FileReferences = model.FileReferences.Select(e => new FileReferenceModel(e)); - this.IsCBRAUnqualified = model.IsCBRAUnqualified; } #endregion } diff --git a/libs/npm/core/src/hooks/api/interfaces/IContentModel.ts b/libs/npm/core/src/hooks/api/interfaces/IContentModel.ts index a9f69233e9..8acb003d43 100644 --- a/libs/npm/core/src/hooks/api/interfaces/IContentModel.ts +++ b/libs/npm/core/src/hooks/api/interfaces/IContentModel.ts @@ -70,5 +70,4 @@ export interface IContentModel extends IAuditColumnsModel { // React-Table Properties // TODO: Should not be part of the API interface. isSelected?: boolean; - isCBRAUnqualified: boolean; } diff --git a/libs/npm/core/src/hooks/api/mocks/contents.ts b/libs/npm/core/src/hooks/api/mocks/contents.ts index 9f29a1d323..efc9d622a7 100644 --- a/libs/npm/core/src/hooks/api/mocks/contents.ts +++ b/libs/npm/core/src/hooks/api/mocks/contents.ts @@ -35,7 +35,6 @@ export const mockContents: IContentModel[] = [ quotes: [], userNotifications: [], versions: {}, - isCBRAUnqualified: false, }, { id: 2, @@ -70,7 +69,6 @@ export const mockContents: IContentModel[] = [ quotes: [], userNotifications: [], versions: {}, - isCBRAUnqualified: false, }, { id: 3, @@ -105,7 +103,6 @@ export const mockContents: IContentModel[] = [ quotes: [], userNotifications: [], versions: {}, - isCBRAUnqualified: false, }, { id: 4, @@ -140,7 +137,6 @@ export const mockContents: IContentModel[] = [ quotes: [], userNotifications: [], versions: {}, - isCBRAUnqualified: false, }, { id: 5, @@ -175,7 +171,6 @@ export const mockContents: IContentModel[] = [ quotes: [], userNotifications: [], versions: {}, - isCBRAUnqualified: false, }, { id: 6, @@ -210,6 +205,5 @@ export const mockContents: IContentModel[] = [ quotes: [], userNotifications: [], versions: {}, - isCBRAUnqualified: false, }, ]; From 5d0971641eedec2a0fea81d47680584ef1255dd4 Mon Sep 17 00:00:00 2001 From: Dao Yu Lai Date: Wed, 11 Dec 2024 18:00:08 -0800 Subject: [PATCH 5/6] MMI-3130 Reverted previous changes - added migration scripts --- .../20241212002825_1.3.11.Designer.cs | 7376 +++++++++++++++++ .../dal/Migrations/20241212002825_1.3.11.cs | 34 + .../dal/Migrations/TNOContextModelSnapshot.cs | 4 - 3 files changed, 7410 insertions(+), 4 deletions(-) create mode 100644 libs/net/dal/Migrations/20241212002825_1.3.11.Designer.cs create mode 100644 libs/net/dal/Migrations/20241212002825_1.3.11.cs diff --git a/libs/net/dal/Migrations/20241212002825_1.3.11.Designer.cs b/libs/net/dal/Migrations/20241212002825_1.3.11.Designer.cs new file mode 100644 index 0000000000..e8562179aa --- /dev/null +++ b/libs/net/dal/Migrations/20241212002825_1.3.11.Designer.cs @@ -0,0 +1,7376 @@ +// +using System; +using System.Collections.Generic; +using System.Text.Json; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using TNO.DAL; +using TNO.Entities.Models; + +#nullable disable + +namespace TNO.DAL.Migrations +{ + [DbContext(typeof(TNOContext))] + [Migration("20241212002825_1.3.11")] + partial class _1311 + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "9.0.0") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("TNO.Entities.AVOverviewInstance", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("IsPublished") + .HasColumnType("boolean"); + + b.Property("PublishedOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("published_on"); + + b.Property("Response") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("response") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("TemplateType") + .HasColumnType("integer") + .HasColumnName("template_type"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("PublishedOn") + .IsUnique(); + + b.HasIndex("TemplateType", "PublishedOn"); + + b.ToTable("av_overview_instance"); + }); + + modelBuilder.Entity("TNO.Entities.AVOverviewSection", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Anchors") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("anchors"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("InstanceId") + .HasColumnType("bigint") + .HasColumnName("av_overview_instance_id"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name"); + + b.Property("OtherSource") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("other_source"); + + b.Property("SeriesId") + .HasColumnType("integer") + .HasColumnName("series_id"); + + b.Property("SortOrder") + .HasColumnType("integer") + .HasColumnName("sort_order"); + + b.Property("SourceId") + .HasColumnType("integer") + .HasColumnName("source_id"); + + b.Property("StartTime") + .IsRequired() + .HasMaxLength(8) + .HasColumnType("character varying(8)") + .HasColumnName("start_time"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("InstanceId"); + + b.HasIndex("SeriesId"); + + b.HasIndex("SourceId"); + + b.ToTable("av_overview_section"); + }); + + modelBuilder.Entity("TNO.Entities.AVOverviewSectionItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ContentId") + .HasColumnType("bigint") + .HasColumnName("content_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("ItemType") + .HasColumnType("integer") + .HasColumnName("item_type"); + + b.Property("SectionId") + .HasColumnType("integer") + .HasColumnName("av_overview_section_id"); + + b.Property("SortOrder") + .HasColumnType("integer") + .HasColumnName("sort_order"); + + b.Property("Summary") + .IsRequired() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("summary"); + + b.Property("Time") + .IsRequired() + .HasMaxLength(8) + .HasColumnType("character varying(8)") + .HasColumnName("time"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("ContentId"); + + b.HasIndex("SectionId"); + + b.ToTable("av_overview_section_item"); + }); + + modelBuilder.Entity("TNO.Entities.AVOverviewTemplate", b => + { + b.Property("TemplateType") + .HasColumnType("integer") + .HasColumnName("template_type"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("TemplateId") + .HasColumnType("integer") + .HasColumnName("report_template_id"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("TemplateType"); + + b.HasIndex("TemplateId"); + + b.ToTable("av_overview_template"); + }); + + modelBuilder.Entity("TNO.Entities.AVOverviewTemplateSection", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Anchors") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("anchors"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name"); + + b.Property("OtherSource") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("other_source"); + + b.Property("SeriesId") + .HasColumnType("integer") + .HasColumnName("series_id"); + + b.Property("SortOrder") + .HasColumnType("integer") + .HasColumnName("sort_order"); + + b.Property("SourceId") + .HasColumnType("integer") + .HasColumnName("source_id"); + + b.Property("StartTime") + .IsRequired() + .HasMaxLength(8) + .HasColumnType("character varying(8)") + .HasColumnName("start_time"); + + b.Property("TemplateType") + .HasColumnType("integer") + .HasColumnName("av_overview_template_id"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("SeriesId"); + + b.HasIndex("SourceId"); + + b.HasIndex("TemplateType"); + + b.ToTable("av_overview_template_section"); + }); + + modelBuilder.Entity("TNO.Entities.AVOverviewTemplateSectionItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("ItemType") + .HasColumnType("integer") + .HasColumnName("item_type"); + + b.Property("SectionId") + .HasColumnType("integer") + .HasColumnName("av_overview_template_section_id"); + + b.Property("SortOrder") + .HasColumnType("integer") + .HasColumnName("sort_order"); + + b.Property("Summary") + .IsRequired() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("summary"); + + b.Property("Time") + .IsRequired() + .HasMaxLength(8) + .HasColumnType("character varying(8)") + .HasColumnName("time"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("SectionId"); + + b.ToTable("av_overview_template_section_item"); + }); + + modelBuilder.Entity("TNO.Entities.Action", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("DefaultValue") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("default_value") + .HasDefaultValueSql("''"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("ValueLabel") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("value_label") + .HasDefaultValueSql("''"); + + b.Property("ValueType") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("value_type"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "ValueType", "ValueLabel" }, "IX_action"); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_action_is_enabled"); + + b.HasIndex(new[] { "Name" }, "IX_name") + .IsUnique(); + + b.ToTable("action"); + }); + + modelBuilder.Entity("TNO.Entities.Cache", b => + { + b.Property("Key") + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("key"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("character varying(150)") + .HasColumnName("value"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Key"); + + b.HasIndex(new[] { "Key", "Value" }, "IX_cache"); + + b.ToTable("cache"); + }); + + modelBuilder.Entity("TNO.Entities.ChartTemplate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("IsPublic") + .HasColumnType("boolean") + .HasColumnName("is_public"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("Settings") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("settings") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("Template") + .IsRequired() + .HasColumnType("text") + .HasColumnName("template"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_charttemplate_is_enabled"); + + b.ToTable("chart_template"); + }); + + modelBuilder.Entity("TNO.Entities.Connection", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Configuration") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("configuration") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("ConnectionType") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("connection_type"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("IsReadOnly") + .HasColumnType("boolean") + .HasColumnName("is_read_only"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_connection_is_enabled"); + + b.HasIndex(new[] { "Name" }, "IX_name") + .IsUnique() + .HasDatabaseName("IX_name1"); + + b.ToTable("connection"); + }); + + modelBuilder.Entity("TNO.Entities.Content", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Body") + .IsRequired() + .HasColumnType("text") + .HasColumnName("body"); + + b.Property("Byline") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("character varying(500)") + .HasColumnName("byline"); + + b.Property("ContentType") + .HasColumnType("integer") + .HasColumnName("content_type"); + + b.Property("ContributorId") + .HasColumnType("integer") + .HasColumnName("contributor_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Edition") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("edition"); + + b.Property("ExternalUid") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(500) + .HasColumnType("character varying(500)") + .HasDefaultValue("") + .HasColumnName("external_uid"); + + b.Property("Headline") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("character varying(500)") + .HasColumnName("headline"); + + b.Property("IngestTypeId") + .HasColumnType("integer"); + + b.Property("IsApproved") + .HasColumnType("boolean") + .HasColumnName("is_approved"); + + b.Property("IsHidden") + .HasColumnType("boolean") + .HasColumnName("is_hidden"); + + b.Property("IsPrivate") + .HasColumnType("boolean") + .HasColumnName("is_private"); + + b.Property("LicenseId") + .HasColumnType("integer") + .HasColumnName("license_id"); + + b.Property("MediaTypeId") + .HasColumnType("integer") + .HasColumnName("media_type_id"); + + b.Property("OtherSource") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("source"); + + b.Property("OwnerId") + .HasColumnType("integer") + .HasColumnName("owner_id"); + + b.Property("Page") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("character varying(20)") + .HasColumnName("page"); + + b.Property("PostedOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("posted_on"); + + b.Property("PublishedOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("published_on"); + + b.Property("Section") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("section"); + + b.Property("SeriesId") + .HasColumnType("integer") + .HasColumnName("series_id"); + + b.Property("SourceId") + .HasColumnType("integer") + .HasColumnName("source_id"); + + b.Property("SourceUrl") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("character varying(500)") + .HasColumnName("source_url"); + + b.Property("Status") + .HasColumnType("integer") + .HasColumnName("status"); + + b.Property("Summary") + .IsRequired() + .HasColumnType("text") + .HasColumnName("summary"); + + b.Property("Uid") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("character varying(500)") + .HasColumnName("uid"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.Property>("Versions") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("versions") + .HasDefaultValueSql("'{}'::jsonb"); + + b.HasKey("Id"); + + b.HasIndex("ContributorId"); + + b.HasIndex("IngestTypeId"); + + b.HasIndex("LicenseId"); + + b.HasIndex("MediaTypeId"); + + b.HasIndex("OwnerId"); + + b.HasIndex("SeriesId"); + + b.HasIndex("SourceId"); + + b.HasIndex(new[] { "ContentType", "OtherSource", "Uid", "Page", "Status", "IsHidden" }, "IX_content"); + + b.HasIndex(new[] { "PublishedOn", "CreatedOn" }, "IX_content_dates"); + + b.HasIndex(new[] { "Headline" }, "IX_headline"); + + b.HasIndex(new[] { "Edition", "Section", "Byline" }, "IX_print_content"); + + b.ToTable("content"); + }); + + modelBuilder.Entity("TNO.Entities.ContentAction", b => + { + b.Property("ContentId") + .HasColumnType("bigint") + .HasColumnName("content_id"); + + b.Property("ActionId") + .HasColumnType("integer") + .HasColumnName("action_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("character varying(150)") + .HasColumnName("value"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("ContentId", "ActionId"); + + b.HasIndex("ActionId"); + + b.ToTable("content_action"); + }); + + modelBuilder.Entity("TNO.Entities.ContentLabel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ContentId") + .HasColumnType("bigint") + .HasColumnName("content_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Key") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .HasColumnName("key"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("value"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("ContentId"); + + b.HasIndex(new[] { "Key", "Value" }, "IX_content_label"); + + b.ToTable("content_label"); + }); + + modelBuilder.Entity("TNO.Entities.ContentLink", b => + { + b.Property("ContentId") + .HasColumnType("bigint") + .HasColumnName("content_id"); + + b.Property("LinkId") + .HasColumnType("bigint") + .HasColumnName("link_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Value") + .IsRequired() + .HasColumnType("text") + .HasColumnName("value"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("ContentId", "LinkId"); + + b.HasIndex("LinkId"); + + b.ToTable("content_link"); + }); + + modelBuilder.Entity("TNO.Entities.ContentLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ContentId") + .HasColumnType("bigint") + .HasColumnName("content_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Message") + .IsRequired() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("message"); + + b.Property("Status") + .HasColumnType("integer") + .HasColumnName("status"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("ContentId"); + + b.ToTable("content_log"); + }); + + modelBuilder.Entity("TNO.Entities.ContentReference", b => + { + b.Property("Source") + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("source"); + + b.Property("Uid") + .HasMaxLength(500) + .HasColumnType("character varying(500)") + .HasColumnName("uid"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Metadata") + .HasColumnType("jsonb") + .HasColumnName("metadata"); + + b.Property("PublishedOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("published_on"); + + b.Property("SourceUpdateOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("source_updated_on"); + + b.Property("Status") + .HasColumnType("integer") + .HasColumnName("status"); + + b.Property("Topic") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .HasColumnName("topic"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Source", "Uid"); + + b.HasIndex(new[] { "PublishedOn", "Status" }, "IX_content_reference"); + + b.HasIndex(new[] { "Source", "Uid" }, "IX_source_uid"); + + b.ToTable("content_reference"); + }); + + modelBuilder.Entity("TNO.Entities.ContentTag", b => + { + b.Property("ContentId") + .HasColumnType("bigint") + .HasColumnName("content_id"); + + b.Property("TagId") + .HasColumnType("integer") + .HasColumnName("tag_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("ContentId", "TagId"); + + b.HasIndex("TagId"); + + b.ToTable("content_tag"); + }); + + modelBuilder.Entity("TNO.Entities.ContentTonePool", b => + { + b.Property("ContentId") + .HasColumnType("bigint") + .HasColumnName("content_id"); + + b.Property("TonePoolId") + .HasColumnType("integer") + .HasColumnName("tone_pool_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Value") + .HasColumnType("integer") + .HasColumnName("value"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("ContentId", "TonePoolId"); + + b.HasIndex("TonePoolId"); + + b.ToTable("content_tone"); + }); + + modelBuilder.Entity("TNO.Entities.ContentTopic", b => + { + b.Property("ContentId") + .HasColumnType("bigint") + .HasColumnName("content_id"); + + b.Property("TopicId") + .HasColumnType("integer") + .HasColumnName("topic_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Score") + .HasColumnType("integer") + .HasColumnName("score"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("ContentId", "TopicId"); + + b.HasIndex("TopicId"); + + b.ToTable("content_topic"); + }); + + modelBuilder.Entity("TNO.Entities.ContentTypeAction", b => + { + b.Property("ContentType") + .HasColumnType("integer") + .HasColumnName("content_type"); + + b.Property("ActionId") + .HasColumnType("integer") + .HasColumnName("action_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("ContentType", "ActionId"); + + b.HasIndex("ActionId"); + + b.ToTable("content_type_action"); + }); + + modelBuilder.Entity("TNO.Entities.Contributor", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Aliases") + .HasMaxLength(500) + .HasColumnType("character varying(500)") + .HasColumnName("aliases"); + + b.Property("AutoTranscribe") + .HasColumnType("boolean") + .HasColumnName("auto_transcribe"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("IsPress") + .HasColumnType("boolean") + .HasColumnName("is_press"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("SourceId") + .HasColumnType("integer") + .HasColumnName("source_id"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("SourceId"); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_contributor_is_enabled"); + + b.ToTable("contributor"); + }); + + modelBuilder.Entity("TNO.Entities.DataLocation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ConnectionId") + .HasColumnType("integer") + .HasColumnName("connection_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("ConnectionId"); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_datalocation_is_enabled"); + + b.HasIndex(new[] { "Name" }, "IX_name") + .IsUnique() + .HasDatabaseName("IX_name2"); + + b.ToTable("data_location"); + }); + + modelBuilder.Entity("TNO.Entities.EarnedMedia", b => + { + b.Property("SourceId") + .HasColumnType("integer") + .HasColumnName("source_id"); + + b.Property("ContentType") + .HasColumnType("integer") + .HasColumnName("content_type"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("LengthOfContent") + .HasColumnType("integer") + .HasColumnName("length_of_content"); + + b.Property("Rate") + .HasColumnType("real") + .HasColumnName("rate"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("SourceId", "ContentType"); + + b.ToTable("earned_media"); + }); + + modelBuilder.Entity("TNO.Entities.EventSchedule", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description"); + + b.Property("EventType") + .HasColumnType("integer") + .HasColumnName("event_type"); + + b.Property("FolderId") + .HasColumnType("integer") + .HasColumnName("folder_id"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("LastRanOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_ran_on"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("NotificationId") + .HasColumnType("integer") + .HasColumnName("notification_id"); + + b.Property("ReportId") + .HasColumnType("integer") + .HasColumnName("report_id"); + + b.Property("RequestSentOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("request_sent_on"); + + b.Property("ScheduleId") + .HasColumnType("integer") + .HasColumnName("schedule_id"); + + b.Property("Settings") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("settings") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("FolderId"); + + b.HasIndex("NotificationId"); + + b.HasIndex("ReportId"); + + b.HasIndex("ScheduleId"); + + b.ToTable("event_schedule"); + }); + + modelBuilder.Entity("TNO.Entities.FileReference", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ContentId") + .HasColumnType("bigint") + .HasColumnName("content_id"); + + b.Property("ContentType") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("content_type"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("FileName") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("character varying(500)") + .HasColumnName("file_name"); + + b.Property("IsSyncedToS3") + .HasColumnType("boolean") + .HasColumnName("is_synced_to_s3"); + + b.Property("IsUploaded") + .HasColumnType("boolean") + .HasColumnName("is_uploaded"); + + b.Property("LastSyncedToS3On") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_synced_to_s3_on"); + + b.Property("Path") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("character varying(500)") + .HasColumnName("path"); + + b.Property("RunningTime") + .HasColumnType("bigint") + .HasColumnName("running_time"); + + b.Property("S3Path") + .HasColumnType("text") + .HasColumnName("s3_path"); + + b.Property("Size") + .HasColumnType("bigint") + .HasColumnName("size"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("ContentId"); + + b.ToTable("file_reference"); + }); + + modelBuilder.Entity("TNO.Entities.Filter", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("OwnerId") + .HasColumnType("integer") + .HasColumnName("owner_id"); + + b.Property("Query") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("query") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("Settings") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("settings") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("OwnerId", "Name") + .IsUnique(); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_filter_is_enabled"); + + b.ToTable("filter"); + }); + + modelBuilder.Entity("TNO.Entities.Folder", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("FilterId") + .HasColumnType("integer") + .HasColumnName("filter_id"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("OwnerId") + .HasColumnType("integer") + .HasColumnName("owner_id"); + + b.Property("Settings") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("settings") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("FilterId"); + + b.HasIndex("OwnerId", "Name") + .IsUnique(); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_folder_is_enabled"); + + b.ToTable("folder"); + }); + + modelBuilder.Entity("TNO.Entities.FolderContent", b => + { + b.Property("FolderId") + .HasColumnType("integer") + .HasColumnName("folder_id"); + + b.Property("ContentId") + .HasColumnType("bigint") + .HasColumnName("content_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("SortOrder") + .HasColumnType("integer") + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("FolderId", "ContentId"); + + b.HasIndex("ContentId"); + + b.ToTable("folder_content"); + }); + + modelBuilder.Entity("TNO.Entities.Ingest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Configuration") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("configuration") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("DestinationConnectionId") + .HasColumnType("integer") + .HasColumnName("destination_connection_id"); + + b.Property("IngestTypeId") + .HasColumnType("integer") + .HasColumnName("ingest_type_id"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("MediaTypeId") + .HasColumnType("integer") + .HasColumnName("media_type_id"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .HasColumnName("name"); + + b.Property("ResetRetryAfterDelayMs") + .HasColumnType("integer") + .HasColumnName("reset_retry_after_delay_ms"); + + b.Property("RetryLimit") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(3) + .HasColumnName("retry_limit"); + + b.Property("ScheduleType") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("schedule_type"); + + b.Property("SourceConnectionId") + .HasColumnType("integer") + .HasColumnName("source_connection_id"); + + b.Property("SourceId") + .HasColumnType("integer") + .HasColumnName("source_id"); + + b.Property("Topic") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .HasColumnName("topic"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("DestinationConnectionId"); + + b.HasIndex("MediaTypeId"); + + b.HasIndex("SourceConnectionId"); + + b.HasIndex("SourceId"); + + b.HasIndex(new[] { "IngestTypeId", "SourceId", "Topic" }, "IX_ingest"); + + b.HasIndex(new[] { "Name" }, "IX_name") + .IsUnique() + .HasDatabaseName("IX_name3"); + + b.ToTable("ingest"); + }); + + modelBuilder.Entity("TNO.Entities.IngestDataLocation", b => + { + b.Property("IngestId") + .HasColumnType("integer") + .HasColumnName("ingest_id"); + + b.Property("DataLocationId") + .HasColumnType("integer") + .HasColumnName("data_location_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("IngestId", "DataLocationId"); + + b.HasIndex("DataLocationId"); + + b.ToTable("ingest_data_location"); + }); + + modelBuilder.Entity("TNO.Entities.IngestSchedule", b => + { + b.Property("IngestId") + .HasColumnType("integer") + .HasColumnName("ingest_id"); + + b.Property("ScheduleId") + .HasColumnType("integer") + .HasColumnName("schedule_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("IngestId", "ScheduleId"); + + b.HasIndex("ScheduleId"); + + b.ToTable("ingest_schedule"); + }); + + modelBuilder.Entity("TNO.Entities.IngestState", b => + { + b.Property("IngestId") + .HasColumnType("integer") + .HasColumnName("ingest_id"); + + b.Property("CreationDateOfLastItem") + .HasColumnType("timestamp with time zone") + .HasColumnName("creation_date_of_last_item"); + + b.Property("FailedAttempts") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("failed_attempts"); + + b.Property("LastRanOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_ran_on"); + + b.HasKey("IngestId"); + + b.ToTable("ingest_state"); + }); + + modelBuilder.Entity("TNO.Entities.IngestType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AutoTranscribe") + .HasColumnType("boolean") + .HasColumnName("auto_transcribe"); + + b.Property("ContentType") + .HasColumnType("integer") + .HasColumnName("content_type"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("DisableTranscribe") + .HasColumnType("boolean") + .HasColumnName("disable_transcribe"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_ingesttype_is_enabled"); + + b.HasIndex(new[] { "Name" }, "IX_name") + .IsUnique() + .HasDatabaseName("IX_name4"); + + b.ToTable("ingest_type"); + }); + + modelBuilder.Entity("TNO.Entities.License", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("TTL") + .HasColumnType("integer") + .HasColumnName("ttl"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_license_is_enabled"); + + b.HasIndex(new[] { "Name" }, "IX_name") + .IsUnique() + .HasDatabaseName("IX_name5"); + + b.ToTable("license"); + }); + + modelBuilder.Entity("TNO.Entities.MediaType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AutoTranscribe") + .HasColumnType("boolean") + .HasColumnName("auto_transcribe"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("ListOption") + .HasColumnType("integer") + .HasColumnName("list_option"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("Settings") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_mediatype_is_enabled"); + + b.HasIndex(new[] { "Name" }, "IX_name") + .IsUnique() + .HasDatabaseName("IX_name6"); + + b.ToTable("media_type"); + }); + + modelBuilder.Entity("TNO.Entities.Metric", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_metric_is_enabled"); + + b.HasIndex(new[] { "Name" }, "IX_name") + .IsUnique() + .HasDatabaseName("IX_name7"); + + b.ToTable("metric"); + }); + + modelBuilder.Entity("TNO.Entities.Minister", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Aliases") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("aliases") + .HasDefaultValueSql("''"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("OrganizationId") + .HasColumnType("integer") + .HasColumnName("organization_id"); + + b.Property("Position") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("position") + .HasDefaultValueSql("''"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.HasIndex("OrganizationId"); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_minister_is_enabled"); + + b.ToTable("minister"); + }); + + modelBuilder.Entity("TNO.Entities.Notification", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AlertOnIndex") + .HasColumnType("boolean") + .HasColumnName("alert_on_index"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("IsPublic") + .HasColumnType("boolean") + .HasColumnName("is_public"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("NotificationType") + .HasColumnType("integer") + .HasColumnName("notification_type"); + + b.Property("OwnerId") + .HasColumnType("integer") + .HasColumnName("owner_id"); + + b.Property("Query") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("query") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("Resend") + .HasColumnType("integer") + .HasColumnName("resend"); + + b.Property("Settings") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("settings") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("TemplateId") + .HasColumnType("integer") + .HasColumnName("notification_template_id"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("TemplateId"); + + b.HasIndex("OwnerId", "Name") + .IsUnique(); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_notification_is_enabled"); + + b.ToTable("notification"); + }); + + modelBuilder.Entity("TNO.Entities.NotificationInstance", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Body") + .IsRequired() + .HasColumnType("text") + .HasColumnName("body"); + + b.Property("ContentId") + .HasColumnType("bigint") + .HasColumnName("content_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("NotificationId") + .HasColumnType("integer") + .HasColumnName("notification_id"); + + b.Property("OwnerId") + .HasColumnType("integer") + .HasColumnName("owner_id"); + + b.Property("Response") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("response") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("SentOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("sent_on"); + + b.Property("Status") + .HasColumnType("integer") + .HasColumnName("status"); + + b.Property("Subject") + .IsRequired() + .HasColumnType("text") + .HasColumnName("subject"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("ContentId"); + + b.HasIndex("NotificationId"); + + b.ToTable("notification_instance"); + }); + + modelBuilder.Entity("TNO.Entities.NotificationTemplate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Body") + .IsRequired() + .HasColumnType("text") + .HasColumnName("body"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("IsPublic") + .HasColumnType("boolean") + .HasColumnName("is_public"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("Settings") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("settings") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("Subject") + .IsRequired() + .HasColumnType("text") + .HasColumnName("subject"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.HasIndex("IsPublic", "IsEnabled"); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_notificationtemplate_is_enabled"); + + b.ToTable("notification_template"); + }); + + modelBuilder.Entity("TNO.Entities.Organization", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("ParentId") + .HasColumnType("integer") + .HasColumnName("parent_id"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("ParentId", "Name") + .IsUnique(); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_organization_is_enabled"); + + b.ToTable("organization"); + }); + + modelBuilder.Entity("TNO.Entities.Product", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("IsPublic") + .HasColumnType("boolean") + .HasColumnName("is_public"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("ProductType") + .HasColumnType("integer") + .HasColumnName("product_type"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("TargetProductId") + .HasColumnType("integer") + .HasColumnName("target_product_id"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("Name", "TargetProductId", "ProductType") + .IsUnique(); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_product_is_enabled"); + + b.ToTable("product"); + }); + + modelBuilder.Entity("TNO.Entities.Quote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Byline") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("character varying(500)") + .HasColumnName("byline"); + + b.Property("ContentId") + .HasColumnType("bigint") + .HasColumnName("content_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("IsRelevant") + .HasColumnType("boolean") + .HasColumnName("is_relevant"); + + b.Property("Statement") + .IsRequired() + .HasColumnType("text") + .HasColumnName("statement"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("ContentId"); + + b.HasIndex(new[] { "Statement" }, "IX_statement"); + + b.ToTable("quote"); + }); + + modelBuilder.Entity("TNO.Entities.Report", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("IsPublic") + .HasColumnType("boolean") + .HasColumnName("is_public"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("OwnerId") + .HasColumnType("integer") + .HasColumnName("owner_id"); + + b.Property("Settings") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("settings") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("TemplateId") + .HasColumnType("integer") + .HasColumnName("report_template_id"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("TemplateId"); + + b.HasIndex("OwnerId", "Name") + .IsUnique(); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_report_is_enabled"); + + b.ToTable("report"); + }); + + modelBuilder.Entity("TNO.Entities.ReportInstance", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Body") + .IsRequired() + .HasColumnType("text") + .HasColumnName("body"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("OwnerId") + .HasColumnType("integer") + .HasColumnName("owner_id"); + + b.Property("PublishedOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("published_on"); + + b.Property("ReportId") + .HasColumnType("integer") + .HasColumnName("report_id"); + + b.Property("Response") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("response") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("SentOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("sent_on"); + + b.Property("Status") + .HasColumnType("integer") + .HasColumnName("status"); + + b.Property("Subject") + .IsRequired() + .HasColumnType("text") + .HasColumnName("subject"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("OwnerId"); + + b.HasIndex("ReportId"); + + b.HasIndex(new[] { "PublishedOn", "CreatedOn" }, "IX_report_dates"); + + b.ToTable("report_instance"); + }); + + modelBuilder.Entity("TNO.Entities.ReportInstanceContent", b => + { + b.Property("InstanceId") + .HasColumnType("bigint") + .HasColumnName("report_instance_id"); + + b.Property("ContentId") + .HasColumnType("bigint") + .HasColumnName("content_id"); + + b.Property("SectionName") + .ValueGeneratedOnAdd() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("section_name") + .HasDefaultValueSql("''"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("SortOrder") + .HasColumnType("integer") + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("InstanceId", "ContentId", "SectionName"); + + b.HasIndex("ContentId"); + + b.ToTable("report_instance_content"); + }); + + modelBuilder.Entity("TNO.Entities.ReportSection", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("FilterId") + .HasColumnType("integer") + .HasColumnName("filter_id"); + + b.Property("FolderId") + .HasColumnType("integer") + .HasColumnName("folder_id"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("LinkedReportId") + .HasColumnType("integer") + .HasColumnName("linked_report_id"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("ReportId") + .HasColumnType("integer") + .HasColumnName("report_id"); + + b.Property("SectionType") + .HasColumnType("integer") + .HasColumnName("section_type"); + + b.Property("Settings") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("settings") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("FilterId"); + + b.HasIndex("FolderId"); + + b.HasIndex("LinkedReportId"); + + b.HasIndex("ReportId", "Name") + .IsUnique(); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_reportsection_is_enabled"); + + b.ToTable("report_section"); + }); + + modelBuilder.Entity("TNO.Entities.ReportSectionChartTemplate", b => + { + b.Property("ReportSectionId") + .HasColumnType("integer") + .HasColumnName("report_section_id"); + + b.Property("ChartTemplateId") + .HasColumnType("integer") + .HasColumnName("chart_template_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Settings") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("settings") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("SortOrder") + .HasColumnType("integer") + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("ReportSectionId", "ChartTemplateId"); + + b.HasIndex("ChartTemplateId"); + + b.ToTable("report_section_chart_template"); + }); + + modelBuilder.Entity("TNO.Entities.ReportTemplate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Body") + .IsRequired() + .HasColumnType("text") + .HasColumnName("body"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("IsPublic") + .HasColumnType("boolean") + .HasColumnName("is_public"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("ReportType") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("report_type") + .HasDefaultValueSql("0"); + + b.Property("Settings") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("settings") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("Subject") + .IsRequired() + .HasColumnType("text") + .HasColumnName("subject"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.HasIndex("IsPublic", "IsEnabled"); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_reporttemplate_is_enabled"); + + b.ToTable("report_template"); + }); + + modelBuilder.Entity("TNO.Entities.ReportTemplateChartTemplate", b => + { + b.Property("ReportTemplateId") + .HasColumnType("integer") + .HasColumnName("report_template_id"); + + b.Property("ChartTemplateId") + .HasColumnType("integer") + .HasColumnName("chart_template_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("ReportTemplateId", "ChartTemplateId"); + + b.HasIndex("ChartTemplateId"); + + b.ToTable("report_template_chart_template"); + }); + + modelBuilder.Entity("TNO.Entities.Schedule", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("DayOfMonth") + .HasColumnType("integer") + .HasColumnName("day_of_month"); + + b.Property("DelayMS") + .HasColumnType("integer") + .HasColumnName("delay_ms"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("Repeat") + .HasColumnType("boolean") + .HasColumnName("repeat"); + + b.Property("RequestedById") + .HasColumnType("integer") + .HasColumnName("requested_by_id"); + + b.Property("RunOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("run_on"); + + b.Property("RunOnMonths") + .HasColumnType("integer") + .HasColumnName("run_on_months"); + + b.Property("RunOnWeekDays") + .HasColumnType("integer") + .HasColumnName("run_on_week_days"); + + b.Property("RunOnlyOnce") + .HasColumnType("boolean") + .HasColumnName("run_only_once"); + + b.Property("StartAt") + .HasColumnType("interval") + .HasColumnName("start_at"); + + b.Property("StopAt") + .HasColumnType("interval") + .HasColumnName("stop_at"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("RequestedById"); + + b.HasIndex(new[] { "Name", "IsEnabled" }, "IX_schedule"); + + b.ToTable("schedule"); + }); + + modelBuilder.Entity("TNO.Entities.Sentiment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("Rate") + .HasColumnType("real") + .HasColumnName("rate"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Value") + .HasColumnType("real") + .HasColumnName("value"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_sentiment_is_enabled"); + + b.ToTable("sentiment"); + }); + + modelBuilder.Entity("TNO.Entities.Series", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AutoTranscribe") + .HasColumnType("boolean") + .HasColumnName("auto_transcribe"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsCBRASource") + .HasColumnType("boolean") + .HasColumnName("is_cbra_source"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("IsOther") + .HasColumnType("boolean") + .HasColumnName("is_other"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("SourceId") + .HasColumnType("integer") + .HasColumnName("source_id"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UseInTopics") + .HasColumnType("boolean") + .HasColumnName("use_in_topics"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("SourceId"); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_series_is_enabled"); + + b.ToTable("series"); + }); + + modelBuilder.Entity("TNO.Entities.SeriesMediaTypeSearchMapping", b => + { + b.Property("SeriesId") + .HasColumnType("integer") + .HasColumnName("series_id"); + + b.Property("MediaTypeId") + .HasColumnType("integer") + .HasColumnName("media_type_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("SeriesId", "MediaTypeId"); + + b.HasIndex("MediaTypeId"); + + b.ToTable("series_media_type_search_mapping"); + }); + + modelBuilder.Entity("TNO.Entities.Setting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Value") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(500) + .HasColumnType("character varying(500)") + .HasColumnName("value") + .HasDefaultValueSql("''"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_setting_is_enabled"); + + b.HasIndex(new[] { "Name" }, "IX_setting_name") + .IsUnique(); + + b.ToTable("setting"); + }); + + modelBuilder.Entity("TNO.Entities.Source", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AutoTranscribe") + .HasColumnType("boolean") + .HasColumnName("auto_transcribe"); + + b.Property("Code") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("character varying(20)") + .HasColumnName("code"); + + b.Property("Configuration") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("configuration") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("DisableTranscribe") + .HasColumnType("boolean") + .HasColumnName("disable_transcribe"); + + b.Property("IsCBRASource") + .HasColumnType("boolean") + .HasColumnName("is_cbra_source"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("LicenseId") + .HasColumnType("integer") + .HasColumnName("license_id"); + + b.Property("MediaTypeId") + .HasColumnType("integer") + .HasColumnName("media_type_id"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("OwnerId") + .HasColumnType("integer") + .HasColumnName("owner_id"); + + b.Property("ShortName") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("short_name") + .HasDefaultValueSql("''"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UseInTopics") + .HasColumnType("boolean") + .HasColumnName("use_in_topics"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("LicenseId"); + + b.HasIndex("MediaTypeId"); + + b.HasIndex("OwnerId"); + + b.HasIndex(new[] { "Code" }, "IX_source_code") + .IsUnique(); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_source_is_enabled"); + + b.HasIndex(new[] { "Name" }, "IX_source_name") + .IsUnique(); + + b.ToTable("source"); + }); + + modelBuilder.Entity("TNO.Entities.SourceMediaTypeSearchMapping", b => + { + b.Property("SourceId") + .HasColumnType("integer") + .HasColumnName("source_id"); + + b.Property("MediaTypeId") + .HasColumnType("integer") + .HasColumnName("media_type_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("SourceId", "MediaTypeId"); + + b.HasIndex("MediaTypeId"); + + b.ToTable("source_media_type_search_mapping"); + }); + + modelBuilder.Entity("TNO.Entities.SourceMetric", b => + { + b.Property("SourceId") + .HasColumnType("integer") + .HasColumnName("source_id"); + + b.Property("MetricId") + .HasColumnType("integer") + .HasColumnName("metric_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Earned") + .ValueGeneratedOnAdd() + .HasColumnType("real") + .HasDefaultValue(0f) + .HasColumnName("earned"); + + b.Property("Impression") + .ValueGeneratedOnAdd() + .HasColumnType("real") + .HasDefaultValue(0f) + .HasColumnName("impression"); + + b.Property("Reach") + .ValueGeneratedOnAdd() + .HasColumnType("real") + .HasDefaultValue(0f) + .HasColumnName("reach"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("SourceId", "MetricId"); + + b.HasIndex("MetricId"); + + b.ToTable("source_metric"); + }); + + modelBuilder.Entity("TNO.Entities.SystemMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasColumnType("text") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text") + .HasColumnName("description"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("Message") + .IsRequired() + .HasColumnType("text") + .HasColumnName("message"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name"); + + b.Property("SortOrder") + .HasColumnType("integer") + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasColumnType("text") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on"); + + b.Property("Version") + .HasColumnType("bigint") + .HasColumnName("version"); + + b.HasKey("Id"); + + b.ToTable("system_message"); + }); + + modelBuilder.Entity("TNO.Entities.Tag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Code") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("character varying(15)") + .HasColumnName("code"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "Code" }, "IX_tag_code") + .IsUnique(); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_tag_is_enabled"); + + b.HasIndex(new[] { "Name" }, "IX_tag_name") + .IsUnique(); + + b.ToTable("tag"); + }); + + modelBuilder.Entity("TNO.Entities.TimeTracking", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Activity") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("activity"); + + b.Property("ContentId") + .HasColumnType("bigint") + .HasColumnName("content_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Effort") + .HasColumnType("real") + .HasColumnName("effort"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UserId") + .HasColumnType("integer") + .HasColumnName("user_id"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("ContentId"); + + b.HasIndex("UserId"); + + b.ToTable("time_tracking"); + }); + + modelBuilder.Entity("TNO.Entities.TonePool", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("IsPublic") + .HasColumnType("boolean") + .HasColumnName("is_public"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("OwnerId") + .HasColumnType("integer") + .HasColumnName("owner_id"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "OwnerId", "Name" }, "IX_tone_pool_name") + .IsUnique(); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_tonepool_is_enabled"); + + b.ToTable("tone_pool"); + }); + + modelBuilder.Entity("TNO.Entities.Topic", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("description") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("name"); + + b.Property("SortOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("sort_order"); + + b.Property("TopicType") + .HasColumnType("integer") + .HasColumnName("topic_type"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "IsEnabled", "Name" }, "IX_topic_is_enabled"); + + b.HasIndex(new[] { "Name" }, "IX_topic_name") + .IsUnique(); + + b.ToTable("topic"); + }); + + modelBuilder.Entity("TNO.Entities.TopicScoreRule", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CharacterMax") + .HasColumnType("integer") + .HasColumnName("char_max"); + + b.Property("CharacterMin") + .HasColumnType("integer") + .HasColumnName("char_min"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("HasImage") + .HasColumnType("boolean") + .HasColumnName("has_image"); + + b.Property("PageMax") + .HasMaxLength(5) + .HasColumnType("character varying(5)") + .HasColumnName("page_max"); + + b.Property("PageMin") + .HasMaxLength(5) + .HasColumnType("character varying(5)") + .HasColumnName("page_min"); + + b.Property("Score") + .HasColumnType("integer") + .HasColumnName("score"); + + b.Property("Section") + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("section"); + + b.Property("SeriesId") + .HasColumnType("integer") + .HasColumnName("series_id"); + + b.Property("SortOrder") + .HasColumnType("integer") + .HasColumnName("sort_order"); + + b.Property("SourceId") + .HasColumnType("integer") + .HasColumnName("source_id"); + + b.Property("TimeMax") + .HasColumnType("interval") + .HasColumnName("time_max"); + + b.Property("TimeMin") + .HasColumnType("interval") + .HasColumnName("time_min"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex("SeriesId"); + + b.HasIndex(new[] { "SourceId", "SeriesId", "Section" }, "IX_source_id_series_id_section"); + + b.ToTable("topic_score_rule"); + }); + + modelBuilder.Entity("TNO.Entities.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AccountType") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("account_type"); + + b.Property("Code") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(10) + .HasColumnType("character varying(10)") + .HasColumnName("code") + .HasDefaultValueSql("''"); + + b.Property("CodeCreatedOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("code_created_on"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("DisplayName") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("display_name") + .HasDefaultValueSql("''"); + + b.Property("Email") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("email") + .HasDefaultValueSql("''"); + + b.Property("EmailVerified") + .HasColumnType("boolean") + .HasColumnName("email_verified"); + + b.Property("FirstName") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("first_name") + .HasDefaultValueSql("''"); + + b.Property("IsEnabled") + .HasColumnType("boolean") + .HasColumnName("is_enabled"); + + b.Property("IsSystemAccount") + .HasColumnType("boolean") + .HasColumnName("is_system_account"); + + b.Property("Key") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("key"); + + b.Property("LastLoginOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_login_on"); + + b.Property("LastName") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(100) + .HasColumnType("character varying(100)") + .HasColumnName("last_name") + .HasDefaultValueSql("''"); + + b.Property("Note") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(2000) + .HasColumnType("character varying(2000)") + .HasColumnName("note") + .HasDefaultValueSql("''"); + + b.Property("Preferences") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("preferences") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("PreferredEmail") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("preferred_email") + .HasDefaultValueSql("''"); + + b.Property("Roles") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(500) + .HasColumnType("character varying(500)") + .HasColumnName("roles") + .HasDefaultValueSql("''"); + + b.Property("Status") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("status"); + + b.Property("UniqueLogins") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("unique_logins") + .HasDefaultValueSql("0"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Username") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)") + .HasColumnName("username"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "Email" }, "IX_email"); + + b.HasIndex(new[] { "Key" }, "IX_key") + .IsUnique(); + + b.HasIndex(new[] { "LastName", "FirstName" }, "IX_last_first_name"); + + b.HasIndex(new[] { "Username" }, "IX_username") + .IsUnique(); + + b.ToTable("user"); + }); + + modelBuilder.Entity("TNO.Entities.UserAVOverview", b => + { + b.Property("UserId") + .HasColumnType("integer") + .HasColumnName("user_id"); + + b.Property("TemplateType") + .HasColumnType("integer") + .HasColumnName("av_overview_template_type"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("IsSubscribed") + .HasColumnType("boolean") + .HasColumnName("is_subscribed"); + + b.Property("SendTo") + .HasColumnType("integer") + .HasColumnName("send_to"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("UserId", "TemplateType"); + + b.HasIndex("TemplateType"); + + b.ToTable("user_av_overview"); + }); + + modelBuilder.Entity("TNO.Entities.UserAVOverviewInstance", b => + { + b.Property("UserId") + .HasColumnType("integer") + .HasColumnName("user_id"); + + b.Property("InstanceId") + .HasColumnType("bigint") + .HasColumnName("report_instance_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Response") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("response") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("SentOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("sent_on"); + + b.Property("Status") + .HasColumnType("integer") + .HasColumnName("status"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("UserId", "InstanceId"); + + b.HasIndex("InstanceId"); + + b.ToTable("user_av_overview_instance"); + }); + + modelBuilder.Entity("TNO.Entities.UserColleague", b => + { + b.Property("UserId") + .HasColumnType("integer") + .HasColumnName("user_id"); + + b.Property("ColleagueId") + .HasColumnType("integer") + .HasColumnName("colleague_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("UserId", "ColleagueId"); + + b.HasIndex("ColleagueId"); + + b.ToTable("user_colleague"); + }); + + modelBuilder.Entity("TNO.Entities.UserContentNotification", b => + { + b.Property("UserId") + .HasColumnType("integer") + .HasColumnName("user_id"); + + b.Property("ContentId") + .HasColumnType("bigint") + .HasColumnName("content_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("IsSubscribed") + .HasColumnType("boolean") + .HasColumnName("is_subscribed"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("UserId", "ContentId"); + + b.HasIndex("ContentId"); + + b.ToTable("user_content_notification"); + }); + + modelBuilder.Entity("TNO.Entities.UserDistribution", b => + { + b.Property("UserId") + .HasColumnType("integer") + .HasColumnName("user_id"); + + b.Property("LinkedUserId") + .HasColumnType("integer") + .HasColumnName("linked_user_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("UserId", "LinkedUserId"); + + b.HasIndex("LinkedUserId"); + + b.ToTable("user_distribution"); + }); + + modelBuilder.Entity("TNO.Entities.UserMediaType", b => + { + b.Property("UserId") + .HasColumnType("integer") + .HasColumnName("user_id"); + + b.Property("MediaTypeId") + .HasColumnType("integer") + .HasColumnName("media_type_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("UserId", "MediaTypeId"); + + b.HasIndex("MediaTypeId"); + + b.ToTable("user_media_type"); + }); + + modelBuilder.Entity("TNO.Entities.UserNotification", b => + { + b.Property("UserId") + .HasColumnType("integer") + .HasColumnName("user_id"); + + b.Property("NotificationId") + .HasColumnType("integer") + .HasColumnName("notification_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("IsSubscribed") + .HasColumnType("boolean") + .HasColumnName("is_subscribed"); + + b.Property("Resend") + .HasColumnType("integer") + .HasColumnName("resend"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("UserId", "NotificationId"); + + b.HasIndex("NotificationId"); + + b.ToTable("user_notification"); + }); + + modelBuilder.Entity("TNO.Entities.UserOrganization", b => + { + b.Property("UserId") + .HasColumnType("integer") + .HasColumnName("user_id"); + + b.Property("OrganizationId") + .HasColumnType("integer") + .HasColumnName("organization_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("UserId", "OrganizationId"); + + b.HasIndex("OrganizationId"); + + b.ToTable("user_organization"); + }); + + modelBuilder.Entity("TNO.Entities.UserProduct", b => + { + b.Property("UserId") + .HasColumnType("integer") + .HasColumnName("user_id"); + + b.Property("ProductId") + .HasColumnType("integer") + .HasColumnName("product_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Status") + .HasColumnType("integer") + .HasColumnName("status"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("UserId", "ProductId"); + + b.HasIndex("ProductId"); + + b.ToTable("user_product"); + }); + + modelBuilder.Entity("TNO.Entities.UserReport", b => + { + b.Property("UserId") + .HasColumnType("integer") + .HasColumnName("user_id"); + + b.Property("ReportId") + .HasColumnType("integer") + .HasColumnName("report_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Format") + .HasColumnType("integer") + .HasColumnName("format"); + + b.Property("IsSubscribed") + .HasColumnType("boolean") + .HasColumnName("is_subscribed"); + + b.Property("SendTo") + .HasColumnType("integer") + .HasColumnName("send_to"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("UserId", "ReportId"); + + b.HasIndex("ReportId"); + + b.ToTable("user_report"); + }); + + modelBuilder.Entity("TNO.Entities.UserReportInstance", b => + { + b.Property("UserId") + .HasColumnType("integer") + .HasColumnName("user_id"); + + b.Property("InstanceId") + .HasColumnType("bigint") + .HasColumnName("report_instance_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("LinkResponse") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("link_response") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("LinkSentOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("link_sent_on"); + + b.Property("LinkStatus") + .HasColumnType("integer") + .HasColumnName("link_status"); + + b.Property("TextResponse") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("text_response") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("TextSentOn") + .HasColumnType("timestamp with time zone") + .HasColumnName("text_sent_on"); + + b.Property("TextStatus") + .HasColumnType("integer") + .HasColumnName("text_status"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("UserId", "InstanceId"); + + b.HasIndex("InstanceId"); + + b.ToTable("user_report_instance"); + }); + + modelBuilder.Entity("TNO.Entities.UserSource", b => + { + b.Property("UserId") + .HasColumnType("integer") + .HasColumnName("user_id"); + + b.Property("SourceId") + .HasColumnType("integer") + .HasColumnName("source_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.HasKey("UserId", "SourceId"); + + b.HasIndex("SourceId"); + + b.ToTable("user_source"); + }); + + modelBuilder.Entity("TNO.Entities.WorkOrder", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AssignedId") + .HasColumnType("integer") + .HasColumnName("assigned_id"); + + b.Property("Configuration") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasColumnName("configuration") + .HasDefaultValueSql("'{}'::jsonb"); + + b.Property("ContentId") + .HasColumnType("bigint") + .HasColumnName("content_id"); + + b.Property("CreatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("created_by"); + + b.Property("CreatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("created_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("character varying(500)") + .HasColumnName("description"); + + b.Property("Note") + .IsRequired() + .HasColumnType("text") + .HasColumnName("note"); + + b.Property("RequestorId") + .HasColumnType("integer") + .HasColumnName("requestor_id"); + + b.Property("Status") + .HasColumnType("integer") + .HasColumnName("status"); + + b.Property("UpdatedBy") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)") + .HasColumnName("updated_by"); + + b.Property("UpdatedOn") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasColumnName("updated_on") + .HasDefaultValueSql("CURRENT_TIMESTAMP"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasColumnName("version") + .HasDefaultValueSql("0"); + + b.Property("WorkType") + .HasColumnType("integer") + .HasColumnName("work_type"); + + b.HasKey("Id"); + + b.HasIndex("AssignedId"); + + b.HasIndex("ContentId"); + + b.HasIndex("RequestorId"); + + b.HasIndex(new[] { "WorkType", "Status", "CreatedOn", "RequestorId", "AssignedId" }, "IX_work_order"); + + b.ToTable("work_order"); + }); + + modelBuilder.Entity("TNO.Entities.AVOverviewInstance", b => + { + b.HasOne("TNO.Entities.AVOverviewTemplate", "Template") + .WithMany("Instances") + .HasForeignKey("TemplateType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Template"); + }); + + modelBuilder.Entity("TNO.Entities.AVOverviewSection", b => + { + b.HasOne("TNO.Entities.AVOverviewInstance", "Instance") + .WithMany("Sections") + .HasForeignKey("InstanceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.Series", "Series") + .WithMany() + .HasForeignKey("SeriesId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.Source", "Source") + .WithMany() + .HasForeignKey("SourceId") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("Instance"); + + b.Navigation("Series"); + + b.Navigation("Source"); + }); + + modelBuilder.Entity("TNO.Entities.AVOverviewSectionItem", b => + { + b.HasOne("TNO.Entities.Content", "Content") + .WithMany() + .HasForeignKey("ContentId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.AVOverviewSection", "Section") + .WithMany("Items") + .HasForeignKey("SectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Content"); + + b.Navigation("Section"); + }); + + modelBuilder.Entity("TNO.Entities.AVOverviewTemplate", b => + { + b.HasOne("TNO.Entities.ReportTemplate", "Template") + .WithMany() + .HasForeignKey("TemplateId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Template"); + }); + + modelBuilder.Entity("TNO.Entities.AVOverviewTemplateSection", b => + { + b.HasOne("TNO.Entities.Series", "Series") + .WithMany() + .HasForeignKey("SeriesId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.Source", "Source") + .WithMany() + .HasForeignKey("SourceId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.AVOverviewTemplate", "Template") + .WithMany("Sections") + .HasForeignKey("TemplateType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Series"); + + b.Navigation("Source"); + + b.Navigation("Template"); + }); + + modelBuilder.Entity("TNO.Entities.AVOverviewTemplateSectionItem", b => + { + b.HasOne("TNO.Entities.AVOverviewTemplateSection", "Section") + .WithMany("Items") + .HasForeignKey("SectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Section"); + }); + + modelBuilder.Entity("TNO.Entities.Content", b => + { + b.HasOne("TNO.Entities.Contributor", "Contributor") + .WithMany("Contents") + .HasForeignKey("ContributorId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.IngestType", null) + .WithMany("Contents") + .HasForeignKey("IngestTypeId"); + + b.HasOne("TNO.Entities.License", "License") + .WithMany("Contents") + .HasForeignKey("LicenseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.MediaType", "MediaType") + .WithMany("Contents") + .HasForeignKey("MediaTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.User", "Owner") + .WithMany("Contents") + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("TNO.Entities.Series", "Series") + .WithMany("Contents") + .HasForeignKey("SeriesId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.Source", "Source") + .WithMany("Contents") + .HasForeignKey("SourceId") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("Contributor"); + + b.Navigation("License"); + + b.Navigation("MediaType"); + + b.Navigation("Owner"); + + b.Navigation("Series"); + + b.Navigation("Source"); + }); + + modelBuilder.Entity("TNO.Entities.ContentAction", b => + { + b.HasOne("TNO.Entities.Action", "Action") + .WithMany("ContentsManyToMany") + .HasForeignKey("ActionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.Content", "Content") + .WithMany("ActionsManyToMany") + .HasForeignKey("ContentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Action"); + + b.Navigation("Content"); + }); + + modelBuilder.Entity("TNO.Entities.ContentLabel", b => + { + b.HasOne("TNO.Entities.Content", "Content") + .WithMany("Labels") + .HasForeignKey("ContentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Content"); + }); + + modelBuilder.Entity("TNO.Entities.ContentLink", b => + { + b.HasOne("TNO.Entities.Content", "Content") + .WithMany("Links") + .HasForeignKey("ContentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.Content", "Link") + .WithMany() + .HasForeignKey("LinkId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Content"); + + b.Navigation("Link"); + }); + + modelBuilder.Entity("TNO.Entities.ContentLog", b => + { + b.HasOne("TNO.Entities.Content", "Content") + .WithMany("Logs") + .HasForeignKey("ContentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Content"); + }); + + modelBuilder.Entity("TNO.Entities.ContentTag", b => + { + b.HasOne("TNO.Entities.Content", "Content") + .WithMany("TagsManyToMany") + .HasForeignKey("ContentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.Tag", "Tag") + .WithMany("ContentsManyToMany") + .HasForeignKey("TagId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Content"); + + b.Navigation("Tag"); + }); + + modelBuilder.Entity("TNO.Entities.ContentTonePool", b => + { + b.HasOne("TNO.Entities.Content", "Content") + .WithMany("TonePoolsManyToMany") + .HasForeignKey("ContentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.TonePool", "TonePool") + .WithMany("ContentsManyToMany") + .HasForeignKey("TonePoolId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Content"); + + b.Navigation("TonePool"); + }); + + modelBuilder.Entity("TNO.Entities.ContentTopic", b => + { + b.HasOne("TNO.Entities.Content", "Content") + .WithMany("TopicsManyToMany") + .HasForeignKey("ContentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.Topic", "Topic") + .WithMany("ContentsManyToMany") + .HasForeignKey("TopicId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Content"); + + b.Navigation("Topic"); + }); + + modelBuilder.Entity("TNO.Entities.ContentTypeAction", b => + { + b.HasOne("TNO.Entities.Action", "Action") + .WithMany("ContentTypes") + .HasForeignKey("ActionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Action"); + }); + + modelBuilder.Entity("TNO.Entities.Contributor", b => + { + b.HasOne("TNO.Entities.Source", "Source") + .WithMany("Contributors") + .HasForeignKey("SourceId") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("Source"); + }); + + modelBuilder.Entity("TNO.Entities.DataLocation", b => + { + b.HasOne("TNO.Entities.Connection", "Connection") + .WithMany("DataLocations") + .HasForeignKey("ConnectionId") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("Connection"); + }); + + modelBuilder.Entity("TNO.Entities.EarnedMedia", b => + { + b.HasOne("TNO.Entities.Source", "Source") + .WithMany("EarnedMedia") + .HasForeignKey("SourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Source"); + }); + + modelBuilder.Entity("TNO.Entities.EventSchedule", b => + { + b.HasOne("TNO.Entities.Folder", "Folder") + .WithMany("Events") + .HasForeignKey("FolderId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.Notification", "Notification") + .WithMany("Schedules") + .HasForeignKey("NotificationId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.Report", "Report") + .WithMany("Events") + .HasForeignKey("ReportId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.Schedule", "Schedule") + .WithMany("Events") + .HasForeignKey("ScheduleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Folder"); + + b.Navigation("Notification"); + + b.Navigation("Report"); + + b.Navigation("Schedule"); + }); + + modelBuilder.Entity("TNO.Entities.FileReference", b => + { + b.HasOne("TNO.Entities.Content", "Content") + .WithMany("FileReferences") + .HasForeignKey("ContentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Content"); + }); + + modelBuilder.Entity("TNO.Entities.Filter", b => + { + b.HasOne("TNO.Entities.User", "Owner") + .WithMany("Filters") + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("TNO.Entities.Folder", b => + { + b.HasOne("TNO.Entities.Filter", "Filter") + .WithMany("Folders") + .HasForeignKey("FilterId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.User", "Owner") + .WithMany("Folders") + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("Filter"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("TNO.Entities.FolderContent", b => + { + b.HasOne("TNO.Entities.Content", "Content") + .WithMany("FoldersManyToMany") + .HasForeignKey("ContentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.Folder", "Folder") + .WithMany("ContentManyToMany") + .HasForeignKey("FolderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Content"); + + b.Navigation("Folder"); + }); + + modelBuilder.Entity("TNO.Entities.Ingest", b => + { + b.HasOne("TNO.Entities.Connection", "DestinationConnection") + .WithMany("DestinationIngests") + .HasForeignKey("DestinationConnectionId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("TNO.Entities.IngestType", "IngestType") + .WithMany("Ingests") + .HasForeignKey("IngestTypeId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("TNO.Entities.MediaType", "MediaType") + .WithMany("Ingests") + .HasForeignKey("MediaTypeId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("TNO.Entities.Connection", "SourceConnection") + .WithMany("SourceIngests") + .HasForeignKey("SourceConnectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.Source", "Source") + .WithMany("Ingests") + .HasForeignKey("SourceId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("DestinationConnection"); + + b.Navigation("IngestType"); + + b.Navigation("MediaType"); + + b.Navigation("Source"); + + b.Navigation("SourceConnection"); + }); + + modelBuilder.Entity("TNO.Entities.IngestDataLocation", b => + { + b.HasOne("TNO.Entities.DataLocation", "DataLocation") + .WithMany("IngestsManyToMany") + .HasForeignKey("DataLocationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.Ingest", "Ingest") + .WithMany("DataLocationsManyToMany") + .HasForeignKey("IngestId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DataLocation"); + + b.Navigation("Ingest"); + }); + + modelBuilder.Entity("TNO.Entities.IngestSchedule", b => + { + b.HasOne("TNO.Entities.Ingest", "Ingest") + .WithMany("SchedulesManyToMany") + .HasForeignKey("IngestId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.Schedule", "Schedule") + .WithMany("IngestsManyToMany") + .HasForeignKey("ScheduleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Ingest"); + + b.Navigation("Schedule"); + }); + + modelBuilder.Entity("TNO.Entities.IngestState", b => + { + b.HasOne("TNO.Entities.Ingest", "Ingest") + .WithOne("State") + .HasForeignKey("TNO.Entities.IngestState", "IngestId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Ingest"); + }); + + modelBuilder.Entity("TNO.Entities.Minister", b => + { + b.HasOne("TNO.Entities.Organization", "Organization") + .WithMany("Ministers") + .HasForeignKey("OrganizationId") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("Organization"); + }); + + modelBuilder.Entity("TNO.Entities.Notification", b => + { + b.HasOne("TNO.Entities.User", "Owner") + .WithMany("Notifications") + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.NotificationTemplate", "Template") + .WithMany("Notifications") + .HasForeignKey("TemplateId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + + b.Navigation("Template"); + }); + + modelBuilder.Entity("TNO.Entities.NotificationInstance", b => + { + b.HasOne("TNO.Entities.Content", "Content") + .WithMany("NotificationsManyToMany") + .HasForeignKey("ContentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.Notification", "Notification") + .WithMany("Instances") + .HasForeignKey("NotificationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Content"); + + b.Navigation("Notification"); + }); + + modelBuilder.Entity("TNO.Entities.Organization", b => + { + b.HasOne("TNO.Entities.Organization", "Parent") + .WithMany("Children") + .HasForeignKey("ParentId") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("TNO.Entities.Quote", b => + { + b.HasOne("TNO.Entities.Content", "Content") + .WithMany("Quotes") + .HasForeignKey("ContentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Content"); + }); + + modelBuilder.Entity("TNO.Entities.Report", b => + { + b.HasOne("TNO.Entities.User", "Owner") + .WithMany("Reports") + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.ReportTemplate", "Template") + .WithMany("Reports") + .HasForeignKey("TemplateId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + + b.Navigation("Template"); + }); + + modelBuilder.Entity("TNO.Entities.ReportInstance", b => + { + b.HasOne("TNO.Entities.User", "Owner") + .WithMany("ReportInstances") + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.Report", "Report") + .WithMany("Instances") + .HasForeignKey("ReportId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + + b.Navigation("Report"); + }); + + modelBuilder.Entity("TNO.Entities.ReportInstanceContent", b => + { + b.HasOne("TNO.Entities.Content", "Content") + .WithMany("ReportsManyToMany") + .HasForeignKey("ContentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.ReportInstance", "Instance") + .WithMany("ContentManyToMany") + .HasForeignKey("InstanceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Content"); + + b.Navigation("Instance"); + }); + + modelBuilder.Entity("TNO.Entities.ReportSection", b => + { + b.HasOne("TNO.Entities.Filter", "Filter") + .WithMany("ReportSections") + .HasForeignKey("FilterId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.Folder", "Folder") + .WithMany("ReportSections") + .HasForeignKey("FolderId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.Report", "LinkedReport") + .WithMany() + .HasForeignKey("LinkedReportId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.Report", "Report") + .WithMany("Sections") + .HasForeignKey("ReportId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Filter"); + + b.Navigation("Folder"); + + b.Navigation("LinkedReport"); + + b.Navigation("Report"); + }); + + modelBuilder.Entity("TNO.Entities.ReportSectionChartTemplate", b => + { + b.HasOne("TNO.Entities.ChartTemplate", "ChartTemplate") + .WithMany("ReportSectionsManyToMany") + .HasForeignKey("ChartTemplateId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.ReportSection", "ReportSection") + .WithMany("ChartTemplatesManyToMany") + .HasForeignKey("ReportSectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ChartTemplate"); + + b.Navigation("ReportSection"); + }); + + modelBuilder.Entity("TNO.Entities.ReportTemplateChartTemplate", b => + { + b.HasOne("TNO.Entities.ChartTemplate", "ChartTemplate") + .WithMany("ReportTemplatesManyToMany") + .HasForeignKey("ChartTemplateId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.ReportTemplate", "ReportTemplate") + .WithMany("ChartTemplatesManyToMany") + .HasForeignKey("ReportTemplateId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ChartTemplate"); + + b.Navigation("ReportTemplate"); + }); + + modelBuilder.Entity("TNO.Entities.Schedule", b => + { + b.HasOne("TNO.Entities.User", "RequestedBy") + .WithMany() + .HasForeignKey("RequestedById") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("RequestedBy"); + }); + + modelBuilder.Entity("TNO.Entities.Series", b => + { + b.HasOne("TNO.Entities.Source", "Source") + .WithMany("Series") + .HasForeignKey("SourceId") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("Source"); + }); + + modelBuilder.Entity("TNO.Entities.SeriesMediaTypeSearchMapping", b => + { + b.HasOne("TNO.Entities.MediaType", "MediaType") + .WithMany("SeriesSearchMappingsManyToMany") + .HasForeignKey("MediaTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.Series", "Series") + .WithMany("MediaTypeSearchMappingsManyToMany") + .HasForeignKey("SeriesId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("MediaType"); + + b.Navigation("Series"); + }); + + modelBuilder.Entity("TNO.Entities.Source", b => + { + b.HasOne("TNO.Entities.License", "License") + .WithMany("Sources") + .HasForeignKey("LicenseId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("TNO.Entities.MediaType", "MediaType") + .WithMany("Sources") + .HasForeignKey("MediaTypeId") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("TNO.Entities.User", "Owner") + .WithMany() + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("License"); + + b.Navigation("MediaType"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("TNO.Entities.SourceMediaTypeSearchMapping", b => + { + b.HasOne("TNO.Entities.MediaType", "MediaType") + .WithMany("SourceSearchMappingsManyToMany") + .HasForeignKey("MediaTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.Source", "Source") + .WithMany("MediaTypeSearchMappingsManyToMany") + .HasForeignKey("SourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("MediaType"); + + b.Navigation("Source"); + }); + + modelBuilder.Entity("TNO.Entities.SourceMetric", b => + { + b.HasOne("TNO.Entities.Metric", "Metric") + .WithMany("SourcesManyToMany") + .HasForeignKey("MetricId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.Source", "Source") + .WithMany("MetricsManyToMany") + .HasForeignKey("SourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Metric"); + + b.Navigation("Source"); + }); + + modelBuilder.Entity("TNO.Entities.TimeTracking", b => + { + b.HasOne("TNO.Entities.Content", "Content") + .WithMany("TimeTrackings") + .HasForeignKey("ContentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.User", "User") + .WithMany("TimeTrackings") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Content"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("TNO.Entities.TonePool", b => + { + b.HasOne("TNO.Entities.User", "Owner") + .WithMany("TonePools") + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("TNO.Entities.TopicScoreRule", b => + { + b.HasOne("TNO.Entities.Series", "Series") + .WithMany("ScoreRules") + .HasForeignKey("SeriesId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.Source", "Source") + .WithMany("ScoreRules") + .HasForeignKey("SourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Series"); + + b.Navigation("Source"); + }); + + modelBuilder.Entity("TNO.Entities.UserAVOverview", b => + { + b.HasOne("TNO.Entities.AVOverviewTemplate", "Template") + .WithMany("SubscribersManyToMany") + .HasForeignKey("TemplateType") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.User", "User") + .WithMany("AVOverviewSubscriptionsManyToMany") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Template"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("TNO.Entities.UserAVOverviewInstance", b => + { + b.HasOne("TNO.Entities.AVOverviewInstance", "Instance") + .WithMany("UserInstances") + .HasForeignKey("InstanceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.User", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Instance"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("TNO.Entities.UserColleague", b => + { + b.HasOne("TNO.Entities.User", "Colleague") + .WithMany() + .HasForeignKey("ColleagueId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.User", "User") + .WithMany("ColleaguesManyToMany") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Colleague"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("TNO.Entities.UserContentNotification", b => + { + b.HasOne("TNO.Entities.Content", "Content") + .WithMany("UserNotifications") + .HasForeignKey("ContentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.User", "User") + .WithMany("ContentNotifications") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Content"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("TNO.Entities.UserDistribution", b => + { + b.HasOne("TNO.Entities.User", "LinkedUser") + .WithMany() + .HasForeignKey("LinkedUserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.User", "User") + .WithMany("Distribution") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("LinkedUser"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("TNO.Entities.UserMediaType", b => + { + b.HasOne("TNO.Entities.MediaType", "MediaType") + .WithMany("UsersManyToMany") + .HasForeignKey("MediaTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.User", "User") + .WithMany("MediaTypesManyToMany") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("MediaType"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("TNO.Entities.UserNotification", b => + { + b.HasOne("TNO.Entities.Notification", "Notification") + .WithMany("SubscribersManyToMany") + .HasForeignKey("NotificationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.User", "User") + .WithMany("NotificationSubscriptionsManyToMany") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Notification"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("TNO.Entities.UserOrganization", b => + { + b.HasOne("TNO.Entities.Organization", "Organization") + .WithMany("UsersManyToMany") + .HasForeignKey("OrganizationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.User", "User") + .WithMany("OrganizationsManyToMany") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Organization"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("TNO.Entities.UserProduct", b => + { + b.HasOne("TNO.Entities.Product", "Product") + .WithMany("SubscribersManyToMany") + .HasForeignKey("ProductId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.User", "User") + .WithMany("ProductSubscriptionsManyToMany") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Product"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("TNO.Entities.UserReport", b => + { + b.HasOne("TNO.Entities.Report", "Report") + .WithMany("SubscribersManyToMany") + .HasForeignKey("ReportId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.User", "User") + .WithMany("ReportSubscriptionsManyToMany") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Report"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("TNO.Entities.UserReportInstance", b => + { + b.HasOne("TNO.Entities.ReportInstance", "Instance") + .WithMany("UserInstances") + .HasForeignKey("InstanceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.User", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Instance"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("TNO.Entities.UserSource", b => + { + b.HasOne("TNO.Entities.Source", "Source") + .WithMany("UsersManyToMany") + .HasForeignKey("SourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TNO.Entities.User", "User") + .WithMany("SourcesManyToMany") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Source"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("TNO.Entities.WorkOrder", b => + { + b.HasOne("TNO.Entities.User", "Assigned") + .WithMany("WorkOrdersAssigned") + .HasForeignKey("AssignedId") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("TNO.Entities.Content", "Content") + .WithMany("WorkOrders") + .HasForeignKey("ContentId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("TNO.Entities.User", "Requestor") + .WithMany("WorkOrderRequests") + .HasForeignKey("RequestorId") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("Assigned"); + + b.Navigation("Content"); + + b.Navigation("Requestor"); + }); + + modelBuilder.Entity("TNO.Entities.AVOverviewInstance", b => + { + b.Navigation("Sections"); + + b.Navigation("UserInstances"); + }); + + modelBuilder.Entity("TNO.Entities.AVOverviewSection", b => + { + b.Navigation("Items"); + }); + + modelBuilder.Entity("TNO.Entities.AVOverviewTemplate", b => + { + b.Navigation("Instances"); + + b.Navigation("Sections"); + + b.Navigation("SubscribersManyToMany"); + }); + + modelBuilder.Entity("TNO.Entities.AVOverviewTemplateSection", b => + { + b.Navigation("Items"); + }); + + modelBuilder.Entity("TNO.Entities.Action", b => + { + b.Navigation("ContentTypes"); + + b.Navigation("ContentsManyToMany"); + }); + + modelBuilder.Entity("TNO.Entities.ChartTemplate", b => + { + b.Navigation("ReportSectionsManyToMany"); + + b.Navigation("ReportTemplatesManyToMany"); + }); + + modelBuilder.Entity("TNO.Entities.Connection", b => + { + b.Navigation("DataLocations"); + + b.Navigation("DestinationIngests"); + + b.Navigation("SourceIngests"); + }); + + modelBuilder.Entity("TNO.Entities.Content", b => + { + b.Navigation("ActionsManyToMany"); + + b.Navigation("FileReferences"); + + b.Navigation("FoldersManyToMany"); + + b.Navigation("Labels"); + + b.Navigation("Links"); + + b.Navigation("Logs"); + + b.Navigation("NotificationsManyToMany"); + + b.Navigation("Quotes"); + + b.Navigation("ReportsManyToMany"); + + b.Navigation("TagsManyToMany"); + + b.Navigation("TimeTrackings"); + + b.Navigation("TonePoolsManyToMany"); + + b.Navigation("TopicsManyToMany"); + + b.Navigation("UserNotifications"); + + b.Navigation("WorkOrders"); + }); + + modelBuilder.Entity("TNO.Entities.Contributor", b => + { + b.Navigation("Contents"); + }); + + modelBuilder.Entity("TNO.Entities.DataLocation", b => + { + b.Navigation("IngestsManyToMany"); + }); + + modelBuilder.Entity("TNO.Entities.Filter", b => + { + b.Navigation("Folders"); + + b.Navigation("ReportSections"); + }); + + modelBuilder.Entity("TNO.Entities.Folder", b => + { + b.Navigation("ContentManyToMany"); + + b.Navigation("Events"); + + b.Navigation("ReportSections"); + }); + + modelBuilder.Entity("TNO.Entities.Ingest", b => + { + b.Navigation("DataLocationsManyToMany"); + + b.Navigation("SchedulesManyToMany"); + + b.Navigation("State"); + }); + + modelBuilder.Entity("TNO.Entities.IngestType", b => + { + b.Navigation("Contents"); + + b.Navigation("Ingests"); + }); + + modelBuilder.Entity("TNO.Entities.License", b => + { + b.Navigation("Contents"); + + b.Navigation("Sources"); + }); + + modelBuilder.Entity("TNO.Entities.MediaType", b => + { + b.Navigation("Contents"); + + b.Navigation("Ingests"); + + b.Navigation("SeriesSearchMappingsManyToMany"); + + b.Navigation("SourceSearchMappingsManyToMany"); + + b.Navigation("Sources"); + + b.Navigation("UsersManyToMany"); + }); + + modelBuilder.Entity("TNO.Entities.Metric", b => + { + b.Navigation("SourcesManyToMany"); + }); + + modelBuilder.Entity("TNO.Entities.Notification", b => + { + b.Navigation("Instances"); + + b.Navigation("Schedules"); + + b.Navigation("SubscribersManyToMany"); + }); + + modelBuilder.Entity("TNO.Entities.NotificationTemplate", b => + { + b.Navigation("Notifications"); + }); + + modelBuilder.Entity("TNO.Entities.Organization", b => + { + b.Navigation("Children"); + + b.Navigation("Ministers"); + + b.Navigation("UsersManyToMany"); + }); + + modelBuilder.Entity("TNO.Entities.Product", b => + { + b.Navigation("SubscribersManyToMany"); + }); + + modelBuilder.Entity("TNO.Entities.Report", b => + { + b.Navigation("Events"); + + b.Navigation("Instances"); + + b.Navigation("Sections"); + + b.Navigation("SubscribersManyToMany"); + }); + + modelBuilder.Entity("TNO.Entities.ReportInstance", b => + { + b.Navigation("ContentManyToMany"); + + b.Navigation("UserInstances"); + }); + + modelBuilder.Entity("TNO.Entities.ReportSection", b => + { + b.Navigation("ChartTemplatesManyToMany"); + }); + + modelBuilder.Entity("TNO.Entities.ReportTemplate", b => + { + b.Navigation("ChartTemplatesManyToMany"); + + b.Navigation("Reports"); + }); + + modelBuilder.Entity("TNO.Entities.Schedule", b => + { + b.Navigation("Events"); + + b.Navigation("IngestsManyToMany"); + }); + + modelBuilder.Entity("TNO.Entities.Series", b => + { + b.Navigation("Contents"); + + b.Navigation("MediaTypeSearchMappingsManyToMany"); + + b.Navigation("ScoreRules"); + }); + + modelBuilder.Entity("TNO.Entities.Source", b => + { + b.Navigation("Contents"); + + b.Navigation("Contributors"); + + b.Navigation("EarnedMedia"); + + b.Navigation("Ingests"); + + b.Navigation("MediaTypeSearchMappingsManyToMany"); + + b.Navigation("MetricsManyToMany"); + + b.Navigation("ScoreRules"); + + b.Navigation("Series"); + + b.Navigation("UsersManyToMany"); + }); + + modelBuilder.Entity("TNO.Entities.Tag", b => + { + b.Navigation("ContentsManyToMany"); + }); + + modelBuilder.Entity("TNO.Entities.TonePool", b => + { + b.Navigation("ContentsManyToMany"); + }); + + modelBuilder.Entity("TNO.Entities.Topic", b => + { + b.Navigation("ContentsManyToMany"); + }); + + modelBuilder.Entity("TNO.Entities.User", b => + { + b.Navigation("AVOverviewSubscriptionsManyToMany"); + + b.Navigation("ColleaguesManyToMany"); + + b.Navigation("ContentNotifications"); + + b.Navigation("Contents"); + + b.Navigation("Distribution"); + + b.Navigation("Filters"); + + b.Navigation("Folders"); + + b.Navigation("MediaTypesManyToMany"); + + b.Navigation("NotificationSubscriptionsManyToMany"); + + b.Navigation("Notifications"); + + b.Navigation("OrganizationsManyToMany"); + + b.Navigation("ProductSubscriptionsManyToMany"); + + b.Navigation("ReportInstances"); + + b.Navigation("ReportSubscriptionsManyToMany"); + + b.Navigation("Reports"); + + b.Navigation("SourcesManyToMany"); + + b.Navigation("TimeTrackings"); + + b.Navigation("TonePools"); + + b.Navigation("WorkOrderRequests"); + + b.Navigation("WorkOrdersAssigned"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/libs/net/dal/Migrations/20241212002825_1.3.11.cs b/libs/net/dal/Migrations/20241212002825_1.3.11.cs new file mode 100644 index 0000000000..5093c6e60a --- /dev/null +++ b/libs/net/dal/Migrations/20241212002825_1.3.11.cs @@ -0,0 +1,34 @@ +using Microsoft.EntityFrameworkCore.Migrations; +using TNO.DAL; + +#nullable disable + +namespace TNO.DAL.Migrations +{ + /// + public partial class _1311 : SeedMigration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + PreUp(migrationBuilder); + migrationBuilder.DropColumn( + name: "is_cbra_unqualified", + table: "content"); + PostUp(migrationBuilder); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + PreDown(migrationBuilder); + migrationBuilder.AddColumn( + name: "is_cbra_unqualified", + table: "content", + type: "boolean", + nullable: false, + defaultValue: false); + PostDown(migrationBuilder); + } + } +} diff --git a/libs/net/dal/Migrations/TNOContextModelSnapshot.cs b/libs/net/dal/Migrations/TNOContextModelSnapshot.cs index 91d4a59b9e..10f68f74ba 100644 --- a/libs/net/dal/Migrations/TNOContextModelSnapshot.cs +++ b/libs/net/dal/Migrations/TNOContextModelSnapshot.cs @@ -875,10 +875,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("boolean") .HasColumnName("is_approved"); - b.Property("IsCBRAUnqualified") - .HasColumnType("boolean") - .HasColumnName("is_cbra_unqualified"); - b.Property("IsHidden") .HasColumnType("boolean") .HasColumnName("is_hidden"); From 2f2495af28c23b928bce19b891fa88ae3f053e38 Mon Sep 17 00:00:00 2001 From: Dao Yu Lai Date: Mon, 16 Dec 2024 09:42:07 -0800 Subject: [PATCH 6/6] MMI-3130 Upgraded tno-core version --- ...-core-npm-1.0.4-139085a13d-313b17b1ad.zip} | Bin 2111031 -> 2111308 bytes app/editor/package.json | 2 +- app/editor/yarn.lock | 10 +++++----- ...-core-npm-1.0.4-139085a13d-313b17b1ad.zip} | Bin 2111031 -> 2111308 bytes app/subscriber/package.json | 2 +- app/subscriber/yarn.lock | 10 +++++----- libs/npm/core/package.json | 2 +- 7 files changed, 13 insertions(+), 13 deletions(-) rename app/editor/.yarn/cache/{tno-core-npm-1.0.3-7d7d539e80-7b94d711ef.zip => tno-core-npm-1.0.4-139085a13d-313b17b1ad.zip} (85%) rename app/subscriber/.yarn/cache/{tno-core-npm-1.0.3-7d7d539e80-7b94d711ef.zip => tno-core-npm-1.0.4-139085a13d-313b17b1ad.zip} (85%) diff --git a/app/editor/.yarn/cache/tno-core-npm-1.0.3-7d7d539e80-7b94d711ef.zip b/app/editor/.yarn/cache/tno-core-npm-1.0.4-139085a13d-313b17b1ad.zip similarity index 85% rename from app/editor/.yarn/cache/tno-core-npm-1.0.3-7d7d539e80-7b94d711ef.zip rename to app/editor/.yarn/cache/tno-core-npm-1.0.4-139085a13d-313b17b1ad.zip index b89c43e111d921ae8fc2e6889fb1b32644421fcb..2ceb4098b4727e9f9877f21a4f7f8f8c05b40d1c 100644 GIT binary patch delta 103811 zcmaI8b980hw=Ejmwr!(g+qP{xJ66Tov28n*q*Ae6v29gS;mh|s=e~Ep^X_|Xw!U|3 zYwdr=oMVmIdmnS{_KP6U$*UmHhQ3x{!43pnO8-72P%j<>4>&6bOAK_j!^HrW$73J? zt*voUfXAia)IeoxT$mL5X_)5miKkFhFc26J;ksp*7Z`!qIS>#KHDKX6HX#tj9Fz#4 z=3ruPFJ^6FW@qZ;&1BBx?&gp`%#5P2Qk6Iu`{iljL6I#R%b)54Jz_ce#Z1jDlt;YF}8UtgL54qCMOhKj(LaUT$%r*$>YH+cUi^ulVS9D6r)*9vM1 zrd2^rYqmcm=&(p422SRA;xQGp&}Zm1LS|rf+2*PeDBvRFoA-A$O8Wip%DRRH9>Lz z4>Q5!VB)M1HvspO1x5VRVx~}}cWD7fj*%>cXh_3b)UZF2>b!KM3_68>i!fn3fPdbO%0$pgHrfJ`9p+J%hKC2lHpP)F z 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 delta 101253 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 KD#yi3(f4>&6bOAK_j!^HrW$73J? zt*voUfXAia)IeoxT$mL5X_)5miKkFhFc26J;ksp*7Z`!qIS>#KHDKX6HX#tj9Fz#4 z=3ruPFJ^6FW@qZ;&1BBx?&gp`%#5P2Qk6Iu`{iljL6I#R%b)54Jz_ce#Z1jDlt;YF}8UtgL54qCMOhKj(LaUT$%r*$>YH+cUi^ulVS9D6r)*9vM1 zrd2^rYqmcm=&(p422SRA;xQGp&}Zm1LS|rf+2*PeDBvRFoA-A$O8Wip%DRRH9>Lz z4>Q5!VB)M1HvspO1x5VRVx~}}cWD7fj*%>cXh_3b)UZF2>b!KM3_68>i!fn3fPdbO%0$pgHrfJ`9p+J%hKC2lHpP)F z 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 delta 101253 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 KD#yi3(f