DocSpace-buildtools/common/ASC.Core.Common/EF/Model/Mail/Mailbox.cs

319 lines
12 KiB
C#
Raw Normal View History

2020-11-17 10:00:01 +00:00
using System;
2019-12-13 11:37:58 +00:00
2020-11-17 10:00:01 +00:00
using Microsoft.EntityFrameworkCore;
2019-12-13 11:37:58 +00:00
namespace ASC.Core.Common.EF.Model.Mail
{
public class Mailbox
{
public int Id { get; set; }
public int Tenant { get; set; }
public string IdUser { get; set; }
public string Address { get; set; }
public string Name { get; set; }
public bool Enabled { get; set; }
public bool IsRemoved { get; set; }
public bool IsProcessed { get; set; }
public bool IsServerMailbox { get; set; }
public bool IsTeamlabMailbox { get; set; }
public bool Imap { get; set; }
public bool UserOnline { get; set; }
public bool IsDefault { get; set; }
public int MsgCountLast { get; set; }
public int SizeLast { get; set; }
public int LoginDelay { get; set; }
2019-12-23 12:38:26 +00:00
public bool QuotaError { get; set; }
2019-12-13 11:37:58 +00:00
public string ImapIntervals { get; set; }
public DateTime BeginDate { get; set; }
public string EmailInFolder { get; set; }
public string Pop3Password { get; set; }
public string SmtpPassword { get; set; }
public int TokenType { get; set; }
public string Token { get; set; }
public int IdSmtpServer { get; set; }
public int IdInServer { get; set; }
public DateTime DateChecked { get; set; }
public DateTime DateUserChecked { get; set; }
public DateTime DateLoginDelayExpires { get; set; }
2019-12-23 12:38:26 +00:00
public DateTime? DateAuthError { get; set; }
2019-12-13 11:37:58 +00:00
public DateTime DateCreated { get; set; }
public DateTime DateModified { get; set; }
}
2020-08-21 02:34:37 +00:00
public static class MailboxExtension
{
2020-09-06 22:49:03 +00:00
public static ModelBuilderWrapper AddMailbox(this ModelBuilderWrapper modelBuilder)
{
2020-10-12 19:39:23 +00:00
modelBuilder
2020-09-06 22:49:03 +00:00
.Add(MySqlAddMailbox, Provider.MySql)
2021-10-12 10:23:20 +00:00
.Add(PgSqlAddMailbox, Provider.PostgreSql);
2020-09-06 22:49:03 +00:00
return modelBuilder;
}
public static void MySqlAddMailbox(this ModelBuilder modelBuilder)
2020-08-21 02:34:37 +00:00
{
2020-10-12 19:39:23 +00:00
modelBuilder.Entity<Mailbox>(entity =>
2020-08-21 02:34:37 +00:00
{
2020-10-12 19:39:23 +00:00
entity.ToTable("mail_mailbox");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.HasIndex(e => e.Address)
2020-11-17 10:47:17 +00:00
.HasDatabaseName("address_index");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.HasIndex(e => e.IdInServer)
2020-11-17 10:47:17 +00:00
.HasDatabaseName("main_mailbox_id_in_server_mail_mailbox_server_id");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.HasIndex(e => e.IdSmtpServer)
2020-11-17 10:47:17 +00:00
.HasDatabaseName("main_mailbox_id_smtp_server_mail_mailbox_server_id");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.HasIndex(e => new { e.DateChecked, e.DateLoginDelayExpires })
2020-11-17 10:47:17 +00:00
.HasDatabaseName("date_login_delay_expires");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.HasIndex(e => new { e.Tenant, e.IdUser })
2020-11-17 10:47:17 +00:00
.HasDatabaseName("user_id_index");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.Id).HasColumnName("id");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.Address)
2020-08-21 02:34:37 +00:00
.IsRequired()
.HasColumnName("address")
.HasColumnType("varchar(255)")
.HasCharSet("utf8")
2021-05-14 12:26:18 +00:00
.UseCollation("utf8_general_ci");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.BeginDate)
2020-08-21 02:34:37 +00:00
.HasColumnName("begin_date")
.HasColumnType("timestamp")
.HasDefaultValueSql("'1975-01-01 00:00:00'");
2020-10-12 19:39:23 +00:00
entity.Property(e => e.DateAuthError)
2020-08-21 02:34:37 +00:00
.HasColumnName("date_auth_error")
.HasColumnType("datetime");
2020-10-12 19:39:23 +00:00
entity.Property(e => e.DateChecked)
2020-08-21 02:34:37 +00:00
.HasColumnName("date_checked")
.HasColumnType("datetime");
2020-10-12 19:39:23 +00:00
entity.Property(e => e.DateCreated)
2020-08-21 02:34:37 +00:00
.HasColumnName("date_created")
.HasColumnType("datetime");
2020-10-12 19:39:23 +00:00
entity.Property(e => e.DateLoginDelayExpires)
2020-08-21 02:34:37 +00:00
.HasColumnName("date_login_delay_expires")
.HasColumnType("datetime")
.HasDefaultValueSql("'1975-01-01 00:00:00'");
2020-10-12 19:39:23 +00:00
entity.Property(e => e.DateModified)
2020-08-21 02:34:37 +00:00
.HasColumnName("date_modified")
.HasColumnType("timestamp")
.HasDefaultValueSql("CURRENT_TIMESTAMP")
.ValueGeneratedOnAddOrUpdate();
2020-10-12 19:39:23 +00:00
entity.Property(e => e.DateUserChecked)
2020-08-21 02:34:37 +00:00
.HasColumnName("date_user_checked")
.HasColumnType("datetime");
2020-10-12 19:39:23 +00:00
entity.Property(e => e.EmailInFolder)
2020-08-21 02:34:37 +00:00
.HasColumnName("email_in_folder")
.HasColumnType("text")
.HasCharSet("utf8")
2021-05-14 12:26:18 +00:00
.UseCollation("utf8_general_ci");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.Enabled)
2020-08-21 02:34:37 +00:00
.HasColumnName("enabled")
.HasDefaultValueSql("'1'");
2020-10-12 19:39:23 +00:00
entity.Property(e => e.IdInServer).HasColumnName("id_in_server");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.IdSmtpServer).HasColumnName("id_smtp_server");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.IdUser)
2020-08-21 02:34:37 +00:00
.IsRequired()
.HasColumnName("id_user")
.HasColumnType("varchar(38)")
.HasCharSet("utf8")
2021-05-14 12:26:18 +00:00
.UseCollation("utf8_general_ci");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.Imap).HasColumnName("imap");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.ImapIntervals)
2020-08-21 02:34:37 +00:00
.HasColumnName("imap_intervals")
.HasColumnType("mediumtext")
.HasCharSet("utf8")
2021-05-14 12:26:18 +00:00
.UseCollation("utf8_general_ci");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.IsDefault).HasColumnName("is_default");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.IsProcessed).HasColumnName("is_processed");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.IsRemoved).HasColumnName("is_removed");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.IsServerMailbox).HasColumnName("is_server_mailbox");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.LoginDelay)
2020-08-21 02:34:37 +00:00
.HasColumnName("login_delay")
.HasDefaultValueSql("'30'");
2020-10-12 19:39:23 +00:00
entity.Property(e => e.MsgCountLast).HasColumnName("msg_count_last");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.Name)
2020-08-21 02:34:37 +00:00
.HasColumnName("name")
.HasColumnType("varchar(255)")
.HasCharSet("utf8")
2021-05-14 12:26:18 +00:00
.UseCollation("utf8_general_ci");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.Pop3Password)
2020-08-21 02:34:37 +00:00
.HasColumnName("pop3_password")
.HasColumnType("varchar(255)")
.HasCharSet("utf8")
2021-05-14 12:26:18 +00:00
.UseCollation("utf8_general_ci");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.QuotaError).HasColumnName("quota_error");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.SizeLast).HasColumnName("size_last");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.SmtpPassword)
2020-08-21 02:34:37 +00:00
.HasColumnName("smtp_password")
.HasColumnType("varchar(255)")
.HasCharSet("utf8")
2021-05-14 12:26:18 +00:00
.UseCollation("utf8_general_ci");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.Tenant).HasColumnName("tenant");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.Token)
2020-08-21 02:34:37 +00:00
.HasColumnName("token")
.HasColumnType("text")
.HasCharSet("utf8")
2021-05-14 12:26:18 +00:00
.UseCollation("utf8_general_ci");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.TokenType).HasColumnName("token_type");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.UserOnline).HasColumnName("user_online");
2020-08-21 02:34:37 +00:00
});
}
2020-09-06 22:49:03 +00:00
public static void PgSqlAddMailbox(this ModelBuilder modelBuilder)
2020-08-21 02:34:37 +00:00
{
2020-10-12 19:39:23 +00:00
modelBuilder.Entity<Mailbox>(entity =>
2020-08-21 02:34:37 +00:00
{
2020-10-12 19:39:23 +00:00
entity.ToTable("mail_mailbox", "onlyoffice");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.HasIndex(e => e.Address)
2020-11-17 10:47:17 +00:00
.HasDatabaseName("address_index");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.HasIndex(e => e.IdInServer)
2020-11-17 10:47:17 +00:00
.HasDatabaseName("main_mailbox_id_in_server_mail_mailbox_server_id");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.HasIndex(e => e.IdSmtpServer)
2020-11-17 10:47:17 +00:00
.HasDatabaseName("main_mailbox_id_smtp_server_mail_mailbox_server_id");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.HasIndex(e => new { e.DateChecked, e.DateLoginDelayExpires })
2020-11-17 10:47:17 +00:00
.HasDatabaseName("date_login_delay_expires");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.HasIndex(e => new { e.Tenant, e.IdUser })
2020-11-17 10:47:17 +00:00
.HasDatabaseName("user_id_index");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.Id).HasColumnName("id");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.Address)
2020-08-21 02:34:37 +00:00
.IsRequired()
.HasColumnName("address")
.HasMaxLength(255);
2020-10-12 19:39:23 +00:00
entity.Property(e => e.BeginDate)
2020-08-21 02:34:37 +00:00
.HasColumnName("begin_date")
2020-09-29 17:09:39 +00:00
.HasDefaultValueSql("'1975-01-01 00:00:00'");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.DateAuthError).HasColumnName("date_auth_error");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.DateChecked).HasColumnName("date_checked");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.DateCreated).HasColumnName("date_created");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.DateLoginDelayExpires)
2020-08-21 02:34:37 +00:00
.HasColumnName("date_login_delay_expires")
2020-09-29 17:09:39 +00:00
.HasDefaultValueSql("'1975-01-01 00:00:00'");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.DateModified)
2020-09-29 17:09:39 +00:00
.HasColumnName("date_modified")
.HasDefaultValueSql("CURRENT_TIMESTAMP");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.DateUserChecked).HasColumnName("date_user_checked");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.EmailInFolder).HasColumnName("email_in_folder");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.Enabled)
2020-08-21 02:34:37 +00:00
.HasColumnName("enabled")
2020-09-29 17:09:39 +00:00
.HasDefaultValueSql("'1'::smallint");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.IdInServer).HasColumnName("id_in_server");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.IdSmtpServer).HasColumnName("id_smtp_server");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.IdUser)
2020-08-21 02:34:37 +00:00
.IsRequired()
.HasColumnName("id_user")
.HasMaxLength(38);
2020-10-12 19:39:23 +00:00
entity.Property(e => e.Imap)
2020-08-21 02:34:37 +00:00
.HasColumnName("imap")
2020-09-06 22:49:03 +00:00
.HasDefaultValueSql("'0'");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.ImapIntervals).HasColumnName("imap_intervals");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.IsDefault)
2020-08-21 02:34:37 +00:00
.HasColumnName("is_default")
2020-09-06 22:49:03 +00:00
.HasDefaultValueSql("'0'");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.IsProcessed)
2020-08-21 02:34:37 +00:00
.HasColumnName("is_processed")
2020-09-06 22:49:03 +00:00
.HasDefaultValueSql("'0'");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.IsRemoved)
2020-08-21 02:34:37 +00:00
.HasColumnName("is_removed")
2020-09-06 22:49:03 +00:00
.HasDefaultValueSql("'0'");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.IsServerMailbox)
2020-08-21 02:34:37 +00:00
.HasColumnName("is_server_mailbox")
2020-09-06 22:49:03 +00:00
.HasDefaultValueSql("'0'");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.LoginDelay)
2020-08-21 02:34:37 +00:00
.HasColumnName("login_delay")
2020-09-29 17:09:39 +00:00
.HasDefaultValueSql("'30'");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.MsgCountLast).HasColumnName("msg_count_last");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.Name)
2020-08-21 02:34:37 +00:00
.HasColumnName("name")
.HasMaxLength(255)
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.Pop3Password)
2020-08-21 02:34:37 +00:00
.HasColumnName("pop3_password")
.HasMaxLength(255)
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.QuotaError)
2020-08-21 02:34:37 +00:00
.HasColumnName("quota_error")
2020-09-06 22:49:03 +00:00
.HasDefaultValueSql("'0'");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.SizeLast).HasColumnName("size_last");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.SmtpPassword)
2020-08-21 02:34:37 +00:00
.HasColumnName("smtp_password")
.HasMaxLength(255)
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.Tenant).HasColumnName("tenant");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.Token).HasColumnName("token");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.TokenType)
2020-08-21 02:34:37 +00:00
.HasColumnName("token_type")
2020-09-29 17:09:39 +00:00
.HasDefaultValueSql("'0'");
2020-08-21 02:34:37 +00:00
2020-10-12 19:39:23 +00:00
entity.Property(e => e.UserOnline)
2020-08-21 02:34:37 +00:00
.HasColumnName("user_online")
2020-09-06 22:49:03 +00:00
.HasDefaultValueSql("'0'");
2020-08-21 02:34:37 +00:00
});
}
}
2019-12-13 11:37:58 +00:00
}