diff --git a/CHANGELOG.md b/CHANGELOG.md
index fb868e67..3c8f88e2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -24,6 +24,7 @@ Please see [Database Changes](#database-changes) and [New Configuration](#new-co
- [x] ✏️ `
` and `` tags are now allowed in Markdown.
- [x] 🔥 Removed nonstandard `/api/v1/accounts/id` endpoint (the same functionality was already possible with other endpoints).
- [x] ✨️ Implemented rate limiting support for API endpoints.
+- [x] 🔒 Implemented `is_indexable` and `is_hiding_collections` fields to the [**Accounts API**](https://docs.joinmastodon.org/methods/accounts/#update_credentials).
### CLI
diff --git a/api/api/v1/accounts/[id]/followers.test.ts b/api/api/v1/accounts/[id]/followers.test.ts
index abfece0b..ec8f4c6c 100644
--- a/api/api/v1/accounts/[id]/followers.test.ts
+++ b/api/api/v1/accounts/[id]/followers.test.ts
@@ -44,4 +44,33 @@ describe("/api/v1/accounts/:id/followers", () => {
expect(data).toBeInstanceOf(Array);
expect(data.length).toBe(0);
});
+
+ test("should return no followers if account is hiding collections", async () => {
+ await using client0 = await generateClient(users[0]);
+ await using client1 = await generateClient(users[1]);
+
+ const { ok: ok0 } = await client0.followAccount(users[1].id);
+
+ expect(ok0).toBe(true);
+
+ const { ok: ok1, data: data1 } = await client0.getAccountFollowers(
+ users[1].id,
+ );
+
+ expect(ok1).toBe(true);
+ expect(data1).toBeArrayOfSize(1);
+
+ const { ok: ok2 } = await client1.updateCredentials({
+ hide_collections: true,
+ });
+
+ expect(ok2).toBe(true);
+
+ const { ok: ok3, data: data3 } = await client0.getAccountFollowers(
+ users[1].id,
+ );
+
+ expect(ok3).toBe(true);
+ expect(data3).toBeArrayOfSize(0);
+ });
});
diff --git a/api/api/v1/accounts/[id]/followers.ts b/api/api/v1/accounts/[id]/followers.ts
index aa3de792..60450727 100644
--- a/api/api/v1/accounts/[id]/followers.ts
+++ b/api/api/v1/accounts/[id]/followers.ts
@@ -83,11 +83,18 @@ export default apiRoute((app) =>
handleZodError,
),
async (context) => {
+ const { user: self } = context.get("auth");
const { max_id, since_id, min_id, limit } =
context.req.valid("query");
const otherUser = context.get("user");
- // TODO: Add follower/following privacy settings
+ if (
+ self?.id !== otherUser.id &&
+ otherUser.data.isHidingCollections
+ ) {
+ return context.json([], 200, { Link: "" });
+ }
+
const { objects, link } = await Timeline.getUserTimeline(
and(
max_id ? lt(Users.id, max_id) : undefined,
diff --git a/api/api/v1/accounts/[id]/following.test.ts b/api/api/v1/accounts/[id]/following.test.ts
index cea94341..7d3a0134 100644
--- a/api/api/v1/accounts/[id]/following.test.ts
+++ b/api/api/v1/accounts/[id]/following.test.ts
@@ -43,4 +43,33 @@ describe("/api/v1/accounts/:id/following", () => {
expect(data).toBeInstanceOf(Array);
expect(data.length).toBe(0);
});
+
+ test("should return no following if account is hiding collections", async () => {
+ await using client0 = await generateClient(users[0]);
+ await using client1 = await generateClient(users[1]);
+
+ const { ok: ok0 } = await client1.followAccount(users[0].id);
+
+ expect(ok0).toBe(true);
+
+ const { ok: ok1, data: data1 } = await client0.getAccountFollowing(
+ users[1].id,
+ );
+
+ expect(ok1).toBe(true);
+ expect(data1).toBeArrayOfSize(1);
+
+ const { ok: ok2 } = await client1.updateCredentials({
+ hide_collections: true,
+ });
+
+ expect(ok2).toBe(true);
+
+ const { ok: ok3, data: data3 } = await client0.getAccountFollowing(
+ users[1].id,
+ );
+
+ expect(ok3).toBe(true);
+ expect(data3).toBeArrayOfSize(0);
+ });
});
diff --git a/api/api/v1/accounts/[id]/following.ts b/api/api/v1/accounts/[id]/following.ts
index 4867e30b..c9e596f8 100644
--- a/api/api/v1/accounts/[id]/following.ts
+++ b/api/api/v1/accounts/[id]/following.ts
@@ -84,10 +84,16 @@ export default apiRoute((app) =>
handleZodError,
),
async (context) => {
+ const { user: self } = context.get("auth");
const { max_id, since_id, min_id } = context.req.valid("query");
const otherUser = context.get("user");
- // TODO: Add follower/following privacy settings
+ if (
+ self?.id !== otherUser.id &&
+ otherUser.data.isHidingCollections
+ ) {
+ return context.json([], 200, { Link: "" });
+ }
const { objects, link } = await Timeline.getUserTimeline(
and(
diff --git a/api/api/v1/accounts/update_credentials/index.ts b/api/api/v1/accounts/update_credentials/index.ts
index 0ebd3e0c..11d2057f 100644
--- a/api/api/v1/accounts/update_credentials/index.ts
+++ b/api/api/v1/accounts/update_credentials/index.ts
@@ -110,16 +110,16 @@ export default apiRoute((app) =>
bot: AccountSchema.shape.bot.openapi({
description: "Whether the account has a bot flag.",
}),
- discoverable: AccountSchema.shape.discoverable.openapi({
- description:
- "Whether the account should be shown in the profile directory.",
- }),
- // TODO: Implement :(
+ discoverable: AccountSchema.shape.discoverable
+ .unwrap()
+ .openapi({
+ description:
+ "Whether the account should be shown in the profile directory.",
+ }),
hide_collections: zBoolean.openapi({
description:
"Whether to hide followers and followed accounts.",
}),
- // TODO: Implement :(
indexable: zBoolean.openapi({
description:
"Whether public posts should be searchable to anyone.",
@@ -168,6 +168,8 @@ export default apiRoute((app) =>
locked,
bot,
discoverable,
+ hide_collections,
+ indexable,
source,
fields_attributes,
} = context.req.valid("json");
@@ -249,14 +251,22 @@ export default apiRoute((app) =>
self.isLocked = locked;
}
- if (bot) {
+ if (bot !== undefined) {
self.isBot = bot;
}
- if (discoverable) {
+ if (discoverable !== undefined) {
self.isDiscoverable = discoverable;
}
+ if (hide_collections !== undefined) {
+ self.isHidingCollections = hide_collections;
+ }
+
+ if (indexable !== undefined) {
+ self.isIndexable = indexable;
+ }
+
const fieldEmojis: Emoji[] = [];
if (fields_attributes) {
@@ -342,6 +352,8 @@ export default apiRoute((app) =>
isLocked: self.isLocked,
isBot: self.isBot,
isDiscoverable: self.isDiscoverable,
+ isHidingCollections: self.isHidingCollections,
+ isIndexable: self.isIndexable,
source: self.source || undefined,
});
diff --git a/api/api/v1/accounts/verify_credentials/index.test.ts b/api/api/v1/accounts/verify_credentials/index.test.ts
index f88d6cbe..cadc7498 100644
--- a/api/api/v1/accounts/verify_credentials/index.test.ts
+++ b/api/api/v1/accounts/verify_credentials/index.test.ts
@@ -44,7 +44,7 @@ describe("/api/v1/accounts/verify_credentials", () => {
expect(data.bot).toBe(users[0].data.isBot);
expect(data.group).toBe(false);
expect(data.discoverable).toBe(users[0].data.isDiscoverable);
- expect(data.noindex).toBe(false);
+ expect(data.noindex).toBe(!users[0].data.isIndexable);
expect(data.moved).toBeNull();
expect(data.suspended).toBe(false);
expect(data.limited).toBe(false);
diff --git a/classes/database/user.ts b/classes/database/user.ts
index 3607586a..0a4ac350 100644
--- a/classes/database/user.ts
+++ b/classes/database/user.ts
@@ -1126,8 +1126,14 @@ export class User extends BaseInterface {
: "",
locked: user.isLocked,
created_at: new Date(user.createdAt).toISOString(),
- followers_count: user.followerCount,
- following_count: user.followingCount,
+ followers_count:
+ user.isHidingCollections && !isOwnAccount
+ ? 0
+ : user.followerCount,
+ following_count:
+ user.isHidingCollections && !isOwnAccount
+ ? 0
+ : user.followingCount,
statuses_count: user.statusCount,
emojis: user.emojis.map((emoji) => new Emoji(emoji).toApi()),
fields: user.fields.map((field) => ({
@@ -1146,7 +1152,7 @@ export class User extends BaseInterface {
// TODO: Add these fields
limited: false,
moved: null,
- noindex: false,
+ noindex: !user.isIndexable,
suspended: false,
discoverable: user.isDiscoverable,
mute_expires_at: null,
@@ -1238,7 +1244,7 @@ export class User extends BaseInterface {
`/users/${user.id}/inbox`,
config.http.base_url,
).toString(),
- indexable: false,
+ indexable: this.data.isIndexable,
username: user.username,
manually_approves_followers: this.data.isLocked,
avatar: this.avatar?.toVersia(),
diff --git a/drizzle/migrations/0046_wooden_electro.sql b/drizzle/migrations/0046_wooden_electro.sql
new file mode 100644
index 00000000..4427c310
--- /dev/null
+++ b/drizzle/migrations/0046_wooden_electro.sql
@@ -0,0 +1,2 @@
+ALTER TABLE "Users" ADD COLUMN "is_hiding_collections" boolean DEFAULT false NOT NULL;--> statement-breakpoint
+ALTER TABLE "Users" ADD COLUMN "is_indexable" boolean DEFAULT false NOT NULL;
\ No newline at end of file
diff --git a/drizzle/migrations/0047_black_vermin.sql b/drizzle/migrations/0047_black_vermin.sql
new file mode 100644
index 00000000..84176260
--- /dev/null
+++ b/drizzle/migrations/0047_black_vermin.sql
@@ -0,0 +1 @@
+ALTER TABLE "Users" ALTER COLUMN "is_indexable" SET DEFAULT true;
\ No newline at end of file
diff --git a/drizzle/migrations/meta/0046_snapshot.json b/drizzle/migrations/meta/0046_snapshot.json
new file mode 100644
index 00000000..d85d3235
--- /dev/null
+++ b/drizzle/migrations/meta/0046_snapshot.json
@@ -0,0 +1,2363 @@
+{
+ "id": "f8cb7052-100c-4fcd-a9ea-db86506b0304",
+ "prevId": "62854dae-5df9-4a44-a64e-87554de1da34",
+ "version": "7",
+ "dialect": "postgresql",
+ "tables": {
+ "public.Applications": {
+ "name": "Applications",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "name": {
+ "name": "name",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "website": {
+ "name": "website",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "vapid_key": {
+ "name": "vapid_key",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "client_id": {
+ "name": "client_id",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "secret": {
+ "name": "secret",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "scopes": {
+ "name": "scopes",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "redirect_uri": {
+ "name": "redirect_uri",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "Applications_client_id_index": {
+ "name": "Applications_client_id_index",
+ "columns": [
+ {
+ "expression": "client_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.Challenges": {
+ "name": "Challenges",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "challenge": {
+ "name": "challenge",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "expires_at": {
+ "name": "expires_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "NOW() + INTERVAL '5 minutes'"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.EmojiToNote": {
+ "name": "EmojiToNote",
+ "schema": "",
+ "columns": {
+ "emojiId": {
+ "name": "emojiId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "noteId": {
+ "name": "noteId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "EmojiToNote_emojiId_noteId_index": {
+ "name": "EmojiToNote_emojiId_noteId_index",
+ "columns": [
+ {
+ "expression": "emojiId",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ },
+ {
+ "expression": "noteId",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "EmojiToNote_noteId_index": {
+ "name": "EmojiToNote_noteId_index",
+ "columns": [
+ {
+ "expression": "noteId",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "EmojiToNote_emojiId_Emojis_id_fk": {
+ "name": "EmojiToNote_emojiId_Emojis_id_fk",
+ "tableFrom": "EmojiToNote",
+ "tableTo": "Emojis",
+ "columnsFrom": ["emojiId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "EmojiToNote_noteId_Notes_id_fk": {
+ "name": "EmojiToNote_noteId_Notes_id_fk",
+ "tableFrom": "EmojiToNote",
+ "tableTo": "Notes",
+ "columnsFrom": ["noteId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.EmojiToUser": {
+ "name": "EmojiToUser",
+ "schema": "",
+ "columns": {
+ "emojiId": {
+ "name": "emojiId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "userId": {
+ "name": "userId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "EmojiToUser_emojiId_userId_index": {
+ "name": "EmojiToUser_emojiId_userId_index",
+ "columns": [
+ {
+ "expression": "emojiId",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ },
+ {
+ "expression": "userId",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "EmojiToUser_userId_index": {
+ "name": "EmojiToUser_userId_index",
+ "columns": [
+ {
+ "expression": "userId",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "EmojiToUser_emojiId_Emojis_id_fk": {
+ "name": "EmojiToUser_emojiId_Emojis_id_fk",
+ "tableFrom": "EmojiToUser",
+ "tableTo": "Emojis",
+ "columnsFrom": ["emojiId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "EmojiToUser_userId_Users_id_fk": {
+ "name": "EmojiToUser_userId_Users_id_fk",
+ "tableFrom": "EmojiToUser",
+ "tableTo": "Users",
+ "columnsFrom": ["userId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.Emojis": {
+ "name": "Emojis",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "shortcode": {
+ "name": "shortcode",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "mediaId": {
+ "name": "mediaId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "visible_in_picker": {
+ "name": "visible_in_picker",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "instanceId": {
+ "name": "instanceId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "ownerId": {
+ "name": "ownerId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "category": {
+ "name": "category",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "Emojis_mediaId_Medias_id_fk": {
+ "name": "Emojis_mediaId_Medias_id_fk",
+ "tableFrom": "Emojis",
+ "tableTo": "Medias",
+ "columnsFrom": ["mediaId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "Emojis_instanceId_Instances_id_fk": {
+ "name": "Emojis_instanceId_Instances_id_fk",
+ "tableFrom": "Emojis",
+ "tableTo": "Instances",
+ "columnsFrom": ["instanceId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "Emojis_ownerId_Users_id_fk": {
+ "name": "Emojis_ownerId_Users_id_fk",
+ "tableFrom": "Emojis",
+ "tableTo": "Users",
+ "columnsFrom": ["ownerId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.FilterKeywords": {
+ "name": "FilterKeywords",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "filterId": {
+ "name": "filterId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "keyword": {
+ "name": "keyword",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "whole_word": {
+ "name": "whole_word",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "FilterKeywords_filterId_Filters_id_fk": {
+ "name": "FilterKeywords_filterId_Filters_id_fk",
+ "tableFrom": "FilterKeywords",
+ "tableTo": "Filters",
+ "columnsFrom": ["filterId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.Filters": {
+ "name": "Filters",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "userId": {
+ "name": "userId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "context": {
+ "name": "context",
+ "type": "text[]",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "title": {
+ "name": "title",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "filter_action": {
+ "name": "filter_action",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "expires_at": {
+ "name": "expires_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "Filters_userId_Users_id_fk": {
+ "name": "Filters_userId_Users_id_fk",
+ "tableFrom": "Filters",
+ "tableTo": "Users",
+ "columnsFrom": ["userId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.Flags": {
+ "name": "Flags",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "flag_type": {
+ "name": "flag_type",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "'other'"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "noteId": {
+ "name": "noteId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "userId": {
+ "name": "userId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "Flags_noteId_Notes_id_fk": {
+ "name": "Flags_noteId_Notes_id_fk",
+ "tableFrom": "Flags",
+ "tableTo": "Notes",
+ "columnsFrom": ["noteId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "Flags_userId_Users_id_fk": {
+ "name": "Flags_userId_Users_id_fk",
+ "tableFrom": "Flags",
+ "tableTo": "Users",
+ "columnsFrom": ["userId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.Instances": {
+ "name": "Instances",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "base_url": {
+ "name": "base_url",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "version": {
+ "name": "version",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "logo": {
+ "name": "logo",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "disable_automoderation": {
+ "name": "disable_automoderation",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true,
+ "default": false
+ },
+ "protocol": {
+ "name": "protocol",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "'versia'"
+ },
+ "inbox": {
+ "name": "inbox",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "public_key": {
+ "name": "public_key",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "extensions": {
+ "name": "extensions",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.Likes": {
+ "name": "Likes",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "uri": {
+ "name": "uri",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "likerId": {
+ "name": "likerId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "likedId": {
+ "name": "likedId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "Likes_likerId_Users_id_fk": {
+ "name": "Likes_likerId_Users_id_fk",
+ "tableFrom": "Likes",
+ "tableTo": "Users",
+ "columnsFrom": ["likerId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "Likes_likedId_Notes_id_fk": {
+ "name": "Likes_likedId_Notes_id_fk",
+ "tableFrom": "Likes",
+ "tableTo": "Notes",
+ "columnsFrom": ["likedId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {
+ "Likes_uri_unique": {
+ "name": "Likes_uri_unique",
+ "nullsNotDistinct": false,
+ "columns": ["uri"]
+ }
+ },
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.Markers": {
+ "name": "Markers",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "noteId": {
+ "name": "noteId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "notificationId": {
+ "name": "notificationId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "userId": {
+ "name": "userId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "timeline": {
+ "name": "timeline",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "Markers_noteId_Notes_id_fk": {
+ "name": "Markers_noteId_Notes_id_fk",
+ "tableFrom": "Markers",
+ "tableTo": "Notes",
+ "columnsFrom": ["noteId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "Markers_notificationId_Notifications_id_fk": {
+ "name": "Markers_notificationId_Notifications_id_fk",
+ "tableFrom": "Markers",
+ "tableTo": "Notifications",
+ "columnsFrom": ["notificationId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "Markers_userId_Users_id_fk": {
+ "name": "Markers_userId_Users_id_fk",
+ "tableFrom": "Markers",
+ "tableTo": "Users",
+ "columnsFrom": ["userId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.Medias": {
+ "name": "Medias",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "content": {
+ "name": "content",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "original_content": {
+ "name": "original_content",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "thumbnail": {
+ "name": "thumbnail",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "blurhash": {
+ "name": "blurhash",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.MediasToNote": {
+ "name": "MediasToNote",
+ "schema": "",
+ "columns": {
+ "mediaId": {
+ "name": "mediaId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "noteId": {
+ "name": "noteId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "MediasToNote_mediaId_index": {
+ "name": "MediasToNote_mediaId_index",
+ "columns": [
+ {
+ "expression": "mediaId",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "MediasToNote_noteId_index": {
+ "name": "MediasToNote_noteId_index",
+ "columns": [
+ {
+ "expression": "noteId",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "MediasToNote_mediaId_Medias_id_fk": {
+ "name": "MediasToNote_mediaId_Medias_id_fk",
+ "tableFrom": "MediasToNote",
+ "tableTo": "Medias",
+ "columnsFrom": ["mediaId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "MediasToNote_noteId_Notes_id_fk": {
+ "name": "MediasToNote_noteId_Notes_id_fk",
+ "tableFrom": "MediasToNote",
+ "tableTo": "Notes",
+ "columnsFrom": ["noteId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.ModNotes": {
+ "name": "ModNotes",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "noteId": {
+ "name": "noteId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "userId": {
+ "name": "userId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "modId": {
+ "name": "modId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "note": {
+ "name": "note",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "ModNotes_noteId_Notes_id_fk": {
+ "name": "ModNotes_noteId_Notes_id_fk",
+ "tableFrom": "ModNotes",
+ "tableTo": "Notes",
+ "columnsFrom": ["noteId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "ModNotes_userId_Users_id_fk": {
+ "name": "ModNotes_userId_Users_id_fk",
+ "tableFrom": "ModNotes",
+ "tableTo": "Users",
+ "columnsFrom": ["userId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "ModNotes_modId_Users_id_fk": {
+ "name": "ModNotes_modId_Users_id_fk",
+ "tableFrom": "ModNotes",
+ "tableTo": "Users",
+ "columnsFrom": ["modId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.ModTags": {
+ "name": "ModTags",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "noteId": {
+ "name": "noteId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "userId": {
+ "name": "userId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "modId": {
+ "name": "modId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "tag": {
+ "name": "tag",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "ModTags_noteId_Notes_id_fk": {
+ "name": "ModTags_noteId_Notes_id_fk",
+ "tableFrom": "ModTags",
+ "tableTo": "Notes",
+ "columnsFrom": ["noteId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "ModTags_userId_Users_id_fk": {
+ "name": "ModTags_userId_Users_id_fk",
+ "tableFrom": "ModTags",
+ "tableTo": "Users",
+ "columnsFrom": ["userId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "ModTags_modId_Users_id_fk": {
+ "name": "ModTags_modId_Users_id_fk",
+ "tableFrom": "ModTags",
+ "tableTo": "Users",
+ "columnsFrom": ["modId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.NoteToMentions": {
+ "name": "NoteToMentions",
+ "schema": "",
+ "columns": {
+ "noteId": {
+ "name": "noteId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "userId": {
+ "name": "userId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "NoteToMentions_noteId_userId_index": {
+ "name": "NoteToMentions_noteId_userId_index",
+ "columns": [
+ {
+ "expression": "noteId",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ },
+ {
+ "expression": "userId",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "NoteToMentions_userId_index": {
+ "name": "NoteToMentions_userId_index",
+ "columns": [
+ {
+ "expression": "userId",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "NoteToMentions_noteId_Notes_id_fk": {
+ "name": "NoteToMentions_noteId_Notes_id_fk",
+ "tableFrom": "NoteToMentions",
+ "tableTo": "Notes",
+ "columnsFrom": ["noteId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "NoteToMentions_userId_Users_id_fk": {
+ "name": "NoteToMentions_userId_Users_id_fk",
+ "tableFrom": "NoteToMentions",
+ "tableTo": "Users",
+ "columnsFrom": ["userId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.Notes": {
+ "name": "Notes",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "uri": {
+ "name": "uri",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "authorId": {
+ "name": "authorId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "reblogId": {
+ "name": "reblogId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "content": {
+ "name": "content",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "''"
+ },
+ "content_type": {
+ "name": "content_type",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "'text/plain'"
+ },
+ "visibility": {
+ "name": "visibility",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "replyId": {
+ "name": "replyId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "quoteId": {
+ "name": "quoteId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "sensitive": {
+ "name": "sensitive",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "spoiler_text": {
+ "name": "spoiler_text",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "''"
+ },
+ "applicationId": {
+ "name": "applicationId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "content_source": {
+ "name": "content_source",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "''"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "Notes_authorId_Users_id_fk": {
+ "name": "Notes_authorId_Users_id_fk",
+ "tableFrom": "Notes",
+ "tableTo": "Users",
+ "columnsFrom": ["authorId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "Notes_reblogId_Notes_id_fk": {
+ "name": "Notes_reblogId_Notes_id_fk",
+ "tableFrom": "Notes",
+ "tableTo": "Notes",
+ "columnsFrom": ["reblogId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "Notes_replyId_Notes_id_fk": {
+ "name": "Notes_replyId_Notes_id_fk",
+ "tableFrom": "Notes",
+ "tableTo": "Notes",
+ "columnsFrom": ["replyId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "Notes_quoteId_Notes_id_fk": {
+ "name": "Notes_quoteId_Notes_id_fk",
+ "tableFrom": "Notes",
+ "tableTo": "Notes",
+ "columnsFrom": ["quoteId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "Notes_applicationId_Applications_id_fk": {
+ "name": "Notes_applicationId_Applications_id_fk",
+ "tableFrom": "Notes",
+ "tableTo": "Applications",
+ "columnsFrom": ["applicationId"],
+ "columnsTo": ["id"],
+ "onDelete": "set null",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {
+ "Notes_uri_unique": {
+ "name": "Notes_uri_unique",
+ "nullsNotDistinct": false,
+ "columns": ["uri"]
+ }
+ },
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.Notifications": {
+ "name": "Notifications",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "type": {
+ "name": "type",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "notifiedId": {
+ "name": "notifiedId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "accountId": {
+ "name": "accountId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "noteId": {
+ "name": "noteId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "dismissed": {
+ "name": "dismissed",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true,
+ "default": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "Notifications_notifiedId_Users_id_fk": {
+ "name": "Notifications_notifiedId_Users_id_fk",
+ "tableFrom": "Notifications",
+ "tableTo": "Users",
+ "columnsFrom": ["notifiedId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "Notifications_accountId_Users_id_fk": {
+ "name": "Notifications_accountId_Users_id_fk",
+ "tableFrom": "Notifications",
+ "tableTo": "Users",
+ "columnsFrom": ["accountId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "Notifications_noteId_Notes_id_fk": {
+ "name": "Notifications_noteId_Notes_id_fk",
+ "tableFrom": "Notifications",
+ "tableTo": "Notes",
+ "columnsFrom": ["noteId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.OpenIdAccounts": {
+ "name": "OpenIdAccounts",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "userId": {
+ "name": "userId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "server_id": {
+ "name": "server_id",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "issuer_id": {
+ "name": "issuer_id",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "OpenIdAccounts_userId_Users_id_fk": {
+ "name": "OpenIdAccounts_userId_Users_id_fk",
+ "tableFrom": "OpenIdAccounts",
+ "tableTo": "Users",
+ "columnsFrom": ["userId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.OpenIdLoginFlows": {
+ "name": "OpenIdLoginFlows",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "code_verifier": {
+ "name": "code_verifier",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "applicationId": {
+ "name": "applicationId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "issuer_id": {
+ "name": "issuer_id",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "OpenIdLoginFlows_applicationId_Applications_id_fk": {
+ "name": "OpenIdLoginFlows_applicationId_Applications_id_fk",
+ "tableFrom": "OpenIdLoginFlows",
+ "tableTo": "Applications",
+ "columnsFrom": ["applicationId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.PushSubscriptions": {
+ "name": "PushSubscriptions",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "endpoint": {
+ "name": "endpoint",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "public_key": {
+ "name": "public_key",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "auth_secret": {
+ "name": "auth_secret",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "alerts": {
+ "name": "alerts",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "policy": {
+ "name": "policy",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "tokenId": {
+ "name": "tokenId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "PushSubscriptions_tokenId_Tokens_id_fk": {
+ "name": "PushSubscriptions_tokenId_Tokens_id_fk",
+ "tableFrom": "PushSubscriptions",
+ "tableTo": "Tokens",
+ "columnsFrom": ["tokenId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {
+ "PushSubscriptions_tokenId_unique": {
+ "name": "PushSubscriptions_tokenId_unique",
+ "nullsNotDistinct": false,
+ "columns": ["tokenId"]
+ }
+ },
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.Reaction": {
+ "name": "Reaction",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "uri": {
+ "name": "uri",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "emojiId": {
+ "name": "emojiId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "emoji_text": {
+ "name": "emoji_text",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "noteId": {
+ "name": "noteId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "authorId": {
+ "name": "authorId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "Reaction_emojiId_Emojis_id_fk": {
+ "name": "Reaction_emojiId_Emojis_id_fk",
+ "tableFrom": "Reaction",
+ "tableTo": "Emojis",
+ "columnsFrom": ["emojiId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "Reaction_noteId_Notes_id_fk": {
+ "name": "Reaction_noteId_Notes_id_fk",
+ "tableFrom": "Reaction",
+ "tableTo": "Notes",
+ "columnsFrom": ["noteId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "Reaction_authorId_Users_id_fk": {
+ "name": "Reaction_authorId_Users_id_fk",
+ "tableFrom": "Reaction",
+ "tableTo": "Users",
+ "columnsFrom": ["authorId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {
+ "Reaction_uri_unique": {
+ "name": "Reaction_uri_unique",
+ "nullsNotDistinct": false,
+ "columns": ["uri"]
+ }
+ },
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.Relationships": {
+ "name": "Relationships",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "ownerId": {
+ "name": "ownerId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "subjectId": {
+ "name": "subjectId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "following": {
+ "name": "following",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "showing_reblogs": {
+ "name": "showing_reblogs",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "notifying": {
+ "name": "notifying",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "blocking": {
+ "name": "blocking",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "muting": {
+ "name": "muting",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "muting_notifications": {
+ "name": "muting_notifications",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "requested": {
+ "name": "requested",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "domain_blocking": {
+ "name": "domain_blocking",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "endorsed": {
+ "name": "endorsed",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "languages": {
+ "name": "languages",
+ "type": "text[]",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "note": {
+ "name": "note",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "Relationships_ownerId_Users_id_fk": {
+ "name": "Relationships_ownerId_Users_id_fk",
+ "tableFrom": "Relationships",
+ "tableTo": "Users",
+ "columnsFrom": ["ownerId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "Relationships_subjectId_Users_id_fk": {
+ "name": "Relationships_subjectId_Users_id_fk",
+ "tableFrom": "Relationships",
+ "tableTo": "Users",
+ "columnsFrom": ["subjectId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.RoleToUsers": {
+ "name": "RoleToUsers",
+ "schema": "",
+ "columns": {
+ "roleId": {
+ "name": "roleId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "userId": {
+ "name": "userId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "RoleToUsers_roleId_Roles_id_fk": {
+ "name": "RoleToUsers_roleId_Roles_id_fk",
+ "tableFrom": "RoleToUsers",
+ "tableTo": "Roles",
+ "columnsFrom": ["roleId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "RoleToUsers_userId_Users_id_fk": {
+ "name": "RoleToUsers_userId_Users_id_fk",
+ "tableFrom": "RoleToUsers",
+ "tableTo": "Users",
+ "columnsFrom": ["userId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.Roles": {
+ "name": "Roles",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "name": {
+ "name": "name",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "permissions": {
+ "name": "permissions",
+ "type": "text[]",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "priority": {
+ "name": "priority",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "default": 0
+ },
+ "description": {
+ "name": "description",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "visible": {
+ "name": "visible",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true,
+ "default": false
+ },
+ "icon": {
+ "name": "icon",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.Tokens": {
+ "name": "Tokens",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "token_type": {
+ "name": "token_type",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "scope": {
+ "name": "scope",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "access_token": {
+ "name": "access_token",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "code": {
+ "name": "code",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "expires_at": {
+ "name": "expires_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "client_id": {
+ "name": "client_id",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "''"
+ },
+ "redirect_uri": {
+ "name": "redirect_uri",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "''"
+ },
+ "id_token": {
+ "name": "id_token",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "userId": {
+ "name": "userId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "applicationId": {
+ "name": "applicationId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "Tokens_userId_Users_id_fk": {
+ "name": "Tokens_userId_Users_id_fk",
+ "tableFrom": "Tokens",
+ "tableTo": "Users",
+ "columnsFrom": ["userId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "Tokens_applicationId_Applications_id_fk": {
+ "name": "Tokens_applicationId_Applications_id_fk",
+ "tableFrom": "Tokens",
+ "tableTo": "Applications",
+ "columnsFrom": ["applicationId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.UserToPinnedNotes": {
+ "name": "UserToPinnedNotes",
+ "schema": "",
+ "columns": {
+ "userId": {
+ "name": "userId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "noteId": {
+ "name": "noteId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "UserToPinnedNotes_userId_noteId_index": {
+ "name": "UserToPinnedNotes_userId_noteId_index",
+ "columns": [
+ {
+ "expression": "userId",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ },
+ {
+ "expression": "noteId",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "UserToPinnedNotes_noteId_index": {
+ "name": "UserToPinnedNotes_noteId_index",
+ "columns": [
+ {
+ "expression": "noteId",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "UserToPinnedNotes_userId_Users_id_fk": {
+ "name": "UserToPinnedNotes_userId_Users_id_fk",
+ "tableFrom": "UserToPinnedNotes",
+ "tableTo": "Users",
+ "columnsFrom": ["userId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "UserToPinnedNotes_noteId_Notes_id_fk": {
+ "name": "UserToPinnedNotes_noteId_Notes_id_fk",
+ "tableFrom": "UserToPinnedNotes",
+ "tableTo": "Notes",
+ "columnsFrom": ["noteId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.Users": {
+ "name": "Users",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "uri": {
+ "name": "uri",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "username": {
+ "name": "username",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "display_name": {
+ "name": "display_name",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "password": {
+ "name": "password",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "email": {
+ "name": "email",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "note": {
+ "name": "note",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "''"
+ },
+ "is_admin": {
+ "name": "is_admin",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true,
+ "default": false
+ },
+ "email_verification_token": {
+ "name": "email_verification_token",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "password_reset_token": {
+ "name": "password_reset_token",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "fields": {
+ "name": "fields",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "'[]'"
+ },
+ "endpoints": {
+ "name": "endpoints",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "source": {
+ "name": "source",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "avatarId": {
+ "name": "avatarId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "headerId": {
+ "name": "headerId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "is_bot": {
+ "name": "is_bot",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true,
+ "default": false
+ },
+ "is_locked": {
+ "name": "is_locked",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true,
+ "default": false
+ },
+ "is_discoverable": {
+ "name": "is_discoverable",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true,
+ "default": false
+ },
+ "is_hiding_collections": {
+ "name": "is_hiding_collections",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true,
+ "default": false
+ },
+ "is_indexable": {
+ "name": "is_indexable",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true,
+ "default": false
+ },
+ "sanctions": {
+ "name": "sanctions",
+ "type": "text[]",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "public_key": {
+ "name": "public_key",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "private_key": {
+ "name": "private_key",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "instanceId": {
+ "name": "instanceId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "disable_automoderation": {
+ "name": "disable_automoderation",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true,
+ "default": false
+ }
+ },
+ "indexes": {
+ "Users_uri_index": {
+ "name": "Users_uri_index",
+ "columns": [
+ {
+ "expression": "uri",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "Users_username_index": {
+ "name": "Users_username_index",
+ "columns": [
+ {
+ "expression": "username",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "Users_email_index": {
+ "name": "Users_email_index",
+ "columns": [
+ {
+ "expression": "email",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "Users_avatarId_Medias_id_fk": {
+ "name": "Users_avatarId_Medias_id_fk",
+ "tableFrom": "Users",
+ "tableTo": "Medias",
+ "columnsFrom": ["avatarId"],
+ "columnsTo": ["id"],
+ "onDelete": "set null",
+ "onUpdate": "cascade"
+ },
+ "Users_headerId_Medias_id_fk": {
+ "name": "Users_headerId_Medias_id_fk",
+ "tableFrom": "Users",
+ "tableTo": "Medias",
+ "columnsFrom": ["headerId"],
+ "columnsTo": ["id"],
+ "onDelete": "set null",
+ "onUpdate": "cascade"
+ },
+ "Users_instanceId_Instances_id_fk": {
+ "name": "Users_instanceId_Instances_id_fk",
+ "tableFrom": "Users",
+ "tableTo": "Instances",
+ "columnsFrom": ["instanceId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {
+ "Users_uri_unique": {
+ "name": "Users_uri_unique",
+ "nullsNotDistinct": false,
+ "columns": ["uri"]
+ }
+ },
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ }
+ },
+ "enums": {},
+ "schemas": {},
+ "sequences": {},
+ "roles": {},
+ "policies": {},
+ "views": {},
+ "_meta": {
+ "columns": {},
+ "schemas": {},
+ "tables": {}
+ }
+}
diff --git a/drizzle/migrations/meta/0047_snapshot.json b/drizzle/migrations/meta/0047_snapshot.json
new file mode 100644
index 00000000..e36400b3
--- /dev/null
+++ b/drizzle/migrations/meta/0047_snapshot.json
@@ -0,0 +1,2363 @@
+{
+ "id": "c03419b8-3ff7-4e43-a273-9681c4ce61e1",
+ "prevId": "f8cb7052-100c-4fcd-a9ea-db86506b0304",
+ "version": "7",
+ "dialect": "postgresql",
+ "tables": {
+ "public.Applications": {
+ "name": "Applications",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "name": {
+ "name": "name",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "website": {
+ "name": "website",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "vapid_key": {
+ "name": "vapid_key",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "client_id": {
+ "name": "client_id",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "secret": {
+ "name": "secret",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "scopes": {
+ "name": "scopes",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "redirect_uri": {
+ "name": "redirect_uri",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "Applications_client_id_index": {
+ "name": "Applications_client_id_index",
+ "columns": [
+ {
+ "expression": "client_id",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.Challenges": {
+ "name": "Challenges",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "challenge": {
+ "name": "challenge",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "expires_at": {
+ "name": "expires_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "NOW() + INTERVAL '5 minutes'"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.EmojiToNote": {
+ "name": "EmojiToNote",
+ "schema": "",
+ "columns": {
+ "emojiId": {
+ "name": "emojiId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "noteId": {
+ "name": "noteId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "EmojiToNote_emojiId_noteId_index": {
+ "name": "EmojiToNote_emojiId_noteId_index",
+ "columns": [
+ {
+ "expression": "emojiId",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ },
+ {
+ "expression": "noteId",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "EmojiToNote_noteId_index": {
+ "name": "EmojiToNote_noteId_index",
+ "columns": [
+ {
+ "expression": "noteId",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "EmojiToNote_emojiId_Emojis_id_fk": {
+ "name": "EmojiToNote_emojiId_Emojis_id_fk",
+ "tableFrom": "EmojiToNote",
+ "tableTo": "Emojis",
+ "columnsFrom": ["emojiId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "EmojiToNote_noteId_Notes_id_fk": {
+ "name": "EmojiToNote_noteId_Notes_id_fk",
+ "tableFrom": "EmojiToNote",
+ "tableTo": "Notes",
+ "columnsFrom": ["noteId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.EmojiToUser": {
+ "name": "EmojiToUser",
+ "schema": "",
+ "columns": {
+ "emojiId": {
+ "name": "emojiId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "userId": {
+ "name": "userId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "EmojiToUser_emojiId_userId_index": {
+ "name": "EmojiToUser_emojiId_userId_index",
+ "columns": [
+ {
+ "expression": "emojiId",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ },
+ {
+ "expression": "userId",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "EmojiToUser_userId_index": {
+ "name": "EmojiToUser_userId_index",
+ "columns": [
+ {
+ "expression": "userId",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "EmojiToUser_emojiId_Emojis_id_fk": {
+ "name": "EmojiToUser_emojiId_Emojis_id_fk",
+ "tableFrom": "EmojiToUser",
+ "tableTo": "Emojis",
+ "columnsFrom": ["emojiId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "EmojiToUser_userId_Users_id_fk": {
+ "name": "EmojiToUser_userId_Users_id_fk",
+ "tableFrom": "EmojiToUser",
+ "tableTo": "Users",
+ "columnsFrom": ["userId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.Emojis": {
+ "name": "Emojis",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "shortcode": {
+ "name": "shortcode",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "mediaId": {
+ "name": "mediaId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "visible_in_picker": {
+ "name": "visible_in_picker",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "instanceId": {
+ "name": "instanceId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "ownerId": {
+ "name": "ownerId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "category": {
+ "name": "category",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "Emojis_mediaId_Medias_id_fk": {
+ "name": "Emojis_mediaId_Medias_id_fk",
+ "tableFrom": "Emojis",
+ "tableTo": "Medias",
+ "columnsFrom": ["mediaId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "Emojis_instanceId_Instances_id_fk": {
+ "name": "Emojis_instanceId_Instances_id_fk",
+ "tableFrom": "Emojis",
+ "tableTo": "Instances",
+ "columnsFrom": ["instanceId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "Emojis_ownerId_Users_id_fk": {
+ "name": "Emojis_ownerId_Users_id_fk",
+ "tableFrom": "Emojis",
+ "tableTo": "Users",
+ "columnsFrom": ["ownerId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.FilterKeywords": {
+ "name": "FilterKeywords",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "filterId": {
+ "name": "filterId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "keyword": {
+ "name": "keyword",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "whole_word": {
+ "name": "whole_word",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "FilterKeywords_filterId_Filters_id_fk": {
+ "name": "FilterKeywords_filterId_Filters_id_fk",
+ "tableFrom": "FilterKeywords",
+ "tableTo": "Filters",
+ "columnsFrom": ["filterId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.Filters": {
+ "name": "Filters",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "userId": {
+ "name": "userId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "context": {
+ "name": "context",
+ "type": "text[]",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "title": {
+ "name": "title",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "filter_action": {
+ "name": "filter_action",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "expires_at": {
+ "name": "expires_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "Filters_userId_Users_id_fk": {
+ "name": "Filters_userId_Users_id_fk",
+ "tableFrom": "Filters",
+ "tableTo": "Users",
+ "columnsFrom": ["userId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.Flags": {
+ "name": "Flags",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "flag_type": {
+ "name": "flag_type",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "'other'"
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "noteId": {
+ "name": "noteId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "userId": {
+ "name": "userId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "Flags_noteId_Notes_id_fk": {
+ "name": "Flags_noteId_Notes_id_fk",
+ "tableFrom": "Flags",
+ "tableTo": "Notes",
+ "columnsFrom": ["noteId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "Flags_userId_Users_id_fk": {
+ "name": "Flags_userId_Users_id_fk",
+ "tableFrom": "Flags",
+ "tableTo": "Users",
+ "columnsFrom": ["userId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.Instances": {
+ "name": "Instances",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "base_url": {
+ "name": "base_url",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "name": {
+ "name": "name",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "version": {
+ "name": "version",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "logo": {
+ "name": "logo",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "disable_automoderation": {
+ "name": "disable_automoderation",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true,
+ "default": false
+ },
+ "protocol": {
+ "name": "protocol",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "'versia'"
+ },
+ "inbox": {
+ "name": "inbox",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "public_key": {
+ "name": "public_key",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "extensions": {
+ "name": "extensions",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.Likes": {
+ "name": "Likes",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "uri": {
+ "name": "uri",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "likerId": {
+ "name": "likerId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "likedId": {
+ "name": "likedId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "Likes_likerId_Users_id_fk": {
+ "name": "Likes_likerId_Users_id_fk",
+ "tableFrom": "Likes",
+ "tableTo": "Users",
+ "columnsFrom": ["likerId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "Likes_likedId_Notes_id_fk": {
+ "name": "Likes_likedId_Notes_id_fk",
+ "tableFrom": "Likes",
+ "tableTo": "Notes",
+ "columnsFrom": ["likedId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {
+ "Likes_uri_unique": {
+ "name": "Likes_uri_unique",
+ "nullsNotDistinct": false,
+ "columns": ["uri"]
+ }
+ },
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.Markers": {
+ "name": "Markers",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "noteId": {
+ "name": "noteId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "notificationId": {
+ "name": "notificationId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "userId": {
+ "name": "userId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "timeline": {
+ "name": "timeline",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "Markers_noteId_Notes_id_fk": {
+ "name": "Markers_noteId_Notes_id_fk",
+ "tableFrom": "Markers",
+ "tableTo": "Notes",
+ "columnsFrom": ["noteId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "Markers_notificationId_Notifications_id_fk": {
+ "name": "Markers_notificationId_Notifications_id_fk",
+ "tableFrom": "Markers",
+ "tableTo": "Notifications",
+ "columnsFrom": ["notificationId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "Markers_userId_Users_id_fk": {
+ "name": "Markers_userId_Users_id_fk",
+ "tableFrom": "Markers",
+ "tableTo": "Users",
+ "columnsFrom": ["userId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.Medias": {
+ "name": "Medias",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "content": {
+ "name": "content",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "original_content": {
+ "name": "original_content",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "thumbnail": {
+ "name": "thumbnail",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "blurhash": {
+ "name": "blurhash",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.MediasToNote": {
+ "name": "MediasToNote",
+ "schema": "",
+ "columns": {
+ "mediaId": {
+ "name": "mediaId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "noteId": {
+ "name": "noteId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "MediasToNote_mediaId_index": {
+ "name": "MediasToNote_mediaId_index",
+ "columns": [
+ {
+ "expression": "mediaId",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "MediasToNote_noteId_index": {
+ "name": "MediasToNote_noteId_index",
+ "columns": [
+ {
+ "expression": "noteId",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "MediasToNote_mediaId_Medias_id_fk": {
+ "name": "MediasToNote_mediaId_Medias_id_fk",
+ "tableFrom": "MediasToNote",
+ "tableTo": "Medias",
+ "columnsFrom": ["mediaId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "MediasToNote_noteId_Notes_id_fk": {
+ "name": "MediasToNote_noteId_Notes_id_fk",
+ "tableFrom": "MediasToNote",
+ "tableTo": "Notes",
+ "columnsFrom": ["noteId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.ModNotes": {
+ "name": "ModNotes",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "noteId": {
+ "name": "noteId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "userId": {
+ "name": "userId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "modId": {
+ "name": "modId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "note": {
+ "name": "note",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "ModNotes_noteId_Notes_id_fk": {
+ "name": "ModNotes_noteId_Notes_id_fk",
+ "tableFrom": "ModNotes",
+ "tableTo": "Notes",
+ "columnsFrom": ["noteId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "ModNotes_userId_Users_id_fk": {
+ "name": "ModNotes_userId_Users_id_fk",
+ "tableFrom": "ModNotes",
+ "tableTo": "Users",
+ "columnsFrom": ["userId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "ModNotes_modId_Users_id_fk": {
+ "name": "ModNotes_modId_Users_id_fk",
+ "tableFrom": "ModNotes",
+ "tableTo": "Users",
+ "columnsFrom": ["modId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.ModTags": {
+ "name": "ModTags",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "noteId": {
+ "name": "noteId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "userId": {
+ "name": "userId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "modId": {
+ "name": "modId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "tag": {
+ "name": "tag",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "ModTags_noteId_Notes_id_fk": {
+ "name": "ModTags_noteId_Notes_id_fk",
+ "tableFrom": "ModTags",
+ "tableTo": "Notes",
+ "columnsFrom": ["noteId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "ModTags_userId_Users_id_fk": {
+ "name": "ModTags_userId_Users_id_fk",
+ "tableFrom": "ModTags",
+ "tableTo": "Users",
+ "columnsFrom": ["userId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "ModTags_modId_Users_id_fk": {
+ "name": "ModTags_modId_Users_id_fk",
+ "tableFrom": "ModTags",
+ "tableTo": "Users",
+ "columnsFrom": ["modId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.NoteToMentions": {
+ "name": "NoteToMentions",
+ "schema": "",
+ "columns": {
+ "noteId": {
+ "name": "noteId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "userId": {
+ "name": "userId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "NoteToMentions_noteId_userId_index": {
+ "name": "NoteToMentions_noteId_userId_index",
+ "columns": [
+ {
+ "expression": "noteId",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ },
+ {
+ "expression": "userId",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "NoteToMentions_userId_index": {
+ "name": "NoteToMentions_userId_index",
+ "columns": [
+ {
+ "expression": "userId",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "NoteToMentions_noteId_Notes_id_fk": {
+ "name": "NoteToMentions_noteId_Notes_id_fk",
+ "tableFrom": "NoteToMentions",
+ "tableTo": "Notes",
+ "columnsFrom": ["noteId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "NoteToMentions_userId_Users_id_fk": {
+ "name": "NoteToMentions_userId_Users_id_fk",
+ "tableFrom": "NoteToMentions",
+ "tableTo": "Users",
+ "columnsFrom": ["userId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.Notes": {
+ "name": "Notes",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "uri": {
+ "name": "uri",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "authorId": {
+ "name": "authorId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "reblogId": {
+ "name": "reblogId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "content": {
+ "name": "content",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "''"
+ },
+ "content_type": {
+ "name": "content_type",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "'text/plain'"
+ },
+ "visibility": {
+ "name": "visibility",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "replyId": {
+ "name": "replyId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "quoteId": {
+ "name": "quoteId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "sensitive": {
+ "name": "sensitive",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "spoiler_text": {
+ "name": "spoiler_text",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "''"
+ },
+ "applicationId": {
+ "name": "applicationId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "content_source": {
+ "name": "content_source",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "''"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "Notes_authorId_Users_id_fk": {
+ "name": "Notes_authorId_Users_id_fk",
+ "tableFrom": "Notes",
+ "tableTo": "Users",
+ "columnsFrom": ["authorId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "Notes_reblogId_Notes_id_fk": {
+ "name": "Notes_reblogId_Notes_id_fk",
+ "tableFrom": "Notes",
+ "tableTo": "Notes",
+ "columnsFrom": ["reblogId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "Notes_replyId_Notes_id_fk": {
+ "name": "Notes_replyId_Notes_id_fk",
+ "tableFrom": "Notes",
+ "tableTo": "Notes",
+ "columnsFrom": ["replyId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "Notes_quoteId_Notes_id_fk": {
+ "name": "Notes_quoteId_Notes_id_fk",
+ "tableFrom": "Notes",
+ "tableTo": "Notes",
+ "columnsFrom": ["quoteId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "Notes_applicationId_Applications_id_fk": {
+ "name": "Notes_applicationId_Applications_id_fk",
+ "tableFrom": "Notes",
+ "tableTo": "Applications",
+ "columnsFrom": ["applicationId"],
+ "columnsTo": ["id"],
+ "onDelete": "set null",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {
+ "Notes_uri_unique": {
+ "name": "Notes_uri_unique",
+ "nullsNotDistinct": false,
+ "columns": ["uri"]
+ }
+ },
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.Notifications": {
+ "name": "Notifications",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "type": {
+ "name": "type",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "notifiedId": {
+ "name": "notifiedId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "accountId": {
+ "name": "accountId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "noteId": {
+ "name": "noteId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "dismissed": {
+ "name": "dismissed",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true,
+ "default": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "Notifications_notifiedId_Users_id_fk": {
+ "name": "Notifications_notifiedId_Users_id_fk",
+ "tableFrom": "Notifications",
+ "tableTo": "Users",
+ "columnsFrom": ["notifiedId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "Notifications_accountId_Users_id_fk": {
+ "name": "Notifications_accountId_Users_id_fk",
+ "tableFrom": "Notifications",
+ "tableTo": "Users",
+ "columnsFrom": ["accountId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "Notifications_noteId_Notes_id_fk": {
+ "name": "Notifications_noteId_Notes_id_fk",
+ "tableFrom": "Notifications",
+ "tableTo": "Notes",
+ "columnsFrom": ["noteId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.OpenIdAccounts": {
+ "name": "OpenIdAccounts",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "userId": {
+ "name": "userId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "server_id": {
+ "name": "server_id",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "issuer_id": {
+ "name": "issuer_id",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "OpenIdAccounts_userId_Users_id_fk": {
+ "name": "OpenIdAccounts_userId_Users_id_fk",
+ "tableFrom": "OpenIdAccounts",
+ "tableTo": "Users",
+ "columnsFrom": ["userId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.OpenIdLoginFlows": {
+ "name": "OpenIdLoginFlows",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "code_verifier": {
+ "name": "code_verifier",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "applicationId": {
+ "name": "applicationId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "issuer_id": {
+ "name": "issuer_id",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "OpenIdLoginFlows_applicationId_Applications_id_fk": {
+ "name": "OpenIdLoginFlows_applicationId_Applications_id_fk",
+ "tableFrom": "OpenIdLoginFlows",
+ "tableTo": "Applications",
+ "columnsFrom": ["applicationId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.PushSubscriptions": {
+ "name": "PushSubscriptions",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "endpoint": {
+ "name": "endpoint",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "public_key": {
+ "name": "public_key",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "auth_secret": {
+ "name": "auth_secret",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "alerts": {
+ "name": "alerts",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "policy": {
+ "name": "policy",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "tokenId": {
+ "name": "tokenId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "PushSubscriptions_tokenId_Tokens_id_fk": {
+ "name": "PushSubscriptions_tokenId_Tokens_id_fk",
+ "tableFrom": "PushSubscriptions",
+ "tableTo": "Tokens",
+ "columnsFrom": ["tokenId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {
+ "PushSubscriptions_tokenId_unique": {
+ "name": "PushSubscriptions_tokenId_unique",
+ "nullsNotDistinct": false,
+ "columns": ["tokenId"]
+ }
+ },
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.Reaction": {
+ "name": "Reaction",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "uri": {
+ "name": "uri",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "emojiId": {
+ "name": "emojiId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "emoji_text": {
+ "name": "emoji_text",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "noteId": {
+ "name": "noteId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "authorId": {
+ "name": "authorId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "Reaction_emojiId_Emojis_id_fk": {
+ "name": "Reaction_emojiId_Emojis_id_fk",
+ "tableFrom": "Reaction",
+ "tableTo": "Emojis",
+ "columnsFrom": ["emojiId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "Reaction_noteId_Notes_id_fk": {
+ "name": "Reaction_noteId_Notes_id_fk",
+ "tableFrom": "Reaction",
+ "tableTo": "Notes",
+ "columnsFrom": ["noteId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "Reaction_authorId_Users_id_fk": {
+ "name": "Reaction_authorId_Users_id_fk",
+ "tableFrom": "Reaction",
+ "tableTo": "Users",
+ "columnsFrom": ["authorId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {
+ "Reaction_uri_unique": {
+ "name": "Reaction_uri_unique",
+ "nullsNotDistinct": false,
+ "columns": ["uri"]
+ }
+ },
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.Relationships": {
+ "name": "Relationships",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "ownerId": {
+ "name": "ownerId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "subjectId": {
+ "name": "subjectId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "following": {
+ "name": "following",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "showing_reblogs": {
+ "name": "showing_reblogs",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "notifying": {
+ "name": "notifying",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "blocking": {
+ "name": "blocking",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "muting": {
+ "name": "muting",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "muting_notifications": {
+ "name": "muting_notifications",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "requested": {
+ "name": "requested",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "domain_blocking": {
+ "name": "domain_blocking",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "endorsed": {
+ "name": "endorsed",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "languages": {
+ "name": "languages",
+ "type": "text[]",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "note": {
+ "name": "note",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "Relationships_ownerId_Users_id_fk": {
+ "name": "Relationships_ownerId_Users_id_fk",
+ "tableFrom": "Relationships",
+ "tableTo": "Users",
+ "columnsFrom": ["ownerId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "Relationships_subjectId_Users_id_fk": {
+ "name": "Relationships_subjectId_Users_id_fk",
+ "tableFrom": "Relationships",
+ "tableTo": "Users",
+ "columnsFrom": ["subjectId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.RoleToUsers": {
+ "name": "RoleToUsers",
+ "schema": "",
+ "columns": {
+ "roleId": {
+ "name": "roleId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "userId": {
+ "name": "userId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "RoleToUsers_roleId_Roles_id_fk": {
+ "name": "RoleToUsers_roleId_Roles_id_fk",
+ "tableFrom": "RoleToUsers",
+ "tableTo": "Roles",
+ "columnsFrom": ["roleId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "RoleToUsers_userId_Users_id_fk": {
+ "name": "RoleToUsers_userId_Users_id_fk",
+ "tableFrom": "RoleToUsers",
+ "tableTo": "Users",
+ "columnsFrom": ["userId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.Roles": {
+ "name": "Roles",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "name": {
+ "name": "name",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "permissions": {
+ "name": "permissions",
+ "type": "text[]",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "priority": {
+ "name": "priority",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "default": 0
+ },
+ "description": {
+ "name": "description",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "visible": {
+ "name": "visible",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true,
+ "default": false
+ },
+ "icon": {
+ "name": "icon",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.Tokens": {
+ "name": "Tokens",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "token_type": {
+ "name": "token_type",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "scope": {
+ "name": "scope",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "access_token": {
+ "name": "access_token",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "code": {
+ "name": "code",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "expires_at": {
+ "name": "expires_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "client_id": {
+ "name": "client_id",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "''"
+ },
+ "redirect_uri": {
+ "name": "redirect_uri",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "''"
+ },
+ "id_token": {
+ "name": "id_token",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "userId": {
+ "name": "userId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "applicationId": {
+ "name": "applicationId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "Tokens_userId_Users_id_fk": {
+ "name": "Tokens_userId_Users_id_fk",
+ "tableFrom": "Tokens",
+ "tableTo": "Users",
+ "columnsFrom": ["userId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "Tokens_applicationId_Applications_id_fk": {
+ "name": "Tokens_applicationId_Applications_id_fk",
+ "tableFrom": "Tokens",
+ "tableTo": "Applications",
+ "columnsFrom": ["applicationId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.UserToPinnedNotes": {
+ "name": "UserToPinnedNotes",
+ "schema": "",
+ "columns": {
+ "userId": {
+ "name": "userId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "noteId": {
+ "name": "noteId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": true
+ }
+ },
+ "indexes": {
+ "UserToPinnedNotes_userId_noteId_index": {
+ "name": "UserToPinnedNotes_userId_noteId_index",
+ "columns": [
+ {
+ "expression": "userId",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ },
+ {
+ "expression": "noteId",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "UserToPinnedNotes_noteId_index": {
+ "name": "UserToPinnedNotes_noteId_index",
+ "columns": [
+ {
+ "expression": "noteId",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "UserToPinnedNotes_userId_Users_id_fk": {
+ "name": "UserToPinnedNotes_userId_Users_id_fk",
+ "tableFrom": "UserToPinnedNotes",
+ "tableTo": "Users",
+ "columnsFrom": ["userId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ },
+ "UserToPinnedNotes_noteId_Notes_id_fk": {
+ "name": "UserToPinnedNotes_noteId_Notes_id_fk",
+ "tableFrom": "UserToPinnedNotes",
+ "tableTo": "Notes",
+ "columnsFrom": ["noteId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {},
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ },
+ "public.Users": {
+ "name": "Users",
+ "schema": "",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "uuid",
+ "primaryKey": true,
+ "notNull": true,
+ "default": "uuid_generate_v7()"
+ },
+ "uri": {
+ "name": "uri",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "username": {
+ "name": "username",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "display_name": {
+ "name": "display_name",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "password": {
+ "name": "password",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "email": {
+ "name": "email",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "note": {
+ "name": "note",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "''"
+ },
+ "is_admin": {
+ "name": "is_admin",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true,
+ "default": false
+ },
+ "email_verification_token": {
+ "name": "email_verification_token",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "password_reset_token": {
+ "name": "password_reset_token",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "fields": {
+ "name": "fields",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "'[]'"
+ },
+ "endpoints": {
+ "name": "endpoints",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "source": {
+ "name": "source",
+ "type": "jsonb",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "avatarId": {
+ "name": "avatarId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "headerId": {
+ "name": "headerId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "created_at": {
+ "name": "created_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "updated_at": {
+ "name": "updated_at",
+ "type": "timestamp(3)",
+ "primaryKey": false,
+ "notNull": true,
+ "default": "now()"
+ },
+ "is_bot": {
+ "name": "is_bot",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true,
+ "default": false
+ },
+ "is_locked": {
+ "name": "is_locked",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true,
+ "default": false
+ },
+ "is_discoverable": {
+ "name": "is_discoverable",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true,
+ "default": false
+ },
+ "is_hiding_collections": {
+ "name": "is_hiding_collections",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true,
+ "default": false
+ },
+ "is_indexable": {
+ "name": "is_indexable",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true,
+ "default": true
+ },
+ "sanctions": {
+ "name": "sanctions",
+ "type": "text[]",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "public_key": {
+ "name": "public_key",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true
+ },
+ "private_key": {
+ "name": "private_key",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "instanceId": {
+ "name": "instanceId",
+ "type": "uuid",
+ "primaryKey": false,
+ "notNull": false
+ },
+ "disable_automoderation": {
+ "name": "disable_automoderation",
+ "type": "boolean",
+ "primaryKey": false,
+ "notNull": true,
+ "default": false
+ }
+ },
+ "indexes": {
+ "Users_uri_index": {
+ "name": "Users_uri_index",
+ "columns": [
+ {
+ "expression": "uri",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "Users_username_index": {
+ "name": "Users_username_index",
+ "columns": [
+ {
+ "expression": "username",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": false,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ },
+ "Users_email_index": {
+ "name": "Users_email_index",
+ "columns": [
+ {
+ "expression": "email",
+ "isExpression": false,
+ "asc": true,
+ "nulls": "last"
+ }
+ ],
+ "isUnique": true,
+ "concurrently": false,
+ "method": "btree",
+ "with": {}
+ }
+ },
+ "foreignKeys": {
+ "Users_avatarId_Medias_id_fk": {
+ "name": "Users_avatarId_Medias_id_fk",
+ "tableFrom": "Users",
+ "tableTo": "Medias",
+ "columnsFrom": ["avatarId"],
+ "columnsTo": ["id"],
+ "onDelete": "set null",
+ "onUpdate": "cascade"
+ },
+ "Users_headerId_Medias_id_fk": {
+ "name": "Users_headerId_Medias_id_fk",
+ "tableFrom": "Users",
+ "tableTo": "Medias",
+ "columnsFrom": ["headerId"],
+ "columnsTo": ["id"],
+ "onDelete": "set null",
+ "onUpdate": "cascade"
+ },
+ "Users_instanceId_Instances_id_fk": {
+ "name": "Users_instanceId_Instances_id_fk",
+ "tableFrom": "Users",
+ "tableTo": "Instances",
+ "columnsFrom": ["instanceId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "cascade"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {
+ "Users_uri_unique": {
+ "name": "Users_uri_unique",
+ "nullsNotDistinct": false,
+ "columns": ["uri"]
+ }
+ },
+ "policies": {},
+ "checkConstraints": {},
+ "isRLSEnabled": false
+ }
+ },
+ "enums": {},
+ "schemas": {},
+ "sequences": {},
+ "roles": {},
+ "policies": {},
+ "views": {},
+ "_meta": {
+ "columns": {},
+ "schemas": {},
+ "tables": {}
+ }
+}
diff --git a/drizzle/migrations/meta/_journal.json b/drizzle/migrations/meta/_journal.json
index f820f501..f2d6c60b 100644
--- a/drizzle/migrations/meta/_journal.json
+++ b/drizzle/migrations/meta/_journal.json
@@ -323,6 +323,20 @@
"when": 1738087527661,
"tag": "0045_polite_mikhail_rasputin",
"breakpoints": true
+ },
+ {
+ "idx": 46,
+ "version": "7",
+ "when": 1743358605315,
+ "tag": "0046_wooden_electro",
+ "breakpoints": true
+ },
+ {
+ "idx": 47,
+ "version": "7",
+ "when": 1743359397906,
+ "tag": "0047_black_vermin",
+ "breakpoints": true
}
]
}
diff --git a/drizzle/schema.ts b/drizzle/schema.ts
index 6459134c..abdbe3b5 100644
--- a/drizzle/schema.ts
+++ b/drizzle/schema.ts
@@ -577,6 +577,10 @@ export const Users = pgTable(
isBot: boolean("is_bot").default(false).notNull(),
isLocked: boolean("is_locked").default(false).notNull(),
isDiscoverable: boolean("is_discoverable").default(false).notNull(),
+ isHidingCollections: boolean("is_hiding_collections")
+ .default(false)
+ .notNull(),
+ isIndexable: boolean("is_indexable").default(true).notNull(),
sanctions: text("sanctions").array(),
publicKey: text("public_key").notNull(),
privateKey: text("private_key"),
diff --git a/packages/client/versia/client.ts b/packages/client/versia/client.ts
index 78be975f..e6e2a26d 100644
--- a/packages/client/versia/client.ts
+++ b/packages/client/versia/client.ts
@@ -3061,6 +3061,8 @@ export class Client extends BaseClient {
}[];
header: File | URL;
locked: boolean;
+ hide_collections: boolean;
+ indexable: boolean;
note: string;
source: Partial<{
language: string;