mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2026-10-18 08:37:59 +00:00
Added mailboxes as local data sources (#1022)
Build and Release / Determine run mode (push) Waiting to run
Build and Release / Read metadata (push) Blocked by required conditions
Build and Release / Sync Flatpak repo (push) Blocked by required conditions
Build and Release / Collect Flatpak artifacts (push) Blocked by required conditions
Build and Release / Verify (push) Waiting to run
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-aarch64-apple-darwin, osx-arm64, macos-latest, aarch64-apple-darwin, dmg,app,updater, dmg) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-aarch64-pc-windows-msvc.exe, win-arm64, windows-latest, aarch64-pc-windows-msvc, nsis,updater, nsis) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-aarch64-unknown-linux-gnu, linux-arm64, ubuntu-22.04-arm, aarch64-unknown-linux-gnu, appimage,updater, appimage) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-apple-darwin, osx-x64, macos-latest, x86_64-apple-darwin, dmg,app,updater, dmg) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-pc-windows-msvc.exe, win-x64, windows-latest, x86_64-pc-windows-msvc, nsis,updater, nsis) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-unknown-linux-gnu, linux-x64, ubuntu-22.04, x86_64-unknown-linux-gnu, appimage,updater, appimage) (push) Blocked by required conditions
Build and Release / Prepare & create release (push) Blocked by required conditions
Build and Release / Publish release (push) Blocked by required conditions
Build and Release / Determine run mode (push) Waiting to run
Build and Release / Read metadata (push) Blocked by required conditions
Build and Release / Sync Flatpak repo (push) Blocked by required conditions
Build and Release / Collect Flatpak artifacts (push) Blocked by required conditions
Build and Release / Verify (push) Waiting to run
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-aarch64-apple-darwin, osx-arm64, macos-latest, aarch64-apple-darwin, dmg,app,updater, dmg) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-aarch64-pc-windows-msvc.exe, win-arm64, windows-latest, aarch64-pc-windows-msvc, nsis,updater, nsis) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-aarch64-unknown-linux-gnu, linux-arm64, ubuntu-22.04-arm, aarch64-unknown-linux-gnu, appimage,updater, appimage) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-apple-darwin, osx-x64, macos-latest, x86_64-apple-darwin, dmg,app,updater, dmg) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-pc-windows-msvc.exe, win-x64, windows-latest, x86_64-pc-windows-msvc, nsis,updater, nsis) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-unknown-linux-gnu, linux-x64, ubuntu-22.04, x86_64-unknown-linux-gnu, appimage,updater, appimage) (push) Blocked by required conditions
Build and Release / Prepare & create release (push) Blocked by required conditions
Build and Release / Publish release (push) Blocked by required conditions
This commit is contained in:
1 parent
93be539e50
commit
c4400c0ff6
343 files changed
+26051
-3122
No files matched your search
+251
@@ -0,0 +1,251 @@
|
||||
#nullable disable
|
||||
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
namespace AIStudio.Tools.Databases.IndexStore.Migrations;
|
||||
|
||||
/// <summary>
|
||||
/// Adds what the index keeps about mailboxes beyond the text of their mails.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Every mail is a row in embedded_files like any document, so search, chunks and full-text index
|
||||
/// stay the same for both. These tables hold what only a mail has: its addresses, its parts, the
|
||||
/// folders and places it lies in, and how far the sync of each mailbox got. All of them go with
|
||||
/// their data source, except mailbox_auth_state: a refused sign-in has to survive a rebuild.
|
||||
/// </remarks>
|
||||
[DbContext(typeof(IndexStoreDbContext))]
|
||||
[Migration("20261001000000_MailboxIndex")]
|
||||
public partial class MailboxIndex : Migration
|
||||
{
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.CreateTable(
|
||||
name: "mail_messages",
|
||||
columns: table => new
|
||||
{
|
||||
parent_file_id = table.Column<string>(type: "TEXT", nullable: false),
|
||||
data_source_id = table.Column<string>(type: "TEXT", nullable: false),
|
||||
message_id = table.Column<string>(type: "TEXT", nullable: false),
|
||||
in_reply_to = table.Column<string>(type: "TEXT", nullable: false),
|
||||
reference_message_ids = table.Column<string>(type: "TEXT", nullable: false),
|
||||
sent_at_utc = table.Column<string>(type: "TEXT", nullable: true),
|
||||
received_at_utc = table.Column<string>(type: "TEXT", nullable: false),
|
||||
importance = table.Column<string>(type: "TEXT", nullable: false),
|
||||
encryption_kind = table.Column<string>(type: "TEXT", nullable: false),
|
||||
mail_hash = table.Column<string>(type: "TEXT", nullable: false),
|
||||
first_seen_utc = table.Column<string>(type: "TEXT", nullable: false),
|
||||
orphaned_at_utc = table.Column<string>(type: "TEXT", nullable: true),
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_mail_messages", mail => mail.parent_file_id);
|
||||
table.ForeignKey(
|
||||
name: "FK_mail_messages_data_sources_data_source_id",
|
||||
column: mail => mail.data_source_id,
|
||||
principalTable: "data_sources",
|
||||
principalColumn: "data_source_id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
table.ForeignKey(
|
||||
name: "FK_mail_messages_embedded_files_parent_file_id",
|
||||
column: mail => mail.parent_file_id,
|
||||
principalTable: "embedded_files",
|
||||
principalColumn: "parent_file_id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "mail_folders",
|
||||
columns: table => new
|
||||
{
|
||||
id = table.Column<int>(type: "INTEGER", nullable: false)
|
||||
.Annotation("Sqlite:Autoincrement", true),
|
||||
data_source_id = table.Column<string>(type: "TEXT", nullable: false),
|
||||
path = table.Column<string>(type: "TEXT", nullable: false),
|
||||
special_use = table.Column<string>(type: "TEXT", nullable: false),
|
||||
uid_validity = table.Column<long>(type: "INTEGER", nullable: false),
|
||||
uid_next = table.Column<long>(type: "INTEGER", nullable: true),
|
||||
highest_mod_seq = table.Column<long>(type: "INTEGER", nullable: true),
|
||||
server_message_count = table.Column<long>(type: "INTEGER", nullable: true),
|
||||
server_unseen_count = table.Column<long>(type: "INTEGER", nullable: true),
|
||||
initial_sync_completed_utc = table.Column<string>(type: "TEXT", nullable: true),
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_mail_folders", folder => folder.id);
|
||||
table.ForeignKey(
|
||||
name: "FK_mail_folders_data_sources_data_source_id",
|
||||
column: folder => folder.data_source_id,
|
||||
principalTable: "data_sources",
|
||||
principalColumn: "data_source_id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "mail_addresses",
|
||||
columns: table => new
|
||||
{
|
||||
id = table.Column<int>(type: "INTEGER", nullable: false)
|
||||
.Annotation("Sqlite:Autoincrement", true),
|
||||
parent_file_id = table.Column<string>(type: "TEXT", nullable: false),
|
||||
role = table.Column<string>(type: "TEXT", nullable: false),
|
||||
position = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
address = table.Column<string>(type: "TEXT", nullable: false, collation: "NOCASE"),
|
||||
display_name = table.Column<string>(type: "TEXT", nullable: false),
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_mail_addresses", address => address.id);
|
||||
table.ForeignKey(
|
||||
name: "FK_mail_addresses_mail_messages_parent_file_id",
|
||||
column: address => address.parent_file_id,
|
||||
principalTable: "mail_messages",
|
||||
principalColumn: "parent_file_id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "mail_parts",
|
||||
columns: table => new
|
||||
{
|
||||
id = table.Column<int>(type: "INTEGER", nullable: false)
|
||||
.Annotation("Sqlite:Autoincrement", true),
|
||||
parent_file_id = table.Column<string>(type: "TEXT", nullable: false),
|
||||
kind = table.Column<string>(type: "TEXT", nullable: false),
|
||||
position = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
name = table.Column<string>(type: "TEXT", nullable: false),
|
||||
content_type = table.Column<string>(type: "TEXT", nullable: false),
|
||||
part_size = table.Column<long>(type: "INTEGER", nullable: false),
|
||||
text = table.Column<string>(type: "TEXT", nullable: true),
|
||||
text_state = table.Column<string>(type: "TEXT", nullable: false),
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_mail_parts", part => part.id);
|
||||
table.ForeignKey(
|
||||
name: "FK_mail_parts_mail_messages_parent_file_id",
|
||||
column: part => part.parent_file_id,
|
||||
principalTable: "mail_messages",
|
||||
principalColumn: "parent_file_id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "mail_locations",
|
||||
columns: table => new
|
||||
{
|
||||
id = table.Column<int>(type: "INTEGER", nullable: false)
|
||||
.Annotation("Sqlite:Autoincrement", true),
|
||||
parent_file_id = table.Column<string>(type: "TEXT", nullable: false),
|
||||
folder_id = table.Column<int>(type: "INTEGER", nullable: false),
|
||||
uid = table.Column<long>(type: "INTEGER", nullable: false),
|
||||
is_seen = table.Column<bool>(type: "INTEGER", nullable: false),
|
||||
is_flagged = table.Column<bool>(type: "INTEGER", nullable: false),
|
||||
is_answered = table.Column<bool>(type: "INTEGER", nullable: false),
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_mail_locations", location => location.id);
|
||||
table.ForeignKey(
|
||||
name: "FK_mail_locations_mail_folders_folder_id",
|
||||
column: location => location.folder_id,
|
||||
principalTable: "mail_folders",
|
||||
principalColumn: "id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
table.ForeignKey(
|
||||
name: "FK_mail_locations_mail_messages_parent_file_id",
|
||||
column: location => location.parent_file_id,
|
||||
principalTable: "mail_messages",
|
||||
principalColumn: "parent_file_id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "mailbox_sync_state",
|
||||
columns: table => new
|
||||
{
|
||||
data_source_id = table.Column<string>(type: "TEXT", nullable: false),
|
||||
last_sync_completed_utc = table.Column<string>(type: "TEXT", nullable: true),
|
||||
pending_removal_count = table.Column<int>(type: "INTEGER", nullable: true),
|
||||
pending_removal_approved_utc = table.Column<string>(type: "TEXT", nullable: true),
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_mailbox_sync_state", state => state.data_source_id);
|
||||
table.ForeignKey(
|
||||
name: "FK_mailbox_sync_state_data_sources_data_source_id",
|
||||
column: state => state.data_source_id,
|
||||
principalTable: "data_sources",
|
||||
principalColumn: "data_source_id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "mailbox_auth_state",
|
||||
columns: table => new
|
||||
{
|
||||
data_source_id = table.Column<string>(type: "TEXT", nullable: false),
|
||||
failed_at_utc = table.Column<string>(type: "TEXT", nullable: false),
|
||||
failure_message = table.Column<string>(type: "TEXT", nullable: false),
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_mailbox_auth_state", state => state.data_source_id);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "idx_mail_messages_data_source_message_id",
|
||||
table: "mail_messages",
|
||||
columns: ["data_source_id", "message_id"]);
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "idx_mail_messages_data_source_received",
|
||||
table: "mail_messages",
|
||||
columns: ["data_source_id", "received_at_utc"]);
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "idx_mail_folders_data_source_path",
|
||||
table: "mail_folders",
|
||||
columns: ["data_source_id", "path"],
|
||||
unique: true);
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "idx_mail_addresses_address",
|
||||
table: "mail_addresses",
|
||||
column: "address");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "idx_mail_addresses_parent_file_role_position",
|
||||
table: "mail_addresses",
|
||||
columns: ["parent_file_id", "role", "position"],
|
||||
unique: true);
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "idx_mail_parts_parent_file_kind_position",
|
||||
table: "mail_parts",
|
||||
columns: ["parent_file_id", "kind", "position"],
|
||||
unique: true);
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "idx_mail_locations_folder_uid",
|
||||
table: "mail_locations",
|
||||
columns: ["folder_id", "uid"],
|
||||
unique: true);
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "idx_mail_locations_parent_file",
|
||||
table: "mail_locations",
|
||||
column: "parent_file_id");
|
||||
}
|
||||
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropTable(name: "mailbox_auth_state");
|
||||
migrationBuilder.DropTable(name: "mailbox_sync_state");
|
||||
migrationBuilder.DropTable(name: "mail_locations");
|
||||
migrationBuilder.DropTable(name: "mail_parts");
|
||||
migrationBuilder.DropTable(name: "mail_addresses");
|
||||
migrationBuilder.DropTable(name: "mail_folders");
|
||||
migrationBuilder.DropTable(name: "mail_messages");
|
||||
}
|
||||
}
|
||||
+407
@@ -315,6 +315,325 @@ partial class IndexStoreDbContextModelSnapshot : ModelSnapshot
|
||||
entity.ToView("embedding_chunk_search_results");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("AIStudio.Tools.Databases.IndexStore.MailAddressEntity", entity =>
|
||||
{
|
||||
entity.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("INTEGER")
|
||||
.HasColumnName("id")
|
||||
.HasAnnotation("Sqlite:Autoincrement", true);
|
||||
|
||||
entity.Property<string>("Address")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("address")
|
||||
.UseCollation("NOCASE");
|
||||
|
||||
entity.Property<string>("DisplayName")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("display_name");
|
||||
|
||||
entity.Property<string>("ParentFileId")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("parent_file_id");
|
||||
|
||||
entity.Property<int>("Position")
|
||||
.HasColumnType("INTEGER")
|
||||
.HasColumnName("position");
|
||||
|
||||
entity.Property<string>("Role")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("role");
|
||||
|
||||
entity.HasKey("Id");
|
||||
|
||||
entity.HasIndex("Address")
|
||||
.HasDatabaseName("idx_mail_addresses_address");
|
||||
|
||||
entity.HasIndex("ParentFileId", "Role", "Position")
|
||||
.IsUnique()
|
||||
.HasDatabaseName("idx_mail_addresses_parent_file_role_position");
|
||||
|
||||
entity.ToTable("mail_addresses");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("AIStudio.Tools.Databases.IndexStore.MailFolderEntity", entity =>
|
||||
{
|
||||
entity.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("INTEGER")
|
||||
.HasColumnName("id")
|
||||
.HasAnnotation("Sqlite:Autoincrement", true);
|
||||
|
||||
entity.Property<string>("DataSourceId")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("data_source_id");
|
||||
|
||||
entity.Property<long?>("HighestModSeq")
|
||||
.HasColumnType("INTEGER")
|
||||
.HasColumnName("highest_mod_seq");
|
||||
|
||||
entity.Property<DateTimeOffset?>("InitialSyncCompletedUtc")
|
||||
.HasConversion(utcDateTimeOffsetConverter)
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("initial_sync_completed_utc");
|
||||
|
||||
entity.Property<string>("Path")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("path");
|
||||
|
||||
entity.Property<long?>("ServerMessageCount")
|
||||
.HasColumnType("INTEGER")
|
||||
.HasColumnName("server_message_count");
|
||||
|
||||
entity.Property<long?>("ServerUnseenCount")
|
||||
.HasColumnType("INTEGER")
|
||||
.HasColumnName("server_unseen_count");
|
||||
|
||||
entity.Property<string>("SpecialUse")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("special_use");
|
||||
|
||||
entity.Property<long?>("UidNext")
|
||||
.HasColumnType("INTEGER")
|
||||
.HasColumnName("uid_next");
|
||||
|
||||
entity.Property<long>("UidValidity")
|
||||
.HasColumnType("INTEGER")
|
||||
.HasColumnName("uid_validity");
|
||||
|
||||
entity.HasKey("Id");
|
||||
|
||||
entity.HasIndex("DataSourceId", "Path")
|
||||
.IsUnique()
|
||||
.HasDatabaseName("idx_mail_folders_data_source_path");
|
||||
|
||||
entity.ToTable("mail_folders");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("AIStudio.Tools.Databases.IndexStore.MailLocationEntity", entity =>
|
||||
{
|
||||
entity.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("INTEGER")
|
||||
.HasColumnName("id")
|
||||
.HasAnnotation("Sqlite:Autoincrement", true);
|
||||
|
||||
entity.Property<int>("FolderId")
|
||||
.HasColumnType("INTEGER")
|
||||
.HasColumnName("folder_id");
|
||||
|
||||
entity.Property<bool>("IsAnswered")
|
||||
.HasColumnType("INTEGER")
|
||||
.HasColumnName("is_answered");
|
||||
|
||||
entity.Property<bool>("IsFlagged")
|
||||
.HasColumnType("INTEGER")
|
||||
.HasColumnName("is_flagged");
|
||||
|
||||
entity.Property<bool>("IsSeen")
|
||||
.HasColumnType("INTEGER")
|
||||
.HasColumnName("is_seen");
|
||||
|
||||
entity.Property<string>("ParentFileId")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("parent_file_id");
|
||||
|
||||
entity.Property<long>("Uid")
|
||||
.HasColumnType("INTEGER")
|
||||
.HasColumnName("uid");
|
||||
|
||||
entity.HasKey("Id");
|
||||
|
||||
entity.HasIndex("ParentFileId")
|
||||
.HasDatabaseName("idx_mail_locations_parent_file");
|
||||
|
||||
entity.HasIndex("FolderId", "Uid")
|
||||
.IsUnique()
|
||||
.HasDatabaseName("idx_mail_locations_folder_uid");
|
||||
|
||||
entity.ToTable("mail_locations");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("AIStudio.Tools.Databases.IndexStore.MailMessageEntity", entity =>
|
||||
{
|
||||
entity.Property<string>("ParentFileId")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("parent_file_id");
|
||||
|
||||
entity.Property<string>("DataSourceId")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("data_source_id");
|
||||
|
||||
entity.Property<string>("EncryptionKind")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("encryption_kind");
|
||||
|
||||
entity.Property<DateTimeOffset>("FirstSeenUtc")
|
||||
.HasConversion(utcDateTimeOffsetConverter)
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("first_seen_utc");
|
||||
|
||||
entity.Property<string>("Importance")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("importance");
|
||||
|
||||
entity.Property<string>("InReplyTo")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("in_reply_to");
|
||||
|
||||
entity.Property<string>("MailHash")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("mail_hash");
|
||||
|
||||
entity.Property<string>("MessageId")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("message_id");
|
||||
|
||||
entity.Property<DateTimeOffset?>("OrphanedAtUtc")
|
||||
.HasConversion(utcDateTimeOffsetConverter)
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("orphaned_at_utc");
|
||||
|
||||
entity.Property<DateTimeOffset>("ReceivedAtUtc")
|
||||
.HasConversion(utcDateTimeOffsetConverter)
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("received_at_utc");
|
||||
|
||||
entity.Property<string>("ReferenceMessageIds")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("reference_message_ids");
|
||||
|
||||
entity.Property<DateTimeOffset?>("SentAtUtc")
|
||||
.HasConversion(utcDateTimeOffsetConverter)
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("sent_at_utc");
|
||||
|
||||
entity.HasKey("ParentFileId");
|
||||
|
||||
entity.HasIndex("DataSourceId", "MessageId")
|
||||
.HasDatabaseName("idx_mail_messages_data_source_message_id");
|
||||
|
||||
entity.HasIndex("DataSourceId", "ReceivedAtUtc")
|
||||
.HasDatabaseName("idx_mail_messages_data_source_received");
|
||||
|
||||
entity.ToTable("mail_messages");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("AIStudio.Tools.Databases.IndexStore.MailPartEntity", entity =>
|
||||
{
|
||||
entity.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("INTEGER")
|
||||
.HasColumnName("id")
|
||||
.HasAnnotation("Sqlite:Autoincrement", true);
|
||||
|
||||
entity.Property<string>("ContentType")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("content_type");
|
||||
|
||||
entity.Property<string>("Kind")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("kind");
|
||||
|
||||
entity.Property<string>("Name")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("name");
|
||||
|
||||
entity.Property<string>("ParentFileId")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("parent_file_id");
|
||||
|
||||
entity.Property<long>("PartSize")
|
||||
.HasColumnType("INTEGER")
|
||||
.HasColumnName("part_size");
|
||||
|
||||
entity.Property<int>("Position")
|
||||
.HasColumnType("INTEGER")
|
||||
.HasColumnName("position");
|
||||
|
||||
entity.Property<string>("Text")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("text");
|
||||
|
||||
entity.Property<string>("TextState")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("text_state");
|
||||
|
||||
entity.HasKey("Id");
|
||||
|
||||
entity.HasIndex("ParentFileId", "Kind", "Position")
|
||||
.IsUnique()
|
||||
.HasDatabaseName("idx_mail_parts_parent_file_kind_position");
|
||||
|
||||
entity.ToTable("mail_parts");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("AIStudio.Tools.Databases.IndexStore.MailboxAuthStateEntity", entity =>
|
||||
{
|
||||
entity.Property<string>("DataSourceId")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("data_source_id");
|
||||
|
||||
entity.Property<DateTimeOffset>("FailedAtUtc")
|
||||
.HasConversion(utcDateTimeOffsetConverter)
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("failed_at_utc");
|
||||
|
||||
entity.Property<string>("FailureMessage")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("failure_message");
|
||||
|
||||
entity.HasKey("DataSourceId");
|
||||
|
||||
entity.ToTable("mailbox_auth_state");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("AIStudio.Tools.Databases.IndexStore.MailboxSyncStateEntity", entity =>
|
||||
{
|
||||
entity.Property<string>("DataSourceId")
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("data_source_id");
|
||||
|
||||
entity.Property<DateTimeOffset?>("LastSyncCompletedUtc")
|
||||
.HasConversion(utcDateTimeOffsetConverter)
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("last_sync_completed_utc");
|
||||
|
||||
entity.Property<DateTimeOffset?>("PendingRemovalApprovedUtc")
|
||||
.HasConversion(utcDateTimeOffsetConverter)
|
||||
.HasColumnType("TEXT")
|
||||
.HasColumnName("pending_removal_approved_utc");
|
||||
|
||||
entity.Property<int?>("PendingRemovalCount")
|
||||
.HasColumnType("INTEGER")
|
||||
.HasColumnName("pending_removal_count");
|
||||
|
||||
entity.HasKey("DataSourceId");
|
||||
|
||||
entity.ToTable("mailbox_sync_state");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("AIStudio.Tools.Databases.IndexStore.EmbeddingStateFileEntity", entity =>
|
||||
{
|
||||
entity.HasOne("AIStudio.Tools.Databases.IndexStore.EmbeddingStateDataSourceEntity", "DataSource")
|
||||
@@ -348,6 +667,80 @@ partial class IndexStoreDbContextModelSnapshot : ModelSnapshot
|
||||
entity.Navigation("DataSource");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("AIStudio.Tools.Databases.IndexStore.MailAddressEntity", entity =>
|
||||
{
|
||||
entity.HasOne("AIStudio.Tools.Databases.IndexStore.MailMessageEntity", "Message")
|
||||
.WithMany("Addresses")
|
||||
.HasForeignKey("ParentFileId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
entity.Navigation("Message");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("AIStudio.Tools.Databases.IndexStore.MailFolderEntity", entity =>
|
||||
{
|
||||
entity.HasOne("AIStudio.Tools.Databases.IndexStore.EmbeddingStateDataSourceEntity", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("DataSourceId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("AIStudio.Tools.Databases.IndexStore.MailLocationEntity", entity =>
|
||||
{
|
||||
entity.HasOne("AIStudio.Tools.Databases.IndexStore.MailFolderEntity", "Folder")
|
||||
.WithMany("Locations")
|
||||
.HasForeignKey("FolderId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
entity.HasOne("AIStudio.Tools.Databases.IndexStore.MailMessageEntity", "Message")
|
||||
.WithMany("Locations")
|
||||
.HasForeignKey("ParentFileId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
entity.Navigation("Folder");
|
||||
|
||||
entity.Navigation("Message");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("AIStudio.Tools.Databases.IndexStore.MailMessageEntity", entity =>
|
||||
{
|
||||
entity.HasOne("AIStudio.Tools.Databases.IndexStore.EmbeddingStateDataSourceEntity", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("DataSourceId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
entity.HasOne("AIStudio.Tools.Databases.IndexStore.EmbeddingStateFileEntity", null)
|
||||
.WithOne()
|
||||
.HasForeignKey("AIStudio.Tools.Databases.IndexStore.MailMessageEntity", "ParentFileId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("AIStudio.Tools.Databases.IndexStore.MailPartEntity", entity =>
|
||||
{
|
||||
entity.HasOne("AIStudio.Tools.Databases.IndexStore.MailMessageEntity", "Message")
|
||||
.WithMany("Parts")
|
||||
.HasForeignKey("ParentFileId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
entity.Navigation("Message");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("AIStudio.Tools.Databases.IndexStore.MailboxSyncStateEntity", entity =>
|
||||
{
|
||||
entity.HasOne("AIStudio.Tools.Databases.IndexStore.EmbeddingStateDataSourceEntity", null)
|
||||
.WithOne()
|
||||
.HasForeignKey("AIStudio.Tools.Databases.IndexStore.MailboxSyncStateEntity", "DataSourceId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("AIStudio.Tools.Databases.IndexStore.EmbeddingStateDataSourceEntity", entity =>
|
||||
{
|
||||
entity.Navigation("Files");
|
||||
@@ -359,6 +752,20 @@ partial class IndexStoreDbContextModelSnapshot : ModelSnapshot
|
||||
{
|
||||
entity.Navigation("Chunks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("AIStudio.Tools.Databases.IndexStore.MailFolderEntity", entity =>
|
||||
{
|
||||
entity.Navigation("Locations");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("AIStudio.Tools.Databases.IndexStore.MailMessageEntity", entity =>
|
||||
{
|
||||
entity.Navigation("Addresses");
|
||||
|
||||
entity.Navigation("Locations");
|
||||
|
||||
entity.Navigation("Parts");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user