DocSpace-buildtools/common/ASC.Core.Common/EF/Model/Feed/FeedAggregate.cs

194 lines
6.8 KiB
C#
Raw Normal View History

2020-11-17 10:00:01 +00:00
using System;
2019-12-09 11:59:22 +00:00
using System.ComponentModel.DataAnnotations.Schema;
2020-11-17 10:00:01 +00:00
using Microsoft.EntityFrameworkCore;
2019-12-09 11:59:22 +00:00
namespace ASC.Core.Common.EF.Model
{
[Table("feed_aggregate")]
2019-12-23 13:36:37 +00:00
public class FeedAggregate : BaseEntity
2019-12-09 11:59:22 +00:00
{
public string Id { get; set; }
public int Tenant { get; set; }
public string Product { get; set; }
public string Module { get; set; }
public Guid Author { get; set; }
[Column("modified_by")]
public Guid ModifiedBy { get; set; }
[Column("created_date")]
public DateTime CreatedDate { get; set; }
[Column("modified_date")]
public DateTime ModifiedDate { get; set; }
[Column("group_id")]
public string GroupId { get; set; }
[Column("aggregated_date")]
public DateTime AggregateDate { get; set; }
public string Json { get; set; }
public string Keywords { get; set; }
2019-12-23 13:36:37 +00:00
2020-09-30 14:47:42 +00:00
public override object[] GetKeys()
{
return new object[] { Id };
}
2019-12-09 11:59:22 +00:00
}
2020-08-21 02:34:37 +00:00
public static class FeedAggregateExtension
{
2020-09-06 22:49:03 +00:00
public static ModelBuilderWrapper AddFeedAggregate(this ModelBuilderWrapper modelBuilder)
{
2020-10-12 19:39:23 +00:00
modelBuilder
2020-09-06 22:49:03 +00:00
.Add(MySqlAddFeedAggregate, Provider.MySql)
2020-10-08 09:07:05 +00:00
.Add(PgSqlAddFeedAggregate, Provider.Postgre);
2020-09-06 22:49:03 +00:00
return modelBuilder;
}
public static void MySqlAddFeedAggregate(this ModelBuilder modelBuilder)
2020-08-21 02:34:37 +00:00
{
2020-10-12 19:39:23 +00:00
modelBuilder.Entity<FeedAggregate>(entity =>
2020-08-21 02:34:37 +00:00
{
2020-10-12 19:39:23 +00:00
entity.ToTable("feed_aggregate");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.HasIndex(e => new { e.Tenant, e.AggregateDate })
2020-08-21 02:34:37 +00:00
.HasName("aggregated_date");
2020-10-12 19:39:23 +00:00
entity.HasIndex(e => new { e.Tenant, e.ModifiedDate })
2020-08-21 02:34:37 +00:00
.HasName("modified_date");
2020-10-12 19:39:23 +00:00
entity.HasIndex(e => new { e.Tenant, e.Product })
2020-08-21 02:34:37 +00:00
.HasName("product");
2020-10-12 19:39:23 +00:00
entity.Property(e => e.Id)
2020-08-21 02:34:37 +00:00
.HasColumnName("id")
.HasColumnType("varchar(88)")
.HasCharSet("utf8")
.HasCollation("utf8_general_ci");
2020-10-12 19:39:23 +00:00
entity.Property(e => e.AggregateDate)
2020-08-21 02:34:37 +00:00
.HasColumnName("aggregated_date")
.HasColumnType("datetime");
2020-10-12 19:39:23 +00:00
entity.Property(e => e.Author)
2020-08-21 02:34:37 +00:00
.IsRequired()
.HasColumnName("author")
.HasColumnType("char(38)")
.HasCharSet("utf8")
.HasCollation("utf8_general_ci");
2020-10-12 19:39:23 +00:00
entity.Property(e => e.CreatedDate)
2020-08-21 02:34:37 +00:00
.HasColumnName("created_date")
.HasColumnType("datetime");
2020-10-12 19:39:23 +00:00
entity.Property(e => e.GroupId)
2020-08-21 02:34:37 +00:00
.HasColumnName("group_id")
.HasColumnType("varchar(70)")
.HasCharSet("utf8")
.HasCollation("utf8_general_ci");
2020-10-12 19:39:23 +00:00
entity.Property(e => e.Json)
2020-08-21 02:34:37 +00:00
.IsRequired()
.HasColumnName("json")
.HasColumnType("mediumtext")
.HasCharSet("utf8")
.HasCollation("utf8_general_ci");
2020-10-12 19:39:23 +00:00
entity.Property(e => e.Keywords)
2020-08-21 02:34:37 +00:00
.HasColumnName("keywords")
.HasColumnType("text")
.HasCharSet("utf8")
.HasCollation("utf8_general_ci");
2020-10-12 19:39:23 +00:00
entity.Property(e => e.ModifiedBy)
2020-08-21 02:34:37 +00:00
.IsRequired()
.HasColumnName("modified_by")
.HasColumnType("char(38)")
.HasCharSet("utf8")
.HasCollation("utf8_general_ci");
2020-10-12 19:39:23 +00:00
entity.Property(e => e.ModifiedDate)
2020-08-21 02:34:37 +00:00
.HasColumnName("modified_date")
.HasColumnType("datetime");
2020-10-12 19:39:23 +00:00
entity.Property(e => e.Module)
2020-08-21 02:34:37 +00:00
.IsRequired()
.HasColumnName("module")
.HasColumnType("varchar(50)")
.HasCharSet("utf8")
.HasCollation("utf8_general_ci");
2020-10-12 19:39:23 +00:00
entity.Property(e => e.Product)
2020-08-21 02:34:37 +00:00
.IsRequired()
.HasColumnName("product")
.HasColumnType("varchar(50)")
.HasCharSet("utf8")
.HasCollation("utf8_general_ci");
2020-10-12 19:39:23 +00:00
entity.Property(e => e.Tenant).HasColumnName("tenant");
2020-08-21 02:34:37 +00:00
});
}
2020-09-06 22:49:03 +00:00
public static void PgSqlAddFeedAggregate(this ModelBuilder modelBuilder)
2020-08-21 02:34:37 +00:00
{
2020-10-12 19:39:23 +00:00
modelBuilder.Entity<FeedAggregate>(entity =>
2020-08-21 02:34:37 +00:00
{
2020-10-12 19:39:23 +00:00
entity.ToTable("feed_aggregate", "onlyoffice");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.HasIndex(e => new { e.Tenant, e.AggregateDate })
2020-08-21 02:34:37 +00:00
.HasName("aggregated_date");
2020-10-12 19:39:23 +00:00
entity.HasIndex(e => new { e.Tenant, e.ModifiedDate })
2020-08-21 02:34:37 +00:00
.HasName("modified_date");
2020-10-12 19:39:23 +00:00
entity.HasIndex(e => new { e.Tenant, e.Product })
2020-08-21 02:34:37 +00:00
.HasName("product");
2020-10-12 19:39:23 +00:00
entity.Property(e => e.Id)
2020-08-21 02:34:37 +00:00
.HasColumnName("id")
.HasMaxLength(88);
2020-10-12 19:39:23 +00:00
entity.Property(e => e.AggregateDate).HasColumnName("aggregated_date");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.Author)
2020-08-21 02:34:37 +00:00
.IsRequired()
.HasColumnName("author")
.HasMaxLength(38)
.IsFixedLength();
2020-10-12 19:39:23 +00:00
entity.Property(e => e.CreatedDate).HasColumnName("created_date");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.GroupId)
2020-08-21 02:34:37 +00:00
.HasColumnName("group_id")
.HasMaxLength(70)
2020-09-29 17:09:39 +00:00
.HasDefaultValueSql("NULL");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.Json)
2020-08-21 02:34:37 +00:00
.IsRequired()
.HasColumnName("json");
2020-10-12 19:39:23 +00:00
entity.Property(e => e.Keywords).HasColumnName("keywords");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.ModifiedBy)
2020-08-21 02:34:37 +00:00
.IsRequired()
.HasColumnName("modified_by")
.HasMaxLength(38)
.IsFixedLength();
2020-10-12 19:39:23 +00:00
entity.Property(e => e.ModifiedDate).HasColumnName("modified_date");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.Module)
2020-08-21 02:34:37 +00:00
.IsRequired()
.HasColumnName("module")
.HasMaxLength(50);
2020-10-12 19:39:23 +00:00
entity.Property(e => e.Product)
2020-08-21 02:34:37 +00:00
.IsRequired()
.HasColumnName("product")
.HasMaxLength(50);
2020-10-12 19:39:23 +00:00
entity.Property(e => e.Tenant).HasColumnName("tenant");
2020-08-21 02:34:37 +00:00
});
}
}
2019-12-09 11:59:22 +00:00
}