Files
MilkyShots/Lactose/Migrations/20241217213312_Initial.cs
T
REDCODE 26674e05e5 refactor: quality improvements from desloppify scan
- Remove 16 unused using System; imports from migration files (implicit usings available)
- Fix 6 empty catch blocks with proper exception logging
- Remove unused import (false positive flagged as wontfix)
- Skip test coverage, orphaned, and stale exclude issues as false positives
- Add missing namespace to IPersonRepository.cs
- Rename IFolderRepository Create/Delete to Insert/Remove for CRUD consistency
- Fix ITagRepository.Delete parameter name from 'id' to 'tag'
- Add missing IDisposable to IMediaRepository
- Rename SettingsExtensions to SettingsExtension for naming consistency
- Rename PagedParametersDTO.cs to PagedParametersDto.cs
- Add .desloppify/ to .gitignore
2026-07-29 19:52:49 +02:00

337 lines
14 KiB
C#

using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Lactose.Migrations
{
/// <inheritdoc />
public partial class Initial : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Folders",
columns: table => new
{
Id = table.Column<Guid>(type: "uuid", nullable: false),
BasePath = table.Column<string>(type: "VARCHAR(2048)", nullable: false),
Active = table.Column<bool>(type: "boolean", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Folders", x => x.Id);
});
migrationBuilder.CreateTable(
name: "People",
columns: table => new
{
Id = table.Column<Guid>(type: "uuid", nullable: false),
Name = table.Column<string>(type: "VARCHAR(255)", nullable: false),
CreatedAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
UpdatedAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
DeletedAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_People", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Settings",
columns: table => new
{
Id = table.Column<Guid>(type: "uuid", nullable: false),
UserRegistrationOpen = table.Column<bool>(type: "boolean", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Settings", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Tags",
columns: table => new
{
Id = table.Column<Guid>(type: "uuid", nullable: false),
Name = table.Column<string>(type: "VARCHAR(255)", nullable: false),
ParentId = table.Column<Guid>(type: "uuid", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Tags", x => x.Id);
table.ForeignKey(
name: "FK_Tags_Tags_ParentId",
column: x => x.ParentId,
principalTable: "Tags",
principalColumn: "Id");
});
migrationBuilder.CreateTable(
name: "AlbumAsset",
columns: table => new
{
AlbumsId = table.Column<Guid>(type: "uuid", nullable: false),
AssetsId = table.Column<Guid>(type: "uuid", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_AlbumAsset", x => new { x.AlbumsId, x.AssetsId });
});
migrationBuilder.CreateTable(
name: "Albums",
columns: table => new
{
Id = table.Column<Guid>(type: "uuid", nullable: false),
Title = table.Column<string>(type: "VARCHAR(255)", nullable: false),
CreatedAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
UpdatedAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
UserOwnerId = table.Column<Guid>(type: "uuid", nullable: true),
PersonOwnerId = table.Column<Guid>(type: "uuid", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Albums", x => x.Id);
table.ForeignKey(
name: "FK_Albums_People_PersonOwnerId",
column: x => x.PersonOwnerId,
principalTable: "People",
principalColumn: "Id");
});
migrationBuilder.CreateTable(
name: "Assets",
columns: table => new
{
Id = table.Column<Guid>(type: "uuid", nullable: false),
OriginalPath = table.Column<string>(type: "VARCHAR(2048)", nullable: false),
OriginalFilename = table.Column<string>(type: "VARCHAR(255)", nullable: false),
ThumbnailPath = table.Column<string>(type: "VARCHAR(2048)", nullable: false),
PreviewPath = table.Column<string>(type: "VARCHAR(2048)", nullable: false),
Type = table.Column<int>(type: "integer", nullable: false),
OwnerId = table.Column<Guid>(type: "uuid", nullable: true),
IsPubliclyShared = table.Column<bool>(type: "boolean", nullable: false),
CreatedAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
UpdatedAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
DeletedAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
MimeType = table.Column<string>(type: "VARCHAR(255)", nullable: false),
ResolutionWidth = table.Column<int>(type: "integer", nullable: false),
ResolutionHeight = table.Column<int>(type: "integer", nullable: false),
FileSize = table.Column<long>(type: "bigint", nullable: false),
Duration = table.Column<float>(type: "real", nullable: true),
FrameRate = table.Column<float>(type: "real", nullable: true),
Hash = table.Column<byte[]>(type: "BYTEA", nullable: false),
FolderId = table.Column<Guid>(type: "uuid", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Assets", x => x.Id);
table.ForeignKey(
name: "FK_Assets_Folders_FolderId",
column: x => x.FolderId,
principalTable: "Folders",
principalColumn: "Id");
});
migrationBuilder.CreateTable(
name: "AssetTag",
columns: table => new
{
AssetsId = table.Column<Guid>(type: "uuid", nullable: false),
TagsId = table.Column<Guid>(type: "uuid", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_AssetTag", x => new { x.AssetsId, x.TagsId });
table.ForeignKey(
name: "FK_AssetTag_Assets_AssetsId",
column: x => x.AssetsId,
principalTable: "Assets",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_AssetTag_Tags_TagsId",
column: x => x.TagsId,
principalTable: "Tags",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "Faces",
columns: table => new
{
Id = table.Column<Guid>(type: "uuid", nullable: false),
BoundingBoxX1 = table.Column<int>(type: "integer", nullable: false),
BoundingBoxY1 = table.Column<int>(type: "integer", nullable: false),
BoundingBoxX2 = table.Column<int>(type: "integer", nullable: false),
BoundingBoxY2 = table.Column<int>(type: "integer", nullable: false),
ImageHeight = table.Column<int>(type: "integer", nullable: false),
ImageWidth = table.Column<int>(type: "integer", nullable: false),
AssetId = table.Column<Guid>(type: "uuid", nullable: true),
PersonId = table.Column<Guid>(type: "uuid", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Faces", x => x.Id);
table.ForeignKey(
name: "FK_Faces_Assets_AssetId",
column: x => x.AssetId,
principalTable: "Assets",
principalColumn: "Id");
table.ForeignKey(
name: "FK_Faces_People_PersonId",
column: x => x.PersonId,
principalTable: "People",
principalColumn: "Id");
});
migrationBuilder.CreateTable(
name: "Users",
columns: table => new
{
Id = table.Column<Guid>(type: "uuid", nullable: false),
Username = table.Column<string>(type: "VARCHAR(64)", nullable: false),
Email = table.Column<string>(type: "VARCHAR(128)", nullable: false),
Password = table.Column<string>(type: "VARCHAR(255)", nullable: false),
CreatedAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
UpdatedAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
LastLogin = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
BannedAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
DeletedAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
AccessLevel = table.Column<int>(type: "integer", nullable: false),
AssetId = table.Column<Guid>(type: "uuid", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Users", x => x.Id);
table.ForeignKey(
name: "FK_Users_Assets_AssetId",
column: x => x.AssetId,
principalTable: "Assets",
principalColumn: "Id");
});
migrationBuilder.CreateIndex(
name: "IX_AlbumAsset_AssetsId",
table: "AlbumAsset",
column: "AssetsId");
migrationBuilder.CreateIndex(
name: "IX_Albums_PersonOwnerId",
table: "Albums",
column: "PersonOwnerId");
migrationBuilder.CreateIndex(
name: "IX_Albums_UserOwnerId",
table: "Albums",
column: "UserOwnerId");
migrationBuilder.CreateIndex(
name: "IX_Assets_FolderId",
table: "Assets",
column: "FolderId");
migrationBuilder.CreateIndex(
name: "IX_Assets_OwnerId",
table: "Assets",
column: "OwnerId");
migrationBuilder.CreateIndex(
name: "IX_AssetTag_TagsId",
table: "AssetTag",
column: "TagsId");
migrationBuilder.CreateIndex(
name: "IX_Faces_AssetId",
table: "Faces",
column: "AssetId");
migrationBuilder.CreateIndex(
name: "IX_Faces_PersonId",
table: "Faces",
column: "PersonId");
migrationBuilder.CreateIndex(
name: "IX_Tags_ParentId",
table: "Tags",
column: "ParentId");
migrationBuilder.CreateIndex(
name: "IX_Users_AssetId",
table: "Users",
column: "AssetId");
migrationBuilder.AddForeignKey(
name: "FK_AlbumAsset_Albums_AlbumsId",
table: "AlbumAsset",
column: "AlbumsId",
principalTable: "Albums",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_AlbumAsset_Assets_AssetsId",
table: "AlbumAsset",
column: "AssetsId",
principalTable: "Assets",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_Albums_Users_UserOwnerId",
table: "Albums",
column: "UserOwnerId",
principalTable: "Users",
principalColumn: "Id");
migrationBuilder.AddForeignKey(
name: "FK_Assets_Users_OwnerId",
table: "Assets",
column: "OwnerId",
principalTable: "Users",
principalColumn: "Id");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(
name: "FK_Users_Assets_AssetId",
table: "Users");
migrationBuilder.DropTable(
name: "AlbumAsset");
migrationBuilder.DropTable(
name: "AssetTag");
migrationBuilder.DropTable(
name: "Faces");
migrationBuilder.DropTable(
name: "Settings");
migrationBuilder.DropTable(
name: "Albums");
migrationBuilder.DropTable(
name: "Tags");
migrationBuilder.DropTable(
name: "People");
migrationBuilder.DropTable(
name: "Assets");
migrationBuilder.DropTable(
name: "Folders");
migrationBuilder.DropTable(
name: "Users");
}
}
}