using Microsoft.EntityFrameworkCore.Migrations; #nullable disable namespace Lactose.Migrations { /// public partial class Initial : Migration { /// protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.CreateTable( name: "Folders", columns: table => new { Id = table.Column(type: "uuid", nullable: false), BasePath = table.Column(type: "VARCHAR(2048)", nullable: false), Active = table.Column(type: "boolean", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Folders", x => x.Id); }); migrationBuilder.CreateTable( name: "People", columns: table => new { Id = table.Column(type: "uuid", nullable: false), Name = table.Column(type: "VARCHAR(255)", nullable: false), CreatedAt = table.Column(type: "timestamp with time zone", nullable: false), UpdatedAt = table.Column(type: "timestamp with time zone", nullable: true), DeletedAt = table.Column(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(type: "uuid", nullable: false), UserRegistrationOpen = table.Column(type: "boolean", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Settings", x => x.Id); }); migrationBuilder.CreateTable( name: "Tags", columns: table => new { Id = table.Column(type: "uuid", nullable: false), Name = table.Column(type: "VARCHAR(255)", nullable: false), ParentId = table.Column(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(type: "uuid", nullable: false), AssetsId = table.Column(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(type: "uuid", nullable: false), Title = table.Column(type: "VARCHAR(255)", nullable: false), CreatedAt = table.Column(type: "timestamp with time zone", nullable: false), UpdatedAt = table.Column(type: "timestamp with time zone", nullable: true), UserOwnerId = table.Column(type: "uuid", nullable: true), PersonOwnerId = table.Column(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(type: "uuid", nullable: false), OriginalPath = table.Column(type: "VARCHAR(2048)", nullable: false), OriginalFilename = table.Column(type: "VARCHAR(255)", nullable: false), ThumbnailPath = table.Column(type: "VARCHAR(2048)", nullable: false), PreviewPath = table.Column(type: "VARCHAR(2048)", nullable: false), Type = table.Column(type: "integer", nullable: false), OwnerId = table.Column(type: "uuid", nullable: true), IsPubliclyShared = table.Column(type: "boolean", nullable: false), CreatedAt = table.Column(type: "timestamp with time zone", nullable: false), UpdatedAt = table.Column(type: "timestamp with time zone", nullable: true), DeletedAt = table.Column(type: "timestamp with time zone", nullable: true), MimeType = table.Column(type: "VARCHAR(255)", nullable: false), ResolutionWidth = table.Column(type: "integer", nullable: false), ResolutionHeight = table.Column(type: "integer", nullable: false), FileSize = table.Column(type: "bigint", nullable: false), Duration = table.Column(type: "real", nullable: true), FrameRate = table.Column(type: "real", nullable: true), Hash = table.Column(type: "BYTEA", nullable: false), FolderId = table.Column(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(type: "uuid", nullable: false), TagsId = table.Column(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(type: "uuid", nullable: false), BoundingBoxX1 = table.Column(type: "integer", nullable: false), BoundingBoxY1 = table.Column(type: "integer", nullable: false), BoundingBoxX2 = table.Column(type: "integer", nullable: false), BoundingBoxY2 = table.Column(type: "integer", nullable: false), ImageHeight = table.Column(type: "integer", nullable: false), ImageWidth = table.Column(type: "integer", nullable: false), AssetId = table.Column(type: "uuid", nullable: true), PersonId = table.Column(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(type: "uuid", nullable: false), Username = table.Column(type: "VARCHAR(64)", nullable: false), Email = table.Column(type: "VARCHAR(128)", nullable: false), Password = table.Column(type: "VARCHAR(255)", nullable: false), CreatedAt = table.Column(type: "timestamp with time zone", nullable: false), UpdatedAt = table.Column(type: "timestamp with time zone", nullable: true), LastLogin = table.Column(type: "timestamp with time zone", nullable: true), BannedAt = table.Column(type: "timestamp with time zone", nullable: true), DeletedAt = table.Column(type: "timestamp with time zone", nullable: true), AccessLevel = table.Column(type: "integer", nullable: false), AssetId = table.Column(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"); } /// 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"); } } }