using System;
using System.Collections.Generic;
using DysonNetwork.Shared.Data;
using DysonNetwork.Sphere.Chat;
using DysonNetwork.Sphere.Developer;
using DysonNetwork.Sphere.WebReader;
using Microsoft.EntityFrameworkCore.Migrations;
using NodaTime;
using NpgsqlTypes;
#nullable disable
namespace DysonNetwork.Sphere.Migrations
{
///
public partial class InitialMigration : Migration
{
///
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterDatabase()
.Annotation("Npgsql:PostgresExtension:postgis", ",,");
migrationBuilder.CreateTable(
name: "post_categories",
columns: table => new
{
id = table.Column(type: "uuid", nullable: false),
slug = table.Column(type: "character varying(128)", maxLength: 128, nullable: false),
name = table.Column(type: "character varying(256)", maxLength: 256, nullable: true),
created_at = table.Column(type: "timestamp with time zone", nullable: false),
updated_at = table.Column(type: "timestamp with time zone", nullable: false),
deleted_at = table.Column(type: "timestamp with time zone", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("pk_post_categories", x => x.id);
});
migrationBuilder.CreateTable(
name: "post_tags",
columns: table => new
{
id = table.Column(type: "uuid", nullable: false),
slug = table.Column(type: "character varying(128)", maxLength: 128, nullable: false),
name = table.Column(type: "character varying(256)", maxLength: 256, nullable: true),
created_at = table.Column(type: "timestamp with time zone", nullable: false),
updated_at = table.Column(type: "timestamp with time zone", nullable: false),
deleted_at = table.Column(type: "timestamp with time zone", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("pk_post_tags", x => x.id);
});
migrationBuilder.CreateTable(
name: "realms",
columns: table => new
{
id = table.Column(type: "uuid", nullable: false),
slug = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false),
name = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false),
description = table.Column(type: "character varying(4096)", maxLength: 4096, nullable: false),
is_community = table.Column(type: "boolean", nullable: false),
is_public = table.Column(type: "boolean", nullable: false),
picture_id = table.Column(type: "character varying(32)", maxLength: 32, nullable: true),
background_id = table.Column(type: "character varying(32)", maxLength: 32, nullable: true),
picture = table.Column(type: "jsonb", nullable: true),
background = table.Column(type: "jsonb", nullable: true),
verification = table.Column(type: "jsonb", nullable: true),
account_id = table.Column(type: "uuid", nullable: false),
created_at = table.Column(type: "timestamp with time zone", nullable: false),
updated_at = table.Column(type: "timestamp with time zone", nullable: false),
deleted_at = table.Column(type: "timestamp with time zone", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("pk_realms", x => x.id);
});
migrationBuilder.CreateTable(
name: "tags",
columns: table => new
{
id = table.Column(type: "uuid", nullable: false),
name = table.Column(type: "character varying(64)", maxLength: 64, nullable: false),
created_at = table.Column(type: "timestamp with time zone", nullable: false),
updated_at = table.Column(type: "timestamp with time zone", nullable: false),
deleted_at = table.Column(type: "timestamp with time zone", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("pk_tags", x => x.id);
});
migrationBuilder.CreateTable(
name: "chat_rooms",
columns: table => new
{
id = table.Column(type: "uuid", nullable: false),
name = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: true),
description = table.Column(type: "character varying(4096)", maxLength: 4096, nullable: true),
type = table.Column(type: "integer", nullable: false),
is_community = table.Column(type: "boolean", nullable: false),
is_public = table.Column(type: "boolean", nullable: false),
picture_id = table.Column(type: "character varying(32)", maxLength: 32, nullable: true),
background_id = table.Column(type: "character varying(32)", maxLength: 32, nullable: true),
picture = table.Column(type: "jsonb", nullable: true),
background = table.Column(type: "jsonb", nullable: true),
realm_id = table.Column(type: "uuid", nullable: true),
created_at = table.Column(type: "timestamp with time zone", nullable: false),
updated_at = table.Column(type: "timestamp with time zone", nullable: false),
deleted_at = table.Column(type: "timestamp with time zone", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("pk_chat_rooms", x => x.id);
table.ForeignKey(
name: "fk_chat_rooms_realms_realm_id",
column: x => x.realm_id,
principalTable: "realms",
principalColumn: "id");
});
migrationBuilder.CreateTable(
name: "publishers",
columns: table => new
{
id = table.Column(type: "uuid", nullable: false),
type = table.Column(type: "integer", nullable: false),
name = table.Column(type: "character varying(256)", maxLength: 256, nullable: false),
nick = table.Column(type: "character varying(256)", maxLength: 256, nullable: false),
bio = table.Column(type: "character varying(4096)", maxLength: 4096, nullable: true),
picture_id = table.Column(type: "character varying(32)", maxLength: 32, nullable: true),
background_id = table.Column(type: "character varying(32)", maxLength: 32, nullable: true),
picture = table.Column(type: "jsonb", nullable: true),
background = table.Column(type: "jsonb", nullable: true),
verification = table.Column(type: "jsonb", nullable: true),
account_id = table.Column(type: "uuid", nullable: true),
realm_id = table.Column(type: "uuid", nullable: true),
created_at = table.Column(type: "timestamp with time zone", nullable: false),
updated_at = table.Column(type: "timestamp with time zone", nullable: false),
deleted_at = table.Column(type: "timestamp with time zone", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("pk_publishers", x => x.id);
table.ForeignKey(
name: "fk_publishers_realms_realm_id",
column: x => x.realm_id,
principalTable: "realms",
principalColumn: "id");
});
migrationBuilder.CreateTable(
name: "realm_members",
columns: table => new
{
realm_id = table.Column(type: "uuid", nullable: false),
account_id = table.Column(type: "uuid", nullable: false),
role = table.Column(type: "integer", nullable: false),
joined_at = table.Column(type: "timestamp with time zone", nullable: true),
leave_at = table.Column(type: "timestamp with time zone", nullable: true),
created_at = table.Column(type: "timestamp with time zone", nullable: false),
updated_at = table.Column(type: "timestamp with time zone", nullable: false),
deleted_at = table.Column(type: "timestamp with time zone", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("pk_realm_members", x => new { x.realm_id, x.account_id });
table.ForeignKey(
name: "fk_realm_members_realms_realm_id",
column: x => x.realm_id,
principalTable: "realms",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "realm_tags",
columns: table => new
{
realm_id = table.Column(type: "uuid", nullable: false),
tag_id = table.Column(type: "uuid", nullable: false),
created_at = table.Column(type: "timestamp with time zone", nullable: false),
updated_at = table.Column(type: "timestamp with time zone", nullable: false),
deleted_at = table.Column(type: "timestamp with time zone", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("pk_realm_tags", x => new { x.realm_id, x.tag_id });
table.ForeignKey(
name: "fk_realm_tags_realms_realm_id",
column: x => x.realm_id,
principalTable: "realms",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "fk_realm_tags_tags_tag_id",
column: x => x.tag_id,
principalTable: "tags",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "chat_members",
columns: table => new
{
id = table.Column(type: "uuid", nullable: false),
chat_room_id = table.Column(type: "uuid", nullable: false),
account_id = table.Column(type: "uuid", nullable: false),
nick = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: true),
role = table.Column(type: "integer", nullable: false),
notify = table.Column(type: "integer", nullable: false),
last_read_at = table.Column(type: "timestamp with time zone", nullable: true),
joined_at = table.Column(type: "timestamp with time zone", nullable: true),
leave_at = table.Column(type: "timestamp with time zone", nullable: true),
is_bot = table.Column(type: "boolean", nullable: false),
break_until = table.Column(type: "timestamp with time zone", nullable: true),
timeout_until = table.Column(type: "timestamp with time zone", nullable: true),
timeout_cause = table.Column(type: "jsonb", nullable: true),
created_at = table.Column(type: "timestamp with time zone", nullable: false),
updated_at = table.Column(type: "timestamp with time zone", nullable: false),
deleted_at = table.Column(type: "timestamp with time zone", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("pk_chat_members", x => x.id);
table.UniqueConstraint("ak_chat_members_chat_room_id_account_id", x => new { x.chat_room_id, x.account_id });
table.ForeignKey(
name: "fk_chat_members_chat_rooms_chat_room_id",
column: x => x.chat_room_id,
principalTable: "chat_rooms",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "custom_apps",
columns: table => new
{
id = table.Column(type: "uuid", nullable: false),
slug = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false),
name = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false),
description = table.Column(type: "character varying(4096)", maxLength: 4096, nullable: true),
status = table.Column(type: "integer", nullable: false),
picture = table.Column(type: "jsonb", nullable: true),
background = table.Column(type: "jsonb", nullable: true),
verification = table.Column(type: "jsonb", nullable: true),
oauth_config = table.Column(type: "jsonb", nullable: true),
links = table.Column(type: "jsonb", nullable: true),
publisher_id = table.Column(type: "uuid", nullable: false),
created_at = table.Column(type: "timestamp with time zone", nullable: false),
updated_at = table.Column(type: "timestamp with time zone", nullable: false),
deleted_at = table.Column(type: "timestamp with time zone", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("pk_custom_apps", x => x.id);
table.ForeignKey(
name: "fk_custom_apps_publishers_publisher_id",
column: x => x.publisher_id,
principalTable: "publishers",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "post_collections",
columns: table => new
{
id = table.Column(type: "uuid", nullable: false),
slug = table.Column(type: "character varying(128)", maxLength: 128, nullable: false),
name = table.Column(type: "character varying(256)", maxLength: 256, nullable: true),
description = table.Column(type: "character varying(4096)", maxLength: 4096, nullable: true),
publisher_id = table.Column(type: "uuid", nullable: false),
created_at = table.Column(type: "timestamp with time zone", nullable: false),
updated_at = table.Column(type: "timestamp with time zone", nullable: false),
deleted_at = table.Column(type: "timestamp with time zone", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("pk_post_collections", x => x.id);
table.ForeignKey(
name: "fk_post_collections_publishers_publisher_id",
column: x => x.publisher_id,
principalTable: "publishers",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "posts",
columns: table => new
{
id = table.Column(type: "uuid", nullable: false),
title = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: true),
description = table.Column(type: "character varying(4096)", maxLength: 4096, nullable: true),
language = table.Column(type: "character varying(128)", maxLength: 128, nullable: true),
edited_at = table.Column(type: "timestamp with time zone", nullable: true),
published_at = table.Column(type: "timestamp with time zone", nullable: true),
visibility = table.Column(type: "integer", nullable: false),
content = table.Column(type: "text", nullable: true),
type = table.Column(type: "integer", nullable: false),
meta = table.Column>(type: "jsonb", nullable: true),
sensitive_marks = table.Column>(type: "jsonb", nullable: true),
views_unique = table.Column(type: "integer", nullable: false),
views_total = table.Column(type: "integer", nullable: false),
upvotes = table.Column(type: "integer", nullable: false),
downvotes = table.Column(type: "integer", nullable: false),
replied_post_id = table.Column(type: "uuid", nullable: true),
forwarded_post_id = table.Column(type: "uuid", nullable: true),
attachments = table.Column>(type: "jsonb", nullable: false),
search_vector = table.Column(type: "tsvector", nullable: false)
.Annotation("Npgsql:TsVectorConfig", "simple")
.Annotation("Npgsql:TsVectorProperties", new[] { "title", "description", "content" }),
publisher_id = table.Column(type: "uuid", nullable: false),
created_at = table.Column(type: "timestamp with time zone", nullable: false),
updated_at = table.Column(type: "timestamp with time zone", nullable: false),
deleted_at = table.Column(type: "timestamp with time zone", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("pk_posts", x => x.id);
table.ForeignKey(
name: "fk_posts_posts_forwarded_post_id",
column: x => x.forwarded_post_id,
principalTable: "posts",
principalColumn: "id",
onDelete: ReferentialAction.Restrict);
table.ForeignKey(
name: "fk_posts_posts_replied_post_id",
column: x => x.replied_post_id,
principalTable: "posts",
principalColumn: "id",
onDelete: ReferentialAction.Restrict);
table.ForeignKey(
name: "fk_posts_publishers_publisher_id",
column: x => x.publisher_id,
principalTable: "publishers",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "publisher_features",
columns: table => new
{
id = table.Column(type: "uuid", nullable: false),
flag = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false),
expired_at = table.Column(type: "timestamp with time zone", nullable: true),
publisher_id = table.Column(type: "uuid", nullable: false),
created_at = table.Column(type: "timestamp with time zone", nullable: false),
updated_at = table.Column(type: "timestamp with time zone", nullable: false),
deleted_at = table.Column(type: "timestamp with time zone", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("pk_publisher_features", x => x.id);
table.ForeignKey(
name: "fk_publisher_features_publishers_publisher_id",
column: x => x.publisher_id,
principalTable: "publishers",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "publisher_members",
columns: table => new
{
publisher_id = table.Column(type: "uuid", nullable: false),
account_id = table.Column(type: "uuid", nullable: false),
role = table.Column(type: "integer", nullable: false),
joined_at = table.Column(type: "timestamp with time zone", nullable: true),
created_at = table.Column(type: "timestamp with time zone", nullable: false),
updated_at = table.Column(type: "timestamp with time zone", nullable: false),
deleted_at = table.Column(type: "timestamp with time zone", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("pk_publisher_members", x => new { x.publisher_id, x.account_id });
table.ForeignKey(
name: "fk_publisher_members_publishers_publisher_id",
column: x => x.publisher_id,
principalTable: "publishers",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "publisher_subscriptions",
columns: table => new
{
id = table.Column(type: "uuid", nullable: false),
publisher_id = table.Column(type: "uuid", nullable: false),
account_id = table.Column(type: "uuid", nullable: false),
status = table.Column(type: "integer", nullable: false),
tier = table.Column(type: "integer", nullable: false),
created_at = table.Column(type: "timestamp with time zone", nullable: false),
updated_at = table.Column(type: "timestamp with time zone", nullable: false),
deleted_at = table.Column(type: "timestamp with time zone", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("pk_publisher_subscriptions", x => x.id);
table.ForeignKey(
name: "fk_publisher_subscriptions_publishers_publisher_id",
column: x => x.publisher_id,
principalTable: "publishers",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "sticker_packs",
columns: table => new
{
id = table.Column(type: "uuid", nullable: false),
name = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false),
description = table.Column(type: "character varying(4096)", maxLength: 4096, nullable: false),
prefix = table.Column(type: "character varying(128)", maxLength: 128, nullable: false),
publisher_id = table.Column(type: "uuid", nullable: false),
created_at = table.Column(type: "timestamp with time zone", nullable: false),
updated_at = table.Column(type: "timestamp with time zone", nullable: false),
deleted_at = table.Column(type: "timestamp with time zone", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("pk_sticker_packs", x => x.id);
table.ForeignKey(
name: "fk_sticker_packs_publishers_publisher_id",
column: x => x.publisher_id,
principalTable: "publishers",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "web_feeds",
columns: table => new
{
id = table.Column(type: "uuid", nullable: false),
url = table.Column(type: "character varying(8192)", maxLength: 8192, nullable: false),
title = table.Column(type: "character varying(4096)", maxLength: 4096, nullable: false),
description = table.Column(type: "character varying(8192)", maxLength: 8192, nullable: true),
preview = table.Column(type: "jsonb", nullable: true),
config = table.Column(type: "jsonb", nullable: false),
publisher_id = table.Column(type: "uuid", nullable: false),
created_at = table.Column(type: "timestamp with time zone", nullable: false),
updated_at = table.Column(type: "timestamp with time zone", nullable: false),
deleted_at = table.Column(type: "timestamp with time zone", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("pk_web_feeds", x => x.id);
table.ForeignKey(
name: "fk_web_feeds_publishers_publisher_id",
column: x => x.publisher_id,
principalTable: "publishers",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "chat_messages",
columns: table => new
{
id = table.Column(type: "uuid", nullable: false),
type = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false),
content = table.Column(type: "character varying(4096)", maxLength: 4096, nullable: true),
meta = table.Column>(type: "jsonb", nullable: true),
members_mentioned = table.Column>(type: "jsonb", nullable: true),
nonce = table.Column(type: "character varying(36)", maxLength: 36, nullable: false),
edited_at = table.Column(type: "timestamp with time zone", nullable: true),
attachments = table.Column>(type: "jsonb", nullable: false),
replied_message_id = table.Column(type: "uuid", nullable: true),
forwarded_message_id = table.Column(type: "uuid", nullable: true),
sender_id = table.Column(type: "uuid", nullable: false),
chat_room_id = table.Column(type: "uuid", nullable: false),
created_at = table.Column(type: "timestamp with time zone", nullable: false),
updated_at = table.Column(type: "timestamp with time zone", nullable: false),
deleted_at = table.Column(type: "timestamp with time zone", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("pk_chat_messages", x => x.id);
table.ForeignKey(
name: "fk_chat_messages_chat_members_sender_id",
column: x => x.sender_id,
principalTable: "chat_members",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "fk_chat_messages_chat_messages_forwarded_message_id",
column: x => x.forwarded_message_id,
principalTable: "chat_messages",
principalColumn: "id",
onDelete: ReferentialAction.Restrict);
table.ForeignKey(
name: "fk_chat_messages_chat_messages_replied_message_id",
column: x => x.replied_message_id,
principalTable: "chat_messages",
principalColumn: "id",
onDelete: ReferentialAction.Restrict);
table.ForeignKey(
name: "fk_chat_messages_chat_rooms_chat_room_id",
column: x => x.chat_room_id,
principalTable: "chat_rooms",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "chat_realtime_call",
columns: table => new
{
id = table.Column(type: "uuid", nullable: false),
ended_at = table.Column(type: "timestamp with time zone", nullable: true),
sender_id = table.Column(type: "uuid", nullable: false),
room_id = table.Column(type: "uuid", nullable: false),
provider_name = table.Column(type: "text", nullable: true),
session_id = table.Column(type: "text", nullable: true),
upstream = table.Column(type: "jsonb", nullable: true),
created_at = table.Column(type: "timestamp with time zone", nullable: false),
updated_at = table.Column(type: "timestamp with time zone", nullable: false),
deleted_at = table.Column(type: "timestamp with time zone", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("pk_chat_realtime_call", x => x.id);
table.ForeignKey(
name: "fk_chat_realtime_call_chat_members_sender_id",
column: x => x.sender_id,
principalTable: "chat_members",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "fk_chat_realtime_call_chat_rooms_room_id",
column: x => x.room_id,
principalTable: "chat_rooms",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "custom_app_secrets",
columns: table => new
{
id = table.Column(type: "uuid", nullable: false),
secret = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false),
description = table.Column(type: "character varying(4096)", maxLength: 4096, nullable: true),
expired_at = table.Column(type: "timestamp with time zone", nullable: true),
is_oidc = table.Column(type: "boolean", nullable: false),
app_id = table.Column(type: "uuid", nullable: false),
created_at = table.Column(type: "timestamp with time zone", nullable: false),
updated_at = table.Column(type: "timestamp with time zone", nullable: false),
deleted_at = table.Column(type: "timestamp with time zone", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("pk_custom_app_secrets", x => x.id);
table.ForeignKey(
name: "fk_custom_app_secrets_custom_apps_app_id",
column: x => x.app_id,
principalTable: "custom_apps",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "post_category_links",
columns: table => new
{
categories_id = table.Column(type: "uuid", nullable: false),
posts_id = table.Column(type: "uuid", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_post_category_links", x => new { x.categories_id, x.posts_id });
table.ForeignKey(
name: "fk_post_category_links_post_categories_categories_id",
column: x => x.categories_id,
principalTable: "post_categories",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "fk_post_category_links_posts_posts_id",
column: x => x.posts_id,
principalTable: "posts",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "post_collection_links",
columns: table => new
{
collections_id = table.Column(type: "uuid", nullable: false),
posts_id = table.Column(type: "uuid", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_post_collection_links", x => new { x.collections_id, x.posts_id });
table.ForeignKey(
name: "fk_post_collection_links_post_collections_collections_id",
column: x => x.collections_id,
principalTable: "post_collections",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "fk_post_collection_links_posts_posts_id",
column: x => x.posts_id,
principalTable: "posts",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "post_reactions",
columns: table => new
{
id = table.Column(type: "uuid", nullable: false),
symbol = table.Column(type: "character varying(256)", maxLength: 256, nullable: false),
attitude = table.Column(type: "integer", nullable: false),
post_id = table.Column(type: "uuid", nullable: false),
account_id = table.Column(type: "uuid", nullable: false),
created_at = table.Column(type: "timestamp with time zone", nullable: false),
updated_at = table.Column(type: "timestamp with time zone", nullable: false),
deleted_at = table.Column(type: "timestamp with time zone", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("pk_post_reactions", x => x.id);
table.ForeignKey(
name: "fk_post_reactions_posts_post_id",
column: x => x.post_id,
principalTable: "posts",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "post_tag_links",
columns: table => new
{
posts_id = table.Column(type: "uuid", nullable: false),
tags_id = table.Column(type: "uuid", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_post_tag_links", x => new { x.posts_id, x.tags_id });
table.ForeignKey(
name: "fk_post_tag_links_post_tags_tags_id",
column: x => x.tags_id,
principalTable: "post_tags",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "fk_post_tag_links_posts_posts_id",
column: x => x.posts_id,
principalTable: "posts",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "stickers",
columns: table => new
{
id = table.Column(type: "uuid", nullable: false),
slug = table.Column(type: "character varying(128)", maxLength: 128, nullable: false),
image_id = table.Column(type: "character varying(32)", maxLength: 32, nullable: true),
image = table.Column(type: "jsonb", nullable: true),
pack_id = table.Column(type: "uuid", nullable: false),
created_at = table.Column(type: "timestamp with time zone", nullable: false),
updated_at = table.Column(type: "timestamp with time zone", nullable: false),
deleted_at = table.Column(type: "timestamp with time zone", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("pk_stickers", x => x.id);
table.ForeignKey(
name: "fk_stickers_sticker_packs_pack_id",
column: x => x.pack_id,
principalTable: "sticker_packs",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "web_articles",
columns: table => new
{
id = table.Column(type: "uuid", nullable: false),
title = table.Column(type: "character varying(4096)", maxLength: 4096, nullable: false),
url = table.Column(type: "character varying(8192)", maxLength: 8192, nullable: false),
author = table.Column(type: "character varying(4096)", maxLength: 4096, nullable: true),
meta = table.Column>(type: "jsonb", nullable: true),
preview = table.Column(type: "jsonb", nullable: true),
content = table.Column(type: "text", nullable: true),
published_at = table.Column(type: "timestamp with time zone", nullable: true),
feed_id = table.Column(type: "uuid", nullable: false),
created_at = table.Column(type: "timestamp with time zone", nullable: false),
updated_at = table.Column(type: "timestamp with time zone", nullable: false),
deleted_at = table.Column(type: "timestamp with time zone", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("pk_web_articles", x => x.id);
table.ForeignKey(
name: "fk_web_articles_web_feeds_feed_id",
column: x => x.feed_id,
principalTable: "web_feeds",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "chat_reactions",
columns: table => new
{
id = table.Column(type: "uuid", nullable: false),
message_id = table.Column(type: "uuid", nullable: false),
sender_id = table.Column(type: "uuid", nullable: false),
symbol = table.Column(type: "character varying(256)", maxLength: 256, nullable: false),
attitude = table.Column(type: "integer", nullable: false),
created_at = table.Column(type: "timestamp with time zone", nullable: false),
updated_at = table.Column(type: "timestamp with time zone", nullable: false),
deleted_at = table.Column(type: "timestamp with time zone", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("pk_chat_reactions", x => x.id);
table.ForeignKey(
name: "fk_chat_reactions_chat_members_sender_id",
column: x => x.sender_id,
principalTable: "chat_members",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "fk_chat_reactions_chat_messages_message_id",
column: x => x.message_id,
principalTable: "chat_messages",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateIndex(
name: "ix_chat_messages_chat_room_id",
table: "chat_messages",
column: "chat_room_id");
migrationBuilder.CreateIndex(
name: "ix_chat_messages_forwarded_message_id",
table: "chat_messages",
column: "forwarded_message_id");
migrationBuilder.CreateIndex(
name: "ix_chat_messages_replied_message_id",
table: "chat_messages",
column: "replied_message_id");
migrationBuilder.CreateIndex(
name: "ix_chat_messages_sender_id",
table: "chat_messages",
column: "sender_id");
migrationBuilder.CreateIndex(
name: "ix_chat_reactions_message_id",
table: "chat_reactions",
column: "message_id");
migrationBuilder.CreateIndex(
name: "ix_chat_reactions_sender_id",
table: "chat_reactions",
column: "sender_id");
migrationBuilder.CreateIndex(
name: "ix_chat_realtime_call_room_id",
table: "chat_realtime_call",
column: "room_id");
migrationBuilder.CreateIndex(
name: "ix_chat_realtime_call_sender_id",
table: "chat_realtime_call",
column: "sender_id");
migrationBuilder.CreateIndex(
name: "ix_chat_rooms_realm_id",
table: "chat_rooms",
column: "realm_id");
migrationBuilder.CreateIndex(
name: "ix_custom_app_secrets_app_id",
table: "custom_app_secrets",
column: "app_id");
migrationBuilder.CreateIndex(
name: "ix_custom_app_secrets_secret",
table: "custom_app_secrets",
column: "secret",
unique: true);
migrationBuilder.CreateIndex(
name: "ix_custom_apps_publisher_id",
table: "custom_apps",
column: "publisher_id");
migrationBuilder.CreateIndex(
name: "ix_post_category_links_posts_id",
table: "post_category_links",
column: "posts_id");
migrationBuilder.CreateIndex(
name: "ix_post_collection_links_posts_id",
table: "post_collection_links",
column: "posts_id");
migrationBuilder.CreateIndex(
name: "ix_post_collections_publisher_id",
table: "post_collections",
column: "publisher_id");
migrationBuilder.CreateIndex(
name: "ix_post_reactions_post_id",
table: "post_reactions",
column: "post_id");
migrationBuilder.CreateIndex(
name: "ix_post_tag_links_tags_id",
table: "post_tag_links",
column: "tags_id");
migrationBuilder.CreateIndex(
name: "ix_posts_forwarded_post_id",
table: "posts",
column: "forwarded_post_id");
migrationBuilder.CreateIndex(
name: "ix_posts_publisher_id",
table: "posts",
column: "publisher_id");
migrationBuilder.CreateIndex(
name: "ix_posts_replied_post_id",
table: "posts",
column: "replied_post_id");
migrationBuilder.CreateIndex(
name: "ix_posts_search_vector",
table: "posts",
column: "search_vector")
.Annotation("Npgsql:IndexMethod", "GIN");
migrationBuilder.CreateIndex(
name: "ix_publisher_features_publisher_id",
table: "publisher_features",
column: "publisher_id");
migrationBuilder.CreateIndex(
name: "ix_publisher_subscriptions_publisher_id",
table: "publisher_subscriptions",
column: "publisher_id");
migrationBuilder.CreateIndex(
name: "ix_publishers_name",
table: "publishers",
column: "name",
unique: true);
migrationBuilder.CreateIndex(
name: "ix_publishers_realm_id",
table: "publishers",
column: "realm_id");
migrationBuilder.CreateIndex(
name: "ix_realm_tags_tag_id",
table: "realm_tags",
column: "tag_id");
migrationBuilder.CreateIndex(
name: "ix_realms_slug",
table: "realms",
column: "slug",
unique: true);
migrationBuilder.CreateIndex(
name: "ix_sticker_packs_prefix",
table: "sticker_packs",
column: "prefix",
unique: true);
migrationBuilder.CreateIndex(
name: "ix_sticker_packs_publisher_id",
table: "sticker_packs",
column: "publisher_id");
migrationBuilder.CreateIndex(
name: "ix_stickers_pack_id",
table: "stickers",
column: "pack_id");
migrationBuilder.CreateIndex(
name: "ix_stickers_slug",
table: "stickers",
column: "slug");
migrationBuilder.CreateIndex(
name: "ix_web_articles_feed_id",
table: "web_articles",
column: "feed_id");
migrationBuilder.CreateIndex(
name: "ix_web_articles_url",
table: "web_articles",
column: "url",
unique: true);
migrationBuilder.CreateIndex(
name: "ix_web_feeds_publisher_id",
table: "web_feeds",
column: "publisher_id");
migrationBuilder.CreateIndex(
name: "ix_web_feeds_url",
table: "web_feeds",
column: "url",
unique: true);
}
///
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "chat_reactions");
migrationBuilder.DropTable(
name: "chat_realtime_call");
migrationBuilder.DropTable(
name: "custom_app_secrets");
migrationBuilder.DropTable(
name: "post_category_links");
migrationBuilder.DropTable(
name: "post_collection_links");
migrationBuilder.DropTable(
name: "post_reactions");
migrationBuilder.DropTable(
name: "post_tag_links");
migrationBuilder.DropTable(
name: "publisher_features");
migrationBuilder.DropTable(
name: "publisher_members");
migrationBuilder.DropTable(
name: "publisher_subscriptions");
migrationBuilder.DropTable(
name: "realm_members");
migrationBuilder.DropTable(
name: "realm_tags");
migrationBuilder.DropTable(
name: "stickers");
migrationBuilder.DropTable(
name: "web_articles");
migrationBuilder.DropTable(
name: "chat_messages");
migrationBuilder.DropTable(
name: "custom_apps");
migrationBuilder.DropTable(
name: "post_categories");
migrationBuilder.DropTable(
name: "post_collections");
migrationBuilder.DropTable(
name: "post_tags");
migrationBuilder.DropTable(
name: "posts");
migrationBuilder.DropTable(
name: "tags");
migrationBuilder.DropTable(
name: "sticker_packs");
migrationBuilder.DropTable(
name: "web_feeds");
migrationBuilder.DropTable(
name: "chat_members");
migrationBuilder.DropTable(
name: "publishers");
migrationBuilder.DropTable(
name: "chat_rooms");
migrationBuilder.DropTable(
name: "realms");
}
}
}