Initial Commit

This commit is contained in:
2026-10-03 20:07:49 +02:00
commit a1346c98b1
427 changed files with 59320 additions and 0 deletions
@@ -0,0 +1,9 @@
CREATE TABLE `users` (
`id` bigint unsigned AUTO_INCREMENT NOT NULL,
`name` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`password_hash` varchar(255) NOT NULL,
`created_at` timestamp NOT NULL DEFAULT (now()),
CONSTRAINT `users_id` PRIMARY KEY(`id`),
CONSTRAINT `users_email_unique` UNIQUE(`email`)
);
@@ -0,0 +1,37 @@
CREATE TABLE `comments` (
`id` bigint unsigned AUTO_INCREMENT NOT NULL,
`upload_id` bigint unsigned NOT NULL,
`user_id` bigint unsigned NOT NULL,
`content` text NOT NULL,
`created_at` timestamp NOT NULL DEFAULT (now()),
CONSTRAINT `comments_id` PRIMARY KEY(`id`)
);
--> statement-breakpoint
CREATE TABLE `sessions` (
`id` varchar(64) NOT NULL,
`user_id` bigint unsigned NOT NULL,
`expires_at` timestamp NOT NULL,
`created_at` timestamp NOT NULL DEFAULT (now()),
CONSTRAINT `sessions_id` PRIMARY KEY(`id`)
);
--> statement-breakpoint
CREATE TABLE `uploads` (
`id` bigint unsigned AUTO_INCREMENT NOT NULL,
`user_id` bigint unsigned NOT NULL,
`type` enum('image','video') NOT NULL,
`file_name` varchar(255) NOT NULL,
`original_name` varchar(255) NOT NULL,
`mime_type` varchar(100) NOT NULL,
`size` bigint unsigned NOT NULL,
`title` varchar(255),
`created_at` timestamp NOT NULL DEFAULT (now()),
CONSTRAINT `uploads_id` PRIMARY KEY(`id`)
);
--> statement-breakpoint
ALTER TABLE `users` MODIFY COLUMN `name` varchar(50) NOT NULL;--> statement-breakpoint
ALTER TABLE `users` MODIFY COLUMN `email` varchar(255);--> statement-breakpoint
ALTER TABLE `users` ADD CONSTRAINT `users_name_unique` UNIQUE(`name`);--> statement-breakpoint
ALTER TABLE `comments` ADD CONSTRAINT `comments_upload_id_uploads_id_fk` FOREIGN KEY (`upload_id`) REFERENCES `uploads`(`id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE `comments` ADD CONSTRAINT `comments_user_id_users_id_fk` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE `sessions` ADD CONSTRAINT `sessions_user_id_users_id_fk` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE `uploads` ADD CONSTRAINT `uploads_user_id_users_id_fk` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE cascade ON UPDATE no action;
@@ -0,0 +1,18 @@
CREATE TABLE `roles` (
`id` bigint unsigned AUTO_INCREMENT NOT NULL,
`name` varchar(50) NOT NULL,
`created_at` timestamp NOT NULL DEFAULT (now()),
CONSTRAINT `roles_id` PRIMARY KEY(`id`),
CONSTRAINT `roles_name_unique` UNIQUE(`name`)
);
--> statement-breakpoint
CREATE TABLE `user_roles` (
`user_id` bigint unsigned NOT NULL,
`role_id` bigint unsigned NOT NULL,
CONSTRAINT `user_roles_user_id_role_id_pk` PRIMARY KEY(`user_id`,`role_id`)
);
--> statement-breakpoint
ALTER TABLE `user_roles` ADD CONSTRAINT `user_roles_user_id_users_id_fk` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE `user_roles` ADD CONSTRAINT `user_roles_role_id_roles_id_fk` FOREIGN KEY (`role_id`) REFERENCES `roles`(`id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
INSERT INTO `roles` (`name`) VALUES ('admin');--> statement-breakpoint
INSERT IGNORE INTO `user_roles` (`user_id`, `role_id`) SELECT `u`.`id`, `r`.`id` FROM `users` `u`, `roles` `r` WHERE `r`.`name` = 'admin' ORDER BY `u`.`id` LIMIT 1;
+5
View File
@@ -0,0 +1,5 @@
ALTER TABLE `uploads` MODIFY COLUMN `type` enum('image','video','youtube','link') NOT NULL;--> statement-breakpoint
ALTER TABLE `uploads` MODIFY COLUMN `file_name` varchar(255);--> statement-breakpoint
ALTER TABLE `uploads` MODIFY COLUMN `mime_type` varchar(100);--> statement-breakpoint
ALTER TABLE `uploads` MODIFY COLUMN `size` bigint unsigned;--> statement-breakpoint
ALTER TABLE `uploads` ADD `external_url` varchar(2048);
@@ -0,0 +1,4 @@
ALTER TABLE `comments` DROP FOREIGN KEY `comments_upload_id_uploads_id_fk`;--> statement-breakpoint
ALTER TABLE `uploads` MODIFY COLUMN `id` varchar(8) NOT NULL;--> statement-breakpoint
ALTER TABLE `comments` MODIFY COLUMN `upload_id` varchar(8) NOT NULL;--> statement-breakpoint
ALTER TABLE `comments` ADD CONSTRAINT `comments_upload_id_uploads_id_fk` FOREIGN KEY (`upload_id`) REFERENCES `uploads`(`id`) ON DELETE cascade ON UPDATE no action;
@@ -0,0 +1,2 @@
ALTER TABLE `users` ADD `color` varchar(7);--> statement-breakpoint
ALTER TABLE `users` ADD `avatar` varchar(255);
@@ -0,0 +1,9 @@
CREATE TABLE `favorites` (
`user_id` bigint unsigned NOT NULL,
`upload_id` varchar(8) NOT NULL,
`created_at` timestamp NOT NULL DEFAULT (now()),
CONSTRAINT `favorites_user_id_upload_id_pk` PRIMARY KEY(`user_id`,`upload_id`)
);
--> statement-breakpoint
ALTER TABLE `favorites` ADD CONSTRAINT `favorites_user_id_users_id_fk` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE `favorites` ADD CONSTRAINT `favorites_upload_id_uploads_id_fk` FOREIGN KEY (`upload_id`) REFERENCES `uploads`(`id`) ON DELETE cascade ON UPDATE no action;
@@ -0,0 +1,15 @@
CREATE TABLE `notifications` (
`id` bigint unsigned AUTO_INCREMENT NOT NULL,
`user_id` bigint unsigned NOT NULL,
`actor_id` bigint unsigned NOT NULL,
`upload_id` varchar(8) NOT NULL,
`comment_id` bigint unsigned NOT NULL,
`is_read` boolean NOT NULL DEFAULT false,
`created_at` timestamp NOT NULL DEFAULT (now()),
CONSTRAINT `notifications_id` PRIMARY KEY(`id`)
);
--> statement-breakpoint
ALTER TABLE `notifications` ADD CONSTRAINT `notifications_user_id_users_id_fk` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE `notifications` ADD CONSTRAINT `notifications_actor_id_users_id_fk` FOREIGN KEY (`actor_id`) REFERENCES `users`(`id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE `notifications` ADD CONSTRAINT `notifications_upload_id_uploads_id_fk` FOREIGN KEY (`upload_id`) REFERENCES `uploads`(`id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE `notifications` ADD CONSTRAINT `notifications_comment_id_comments_id_fk` FOREIGN KEY (`comment_id`) REFERENCES `comments`(`id`) ON DELETE cascade ON UPDATE no action;
@@ -0,0 +1,2 @@
ALTER TABLE `uploads` ADD `preview_image` varchar(2048);--> statement-breakpoint
ALTER TABLE `uploads` ADD `preview_title` varchar(500);
+8
View File
@@ -0,0 +1,8 @@
CREATE TABLE `link_previews` (
`url_hash` char(64) NOT NULL,
`url` varchar(2048) NOT NULL,
`image` varchar(2048),
`title` varchar(500),
`fetched_at` timestamp NOT NULL DEFAULT (now()),
CONSTRAINT `link_previews_url_hash` PRIMARY KEY(`url_hash`)
);
@@ -0,0 +1,10 @@
CREATE TABLE `comment_reactions` (
`comment_id` bigint unsigned NOT NULL,
`user_id` bigint unsigned NOT NULL,
`emoji` varchar(32) NOT NULL,
`created_at` timestamp NOT NULL DEFAULT (now()),
CONSTRAINT `comment_reactions_comment_id_user_id_emoji_pk` PRIMARY KEY(`comment_id`,`user_id`,`emoji`)
);
--> statement-breakpoint
ALTER TABLE `comment_reactions` ADD CONSTRAINT `comment_reactions_comment_id_comments_id_fk` FOREIGN KEY (`comment_id`) REFERENCES `comments`(`id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE `comment_reactions` ADD CONSTRAINT `comment_reactions_user_id_users_id_fk` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE cascade ON UPDATE no action;
+16
View File
@@ -0,0 +1,16 @@
CREATE TABLE `permissions` (
`id` bigint unsigned AUTO_INCREMENT NOT NULL,
`key` varchar(50) NOT NULL,
`label` varchar(255) NOT NULL,
CONSTRAINT `permissions_id` PRIMARY KEY(`id`),
CONSTRAINT `permissions_key_unique` UNIQUE(`key`)
);
--> statement-breakpoint
CREATE TABLE `role_permissions` (
`role_id` bigint unsigned NOT NULL,
`permission_id` bigint unsigned NOT NULL,
CONSTRAINT `role_permissions_role_id_permission_id_pk` PRIMARY KEY(`role_id`,`permission_id`)
);
--> statement-breakpoint
ALTER TABLE `role_permissions` ADD CONSTRAINT `role_permissions_role_id_roles_id_fk` FOREIGN KEY (`role_id`) REFERENCES `roles`(`id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE `role_permissions` ADD CONSTRAINT `role_permissions_permission_id_permissions_id_fk` FOREIGN KEY (`permission_id`) REFERENCES `permissions`(`id`) ON DELETE cascade ON UPDATE no action;
@@ -0,0 +1 @@
ALTER TABLE `users` ADD `card_effect` varchar(32);
@@ -0,0 +1 @@
ALTER TABLE `users` ADD `card_border_effect` varchar(32);
+1
View File
@@ -0,0 +1 @@
ALTER TABLE `uploads` MODIFY COLUMN `type` enum('image','video','youtube','twitch','link') NOT NULL;
@@ -0,0 +1,16 @@
CREATE TABLE `tags` (
`id` bigint unsigned AUTO_INCREMENT NOT NULL,
`name` varchar(64) NOT NULL,
`created_at` timestamp NOT NULL DEFAULT (now()),
CONSTRAINT `tags_id` PRIMARY KEY(`id`),
CONSTRAINT `tags_name_unique` UNIQUE(`name`)
);
--> statement-breakpoint
CREATE TABLE `upload_tags` (
`upload_id` varchar(8) NOT NULL,
`tag_id` bigint unsigned NOT NULL,
CONSTRAINT `upload_tags_upload_id_tag_id_pk` PRIMARY KEY(`upload_id`,`tag_id`)
);
--> statement-breakpoint
ALTER TABLE `upload_tags` ADD CONSTRAINT `upload_tags_upload_id_uploads_id_fk` FOREIGN KEY (`upload_id`) REFERENCES `uploads`(`id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE `upload_tags` ADD CONSTRAINT `upload_tags_tag_id_tags_id_fk` FOREIGN KEY (`tag_id`) REFERENCES `tags`(`id`) ON DELETE cascade ON UPDATE no action;
@@ -0,0 +1,3 @@
ALTER TABLE `uploads` ADD `comment_count` int unsigned DEFAULT 0 NOT NULL;
--> statement-breakpoint
UPDATE `uploads` u SET `comment_count` = (SELECT COUNT(*) FROM `comments` c WHERE c.`upload_id` = u.`id`);
@@ -0,0 +1,10 @@
CREATE TABLE `upload_reactions` (
`upload_id` varchar(8) NOT NULL,
`user_id` bigint unsigned NOT NULL,
`emoji` varchar(32) NOT NULL,
`created_at` timestamp NOT NULL DEFAULT (now()),
CONSTRAINT `upload_reactions_upload_id_user_id_emoji_pk` PRIMARY KEY(`upload_id`,`user_id`,`emoji`)
);
--> statement-breakpoint
ALTER TABLE `upload_reactions` ADD CONSTRAINT `upload_reactions_upload_id_uploads_id_fk` FOREIGN KEY (`upload_id`) REFERENCES `uploads`(`id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE `upload_reactions` ADD CONSTRAINT `upload_reactions_user_id_users_id_fk` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE cascade ON UPDATE no action;
@@ -0,0 +1 @@
ALTER TABLE `uploads` MODIFY COLUMN `type` enum('image','video','audio','youtube','twitch','link') NOT NULL;
@@ -0,0 +1 @@
ALTER TABLE `uploads` ADD `audio_meta` json;
@@ -0,0 +1,2 @@
ALTER TABLE `users` ADD `card_effect_color` varchar(7);--> statement-breakpoint
ALTER TABLE `users` ADD `card_border_effect_color` varchar(7);
@@ -0,0 +1 @@
ALTER TABLE `users` ADD `card_vignette` boolean DEFAULT false NOT NULL;
@@ -0,0 +1,12 @@
CREATE TABLE `comment_attachments` (
`id` bigint unsigned AUTO_INCREMENT NOT NULL,
`comment_id` bigint unsigned NOT NULL,
`file_name` varchar(255) NOT NULL,
`original_name` varchar(255) NOT NULL,
`mime_type` varchar(100),
`size` bigint unsigned,
`created_at` timestamp NOT NULL DEFAULT (now()),
CONSTRAINT `comment_attachments_id` PRIMARY KEY(`id`)
);
--> statement-breakpoint
ALTER TABLE `comment_attachments` ADD CONSTRAINT `comment_attachments_comment_id_comments_id_fk` FOREIGN KEY (`comment_id`) REFERENCES `comments`(`id`) ON DELETE cascade ON UPDATE no action;
+2
View File
@@ -0,0 +1,2 @@
ALTER TABLE `comment_attachments` ADD `cover` varchar(2048);--> statement-breakpoint
ALTER TABLE `comment_attachments` ADD `meta` json;
@@ -0,0 +1,5 @@
CREATE TABLE `settings` (
`key` varchar(100) NOT NULL,
`value` text,
CONSTRAINT `settings_key` PRIMARY KEY(`key`)
);
@@ -0,0 +1,19 @@
CREATE TABLE `thread_subscriptions` (
`upload_id` varchar(8) NOT NULL,
`user_id` bigint unsigned NOT NULL,
`enabled` boolean NOT NULL DEFAULT true,
`created_at` timestamp NOT NULL DEFAULT (now()),
CONSTRAINT `thread_subscriptions_upload_id_user_id_pk` PRIMARY KEY(`upload_id`,`user_id`)
);
--> statement-breakpoint
ALTER TABLE `thread_subscriptions` ADD CONSTRAINT `thread_subscriptions_upload_id_uploads_id_fk` FOREIGN KEY (`upload_id`) REFERENCES `uploads`(`id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE `thread_subscriptions` ADD CONSTRAINT `thread_subscriptions_user_id_users_id_fk` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE cascade ON UPDATE no action;
--> statement-breakpoint
INSERT INTO `thread_subscriptions` (`upload_id`, `user_id`)
SELECT `id`, `user_id` FROM `uploads`
UNION
SELECT `upload_id`, `user_id` FROM `comments`
UNION
SELECT `upload_id`, `user_id` FROM `favorites`
UNION
SELECT `upload_id`, `user_id` FROM `upload_reactions`;
@@ -0,0 +1,78 @@
{
"version": "5",
"dialect": "mysql",
"id": "09d8b567-8356-447d-937d-af1911a4a8e2",
"prevId": "00000000-0000-0000-0000-000000000000",
"tables": {
"users": {
"name": "users",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"name": {
"name": "name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"email": {
"name": "email",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"password_hash": {
"name": "password_hash",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"users_id": {
"name": "users_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"users_email_unique": {
"name": "users_email_unique",
"columns": [
"email"
]
}
},
"checkConstraint": {}
}
},
"views": {},
"_meta": {
"schemas": {},
"tables": {},
"columns": {}
},
"internal": {
"tables": {},
"indexes": {}
}
}
@@ -0,0 +1,319 @@
{
"version": "5",
"dialect": "mysql",
"id": "00af97be-75c3-4edf-a0da-5f2f5c843557",
"prevId": "09d8b567-8356-447d-937d-af1911a4a8e2",
"tables": {
"comments": {
"name": "comments",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"upload_id": {
"name": "upload_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"content": {
"name": "content",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"comments_upload_id_uploads_id_fk": {
"name": "comments_upload_id_uploads_id_fk",
"tableFrom": "comments",
"tableTo": "uploads",
"columnsFrom": [
"upload_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"comments_user_id_users_id_fk": {
"name": "comments_user_id_users_id_fk",
"tableFrom": "comments",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"comments_id": {
"name": "comments_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"sessions": {
"name": "sessions",
"columns": {
"id": {
"name": "id",
"type": "varchar(64)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"expires_at": {
"name": "expires_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"sessions_user_id_users_id_fk": {
"name": "sessions_user_id_users_id_fk",
"tableFrom": "sessions",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"sessions_id": {
"name": "sessions_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"uploads": {
"name": "uploads",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"type": {
"name": "type",
"type": "enum('image','video')",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"file_name": {
"name": "file_name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"original_name": {
"name": "original_name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"mime_type": {
"name": "mime_type",
"type": "varchar(100)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"size": {
"name": "size",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"title": {
"name": "title",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"uploads_user_id_users_id_fk": {
"name": "uploads_user_id_users_id_fk",
"tableFrom": "uploads",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"uploads_id": {
"name": "uploads_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"users": {
"name": "users",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"name": {
"name": "name",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"email": {
"name": "email",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"password_hash": {
"name": "password_hash",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"users_id": {
"name": "users_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"users_name_unique": {
"name": "users_name_unique",
"columns": [
"name"
]
},
"users_email_unique": {
"name": "users_email_unique",
"columns": [
"email"
]
}
},
"checkConstraint": {}
}
},
"views": {},
"_meta": {
"schemas": {},
"tables": {},
"columns": {}
},
"internal": {
"tables": {},
"indexes": {}
}
}
@@ -0,0 +1,424 @@
{
"version": "5",
"dialect": "mysql",
"id": "8f3b34de-8887-41ec-b26a-1e1483cb10a9",
"prevId": "00af97be-75c3-4edf-a0da-5f2f5c843557",
"tables": {
"comments": {
"name": "comments",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"upload_id": {
"name": "upload_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"content": {
"name": "content",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"comments_upload_id_uploads_id_fk": {
"name": "comments_upload_id_uploads_id_fk",
"tableFrom": "comments",
"tableTo": "uploads",
"columnsFrom": [
"upload_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"comments_user_id_users_id_fk": {
"name": "comments_user_id_users_id_fk",
"tableFrom": "comments",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"comments_id": {
"name": "comments_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"roles": {
"name": "roles",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"name": {
"name": "name",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"roles_id": {
"name": "roles_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"roles_name_unique": {
"name": "roles_name_unique",
"columns": [
"name"
]
}
},
"checkConstraint": {}
},
"sessions": {
"name": "sessions",
"columns": {
"id": {
"name": "id",
"type": "varchar(64)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"expires_at": {
"name": "expires_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"sessions_user_id_users_id_fk": {
"name": "sessions_user_id_users_id_fk",
"tableFrom": "sessions",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"sessions_id": {
"name": "sessions_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"uploads": {
"name": "uploads",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"type": {
"name": "type",
"type": "enum('image','video')",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"file_name": {
"name": "file_name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"original_name": {
"name": "original_name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"mime_type": {
"name": "mime_type",
"type": "varchar(100)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"size": {
"name": "size",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"title": {
"name": "title",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"uploads_user_id_users_id_fk": {
"name": "uploads_user_id_users_id_fk",
"tableFrom": "uploads",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"uploads_id": {
"name": "uploads_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"user_roles": {
"name": "user_roles",
"columns": {
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"role_id": {
"name": "role_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {
"user_roles_user_id_users_id_fk": {
"name": "user_roles_user_id_users_id_fk",
"tableFrom": "user_roles",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"user_roles_role_id_roles_id_fk": {
"name": "user_roles_role_id_roles_id_fk",
"tableFrom": "user_roles",
"tableTo": "roles",
"columnsFrom": [
"role_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"user_roles_user_id_role_id_pk": {
"name": "user_roles_user_id_role_id_pk",
"columns": [
"user_id",
"role_id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"users": {
"name": "users",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"name": {
"name": "name",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"email": {
"name": "email",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"password_hash": {
"name": "password_hash",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"users_id": {
"name": "users_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"users_name_unique": {
"name": "users_name_unique",
"columns": [
"name"
]
},
"users_email_unique": {
"name": "users_email_unique",
"columns": [
"email"
]
}
},
"checkConstraint": {}
}
},
"views": {},
"_meta": {
"schemas": {},
"tables": {},
"columns": {}
},
"internal": {
"tables": {},
"indexes": {}
}
}
@@ -0,0 +1,431 @@
{
"version": "5",
"dialect": "mysql",
"id": "5e677494-4bb8-4a04-8d5a-903e9039e915",
"prevId": "8f3b34de-8887-41ec-b26a-1e1483cb10a9",
"tables": {
"comments": {
"name": "comments",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"upload_id": {
"name": "upload_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"content": {
"name": "content",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"comments_upload_id_uploads_id_fk": {
"name": "comments_upload_id_uploads_id_fk",
"tableFrom": "comments",
"tableTo": "uploads",
"columnsFrom": [
"upload_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"comments_user_id_users_id_fk": {
"name": "comments_user_id_users_id_fk",
"tableFrom": "comments",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"comments_id": {
"name": "comments_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"roles": {
"name": "roles",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"name": {
"name": "name",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"roles_id": {
"name": "roles_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"roles_name_unique": {
"name": "roles_name_unique",
"columns": [
"name"
]
}
},
"checkConstraint": {}
},
"sessions": {
"name": "sessions",
"columns": {
"id": {
"name": "id",
"type": "varchar(64)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"expires_at": {
"name": "expires_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"sessions_user_id_users_id_fk": {
"name": "sessions_user_id_users_id_fk",
"tableFrom": "sessions",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"sessions_id": {
"name": "sessions_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"uploads": {
"name": "uploads",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"type": {
"name": "type",
"type": "enum('image','video','youtube','link')",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"file_name": {
"name": "file_name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"external_url": {
"name": "external_url",
"type": "varchar(2048)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"original_name": {
"name": "original_name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"mime_type": {
"name": "mime_type",
"type": "varchar(100)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"size": {
"name": "size",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"title": {
"name": "title",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"uploads_user_id_users_id_fk": {
"name": "uploads_user_id_users_id_fk",
"tableFrom": "uploads",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"uploads_id": {
"name": "uploads_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"user_roles": {
"name": "user_roles",
"columns": {
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"role_id": {
"name": "role_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {
"user_roles_user_id_users_id_fk": {
"name": "user_roles_user_id_users_id_fk",
"tableFrom": "user_roles",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"user_roles_role_id_roles_id_fk": {
"name": "user_roles_role_id_roles_id_fk",
"tableFrom": "user_roles",
"tableTo": "roles",
"columnsFrom": [
"role_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"user_roles_user_id_role_id_pk": {
"name": "user_roles_user_id_role_id_pk",
"columns": [
"user_id",
"role_id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"users": {
"name": "users",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"name": {
"name": "name",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"email": {
"name": "email",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"password_hash": {
"name": "password_hash",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"users_id": {
"name": "users_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"users_name_unique": {
"name": "users_name_unique",
"columns": [
"name"
]
},
"users_email_unique": {
"name": "users_email_unique",
"columns": [
"email"
]
}
},
"checkConstraint": {}
}
},
"views": {},
"_meta": {
"schemas": {},
"tables": {},
"columns": {}
},
"internal": {
"tables": {},
"indexes": {}
}
}
@@ -0,0 +1,431 @@
{
"version": "5",
"dialect": "mysql",
"id": "b62a4f15-402f-4deb-93d7-46a6e702a3a8",
"prevId": "5e677494-4bb8-4a04-8d5a-903e9039e915",
"tables": {
"comments": {
"name": "comments",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"upload_id": {
"name": "upload_id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"content": {
"name": "content",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"comments_upload_id_uploads_id_fk": {
"name": "comments_upload_id_uploads_id_fk",
"tableFrom": "comments",
"tableTo": "uploads",
"columnsFrom": [
"upload_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"comments_user_id_users_id_fk": {
"name": "comments_user_id_users_id_fk",
"tableFrom": "comments",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"comments_id": {
"name": "comments_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"roles": {
"name": "roles",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"name": {
"name": "name",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"roles_id": {
"name": "roles_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"roles_name_unique": {
"name": "roles_name_unique",
"columns": [
"name"
]
}
},
"checkConstraint": {}
},
"sessions": {
"name": "sessions",
"columns": {
"id": {
"name": "id",
"type": "varchar(64)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"expires_at": {
"name": "expires_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"sessions_user_id_users_id_fk": {
"name": "sessions_user_id_users_id_fk",
"tableFrom": "sessions",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"sessions_id": {
"name": "sessions_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"uploads": {
"name": "uploads",
"columns": {
"id": {
"name": "id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"type": {
"name": "type",
"type": "enum('image','video','youtube','link')",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"file_name": {
"name": "file_name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"external_url": {
"name": "external_url",
"type": "varchar(2048)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"original_name": {
"name": "original_name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"mime_type": {
"name": "mime_type",
"type": "varchar(100)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"size": {
"name": "size",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"title": {
"name": "title",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"uploads_user_id_users_id_fk": {
"name": "uploads_user_id_users_id_fk",
"tableFrom": "uploads",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"uploads_id": {
"name": "uploads_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"user_roles": {
"name": "user_roles",
"columns": {
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"role_id": {
"name": "role_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {
"user_roles_user_id_users_id_fk": {
"name": "user_roles_user_id_users_id_fk",
"tableFrom": "user_roles",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"user_roles_role_id_roles_id_fk": {
"name": "user_roles_role_id_roles_id_fk",
"tableFrom": "user_roles",
"tableTo": "roles",
"columnsFrom": [
"role_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"user_roles_user_id_role_id_pk": {
"name": "user_roles_user_id_role_id_pk",
"columns": [
"user_id",
"role_id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"users": {
"name": "users",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"name": {
"name": "name",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"email": {
"name": "email",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"password_hash": {
"name": "password_hash",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"users_id": {
"name": "users_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"users_name_unique": {
"name": "users_name_unique",
"columns": [
"name"
]
},
"users_email_unique": {
"name": "users_email_unique",
"columns": [
"email"
]
}
},
"checkConstraint": {}
}
},
"views": {},
"_meta": {
"schemas": {},
"tables": {},
"columns": {}
},
"internal": {
"tables": {},
"indexes": {}
}
}
@@ -0,0 +1,445 @@
{
"version": "5",
"dialect": "mysql",
"id": "9843a268-2e96-477a-b171-f86e524f01a1",
"prevId": "b62a4f15-402f-4deb-93d7-46a6e702a3a8",
"tables": {
"comments": {
"name": "comments",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"upload_id": {
"name": "upload_id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"content": {
"name": "content",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"comments_upload_id_uploads_id_fk": {
"name": "comments_upload_id_uploads_id_fk",
"tableFrom": "comments",
"tableTo": "uploads",
"columnsFrom": [
"upload_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"comments_user_id_users_id_fk": {
"name": "comments_user_id_users_id_fk",
"tableFrom": "comments",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"comments_id": {
"name": "comments_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"roles": {
"name": "roles",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"name": {
"name": "name",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"roles_id": {
"name": "roles_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"roles_name_unique": {
"name": "roles_name_unique",
"columns": [
"name"
]
}
},
"checkConstraint": {}
},
"sessions": {
"name": "sessions",
"columns": {
"id": {
"name": "id",
"type": "varchar(64)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"expires_at": {
"name": "expires_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"sessions_user_id_users_id_fk": {
"name": "sessions_user_id_users_id_fk",
"tableFrom": "sessions",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"sessions_id": {
"name": "sessions_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"uploads": {
"name": "uploads",
"columns": {
"id": {
"name": "id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"type": {
"name": "type",
"type": "enum('image','video','youtube','link')",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"file_name": {
"name": "file_name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"external_url": {
"name": "external_url",
"type": "varchar(2048)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"original_name": {
"name": "original_name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"mime_type": {
"name": "mime_type",
"type": "varchar(100)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"size": {
"name": "size",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"title": {
"name": "title",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"uploads_user_id_users_id_fk": {
"name": "uploads_user_id_users_id_fk",
"tableFrom": "uploads",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"uploads_id": {
"name": "uploads_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"user_roles": {
"name": "user_roles",
"columns": {
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"role_id": {
"name": "role_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {
"user_roles_user_id_users_id_fk": {
"name": "user_roles_user_id_users_id_fk",
"tableFrom": "user_roles",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"user_roles_role_id_roles_id_fk": {
"name": "user_roles_role_id_roles_id_fk",
"tableFrom": "user_roles",
"tableTo": "roles",
"columnsFrom": [
"role_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"user_roles_user_id_role_id_pk": {
"name": "user_roles_user_id_role_id_pk",
"columns": [
"user_id",
"role_id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"users": {
"name": "users",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"name": {
"name": "name",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"email": {
"name": "email",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"password_hash": {
"name": "password_hash",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"color": {
"name": "color",
"type": "varchar(7)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"avatar": {
"name": "avatar",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"users_id": {
"name": "users_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"users_name_unique": {
"name": "users_name_unique",
"columns": [
"name"
]
},
"users_email_unique": {
"name": "users_email_unique",
"columns": [
"email"
]
}
},
"checkConstraint": {}
}
},
"views": {},
"_meta": {
"schemas": {},
"tables": {},
"columns": {}
},
"internal": {
"tables": {},
"indexes": {}
}
}
@@ -0,0 +1,512 @@
{
"version": "5",
"dialect": "mysql",
"id": "b7c2cac9-a612-4d12-b0ab-8d5b77fb51f1",
"prevId": "9843a268-2e96-477a-b171-f86e524f01a1",
"tables": {
"comments": {
"name": "comments",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"upload_id": {
"name": "upload_id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"content": {
"name": "content",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"comments_upload_id_uploads_id_fk": {
"name": "comments_upload_id_uploads_id_fk",
"tableFrom": "comments",
"tableTo": "uploads",
"columnsFrom": [
"upload_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"comments_user_id_users_id_fk": {
"name": "comments_user_id_users_id_fk",
"tableFrom": "comments",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"comments_id": {
"name": "comments_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"favorites": {
"name": "favorites",
"columns": {
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"upload_id": {
"name": "upload_id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"favorites_user_id_users_id_fk": {
"name": "favorites_user_id_users_id_fk",
"tableFrom": "favorites",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"favorites_upload_id_uploads_id_fk": {
"name": "favorites_upload_id_uploads_id_fk",
"tableFrom": "favorites",
"tableTo": "uploads",
"columnsFrom": [
"upload_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"favorites_user_id_upload_id_pk": {
"name": "favorites_user_id_upload_id_pk",
"columns": [
"user_id",
"upload_id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"roles": {
"name": "roles",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"name": {
"name": "name",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"roles_id": {
"name": "roles_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"roles_name_unique": {
"name": "roles_name_unique",
"columns": [
"name"
]
}
},
"checkConstraint": {}
},
"sessions": {
"name": "sessions",
"columns": {
"id": {
"name": "id",
"type": "varchar(64)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"expires_at": {
"name": "expires_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"sessions_user_id_users_id_fk": {
"name": "sessions_user_id_users_id_fk",
"tableFrom": "sessions",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"sessions_id": {
"name": "sessions_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"uploads": {
"name": "uploads",
"columns": {
"id": {
"name": "id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"type": {
"name": "type",
"type": "enum('image','video','youtube','link')",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"file_name": {
"name": "file_name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"external_url": {
"name": "external_url",
"type": "varchar(2048)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"original_name": {
"name": "original_name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"mime_type": {
"name": "mime_type",
"type": "varchar(100)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"size": {
"name": "size",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"title": {
"name": "title",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"uploads_user_id_users_id_fk": {
"name": "uploads_user_id_users_id_fk",
"tableFrom": "uploads",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"uploads_id": {
"name": "uploads_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"user_roles": {
"name": "user_roles",
"columns": {
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"role_id": {
"name": "role_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {
"user_roles_user_id_users_id_fk": {
"name": "user_roles_user_id_users_id_fk",
"tableFrom": "user_roles",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"user_roles_role_id_roles_id_fk": {
"name": "user_roles_role_id_roles_id_fk",
"tableFrom": "user_roles",
"tableTo": "roles",
"columnsFrom": [
"role_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"user_roles_user_id_role_id_pk": {
"name": "user_roles_user_id_role_id_pk",
"columns": [
"user_id",
"role_id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"users": {
"name": "users",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"name": {
"name": "name",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"email": {
"name": "email",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"password_hash": {
"name": "password_hash",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"color": {
"name": "color",
"type": "varchar(7)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"avatar": {
"name": "avatar",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"users_id": {
"name": "users_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"users_name_unique": {
"name": "users_name_unique",
"columns": [
"name"
]
},
"users_email_unique": {
"name": "users_email_unique",
"columns": [
"email"
]
}
},
"checkConstraint": {}
}
},
"views": {},
"_meta": {
"schemas": {},
"tables": {},
"columns": {}
},
"internal": {
"tables": {},
"indexes": {}
}
}
@@ -0,0 +1,633 @@
{
"version": "5",
"dialect": "mysql",
"id": "c07cfc65-aada-4595-a8d1-4736c858c104",
"prevId": "b7c2cac9-a612-4d12-b0ab-8d5b77fb51f1",
"tables": {
"comments": {
"name": "comments",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"upload_id": {
"name": "upload_id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"content": {
"name": "content",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"comments_upload_id_uploads_id_fk": {
"name": "comments_upload_id_uploads_id_fk",
"tableFrom": "comments",
"tableTo": "uploads",
"columnsFrom": [
"upload_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"comments_user_id_users_id_fk": {
"name": "comments_user_id_users_id_fk",
"tableFrom": "comments",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"comments_id": {
"name": "comments_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"favorites": {
"name": "favorites",
"columns": {
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"upload_id": {
"name": "upload_id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"favorites_user_id_users_id_fk": {
"name": "favorites_user_id_users_id_fk",
"tableFrom": "favorites",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"favorites_upload_id_uploads_id_fk": {
"name": "favorites_upload_id_uploads_id_fk",
"tableFrom": "favorites",
"tableTo": "uploads",
"columnsFrom": [
"upload_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"favorites_user_id_upload_id_pk": {
"name": "favorites_user_id_upload_id_pk",
"columns": [
"user_id",
"upload_id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"notifications": {
"name": "notifications",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"actor_id": {
"name": "actor_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"upload_id": {
"name": "upload_id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"comment_id": {
"name": "comment_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"is_read": {
"name": "is_read",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"notifications_user_id_users_id_fk": {
"name": "notifications_user_id_users_id_fk",
"tableFrom": "notifications",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"notifications_actor_id_users_id_fk": {
"name": "notifications_actor_id_users_id_fk",
"tableFrom": "notifications",
"tableTo": "users",
"columnsFrom": [
"actor_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"notifications_upload_id_uploads_id_fk": {
"name": "notifications_upload_id_uploads_id_fk",
"tableFrom": "notifications",
"tableTo": "uploads",
"columnsFrom": [
"upload_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"notifications_comment_id_comments_id_fk": {
"name": "notifications_comment_id_comments_id_fk",
"tableFrom": "notifications",
"tableTo": "comments",
"columnsFrom": [
"comment_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"notifications_id": {
"name": "notifications_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"roles": {
"name": "roles",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"name": {
"name": "name",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"roles_id": {
"name": "roles_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"roles_name_unique": {
"name": "roles_name_unique",
"columns": [
"name"
]
}
},
"checkConstraint": {}
},
"sessions": {
"name": "sessions",
"columns": {
"id": {
"name": "id",
"type": "varchar(64)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"expires_at": {
"name": "expires_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"sessions_user_id_users_id_fk": {
"name": "sessions_user_id_users_id_fk",
"tableFrom": "sessions",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"sessions_id": {
"name": "sessions_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"uploads": {
"name": "uploads",
"columns": {
"id": {
"name": "id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"type": {
"name": "type",
"type": "enum('image','video','youtube','link')",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"file_name": {
"name": "file_name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"external_url": {
"name": "external_url",
"type": "varchar(2048)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"original_name": {
"name": "original_name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"mime_type": {
"name": "mime_type",
"type": "varchar(100)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"size": {
"name": "size",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"title": {
"name": "title",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"uploads_user_id_users_id_fk": {
"name": "uploads_user_id_users_id_fk",
"tableFrom": "uploads",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"uploads_id": {
"name": "uploads_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"user_roles": {
"name": "user_roles",
"columns": {
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"role_id": {
"name": "role_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {
"user_roles_user_id_users_id_fk": {
"name": "user_roles_user_id_users_id_fk",
"tableFrom": "user_roles",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"user_roles_role_id_roles_id_fk": {
"name": "user_roles_role_id_roles_id_fk",
"tableFrom": "user_roles",
"tableTo": "roles",
"columnsFrom": [
"role_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"user_roles_user_id_role_id_pk": {
"name": "user_roles_user_id_role_id_pk",
"columns": [
"user_id",
"role_id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"users": {
"name": "users",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"name": {
"name": "name",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"email": {
"name": "email",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"password_hash": {
"name": "password_hash",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"color": {
"name": "color",
"type": "varchar(7)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"avatar": {
"name": "avatar",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"users_id": {
"name": "users_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"users_name_unique": {
"name": "users_name_unique",
"columns": [
"name"
]
},
"users_email_unique": {
"name": "users_email_unique",
"columns": [
"email"
]
}
},
"checkConstraint": {}
}
},
"views": {},
"_meta": {
"schemas": {},
"tables": {},
"columns": {}
},
"internal": {
"tables": {},
"indexes": {}
}
}
@@ -0,0 +1,647 @@
{
"version": "5",
"dialect": "mysql",
"id": "31523494-9f1f-4a98-a7fd-d89eb6c6dcb9",
"prevId": "c07cfc65-aada-4595-a8d1-4736c858c104",
"tables": {
"comments": {
"name": "comments",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"upload_id": {
"name": "upload_id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"content": {
"name": "content",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"comments_upload_id_uploads_id_fk": {
"name": "comments_upload_id_uploads_id_fk",
"tableFrom": "comments",
"tableTo": "uploads",
"columnsFrom": [
"upload_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"comments_user_id_users_id_fk": {
"name": "comments_user_id_users_id_fk",
"tableFrom": "comments",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"comments_id": {
"name": "comments_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"favorites": {
"name": "favorites",
"columns": {
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"upload_id": {
"name": "upload_id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"favorites_user_id_users_id_fk": {
"name": "favorites_user_id_users_id_fk",
"tableFrom": "favorites",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"favorites_upload_id_uploads_id_fk": {
"name": "favorites_upload_id_uploads_id_fk",
"tableFrom": "favorites",
"tableTo": "uploads",
"columnsFrom": [
"upload_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"favorites_user_id_upload_id_pk": {
"name": "favorites_user_id_upload_id_pk",
"columns": [
"user_id",
"upload_id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"notifications": {
"name": "notifications",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"actor_id": {
"name": "actor_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"upload_id": {
"name": "upload_id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"comment_id": {
"name": "comment_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"is_read": {
"name": "is_read",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"notifications_user_id_users_id_fk": {
"name": "notifications_user_id_users_id_fk",
"tableFrom": "notifications",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"notifications_actor_id_users_id_fk": {
"name": "notifications_actor_id_users_id_fk",
"tableFrom": "notifications",
"tableTo": "users",
"columnsFrom": [
"actor_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"notifications_upload_id_uploads_id_fk": {
"name": "notifications_upload_id_uploads_id_fk",
"tableFrom": "notifications",
"tableTo": "uploads",
"columnsFrom": [
"upload_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"notifications_comment_id_comments_id_fk": {
"name": "notifications_comment_id_comments_id_fk",
"tableFrom": "notifications",
"tableTo": "comments",
"columnsFrom": [
"comment_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"notifications_id": {
"name": "notifications_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"roles": {
"name": "roles",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"name": {
"name": "name",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"roles_id": {
"name": "roles_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"roles_name_unique": {
"name": "roles_name_unique",
"columns": [
"name"
]
}
},
"checkConstraint": {}
},
"sessions": {
"name": "sessions",
"columns": {
"id": {
"name": "id",
"type": "varchar(64)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"expires_at": {
"name": "expires_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"sessions_user_id_users_id_fk": {
"name": "sessions_user_id_users_id_fk",
"tableFrom": "sessions",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"sessions_id": {
"name": "sessions_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"uploads": {
"name": "uploads",
"columns": {
"id": {
"name": "id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"type": {
"name": "type",
"type": "enum('image','video','youtube','link')",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"file_name": {
"name": "file_name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"external_url": {
"name": "external_url",
"type": "varchar(2048)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"original_name": {
"name": "original_name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"mime_type": {
"name": "mime_type",
"type": "varchar(100)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"size": {
"name": "size",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"title": {
"name": "title",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"preview_image": {
"name": "preview_image",
"type": "varchar(2048)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"preview_title": {
"name": "preview_title",
"type": "varchar(500)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"uploads_user_id_users_id_fk": {
"name": "uploads_user_id_users_id_fk",
"tableFrom": "uploads",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"uploads_id": {
"name": "uploads_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"user_roles": {
"name": "user_roles",
"columns": {
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"role_id": {
"name": "role_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {
"user_roles_user_id_users_id_fk": {
"name": "user_roles_user_id_users_id_fk",
"tableFrom": "user_roles",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"user_roles_role_id_roles_id_fk": {
"name": "user_roles_role_id_roles_id_fk",
"tableFrom": "user_roles",
"tableTo": "roles",
"columnsFrom": [
"role_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"user_roles_user_id_role_id_pk": {
"name": "user_roles_user_id_role_id_pk",
"columns": [
"user_id",
"role_id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"users": {
"name": "users",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"name": {
"name": "name",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"email": {
"name": "email",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"password_hash": {
"name": "password_hash",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"color": {
"name": "color",
"type": "varchar(7)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"avatar": {
"name": "avatar",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"users_id": {
"name": "users_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"users_name_unique": {
"name": "users_name_unique",
"columns": [
"name"
]
},
"users_email_unique": {
"name": "users_email_unique",
"columns": [
"email"
]
}
},
"checkConstraint": {}
}
},
"views": {},
"_meta": {
"schemas": {},
"tables": {},
"columns": {}
},
"internal": {
"tables": {},
"indexes": {}
}
}
@@ -0,0 +1,700 @@
{
"version": "5",
"dialect": "mysql",
"id": "d7e55315-bf9d-4a0e-a4b2-fd892746c61e",
"prevId": "31523494-9f1f-4a98-a7fd-d89eb6c6dcb9",
"tables": {
"comments": {
"name": "comments",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"upload_id": {
"name": "upload_id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"content": {
"name": "content",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"comments_upload_id_uploads_id_fk": {
"name": "comments_upload_id_uploads_id_fk",
"tableFrom": "comments",
"tableTo": "uploads",
"columnsFrom": [
"upload_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"comments_user_id_users_id_fk": {
"name": "comments_user_id_users_id_fk",
"tableFrom": "comments",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"comments_id": {
"name": "comments_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"favorites": {
"name": "favorites",
"columns": {
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"upload_id": {
"name": "upload_id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"favorites_user_id_users_id_fk": {
"name": "favorites_user_id_users_id_fk",
"tableFrom": "favorites",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"favorites_upload_id_uploads_id_fk": {
"name": "favorites_upload_id_uploads_id_fk",
"tableFrom": "favorites",
"tableTo": "uploads",
"columnsFrom": [
"upload_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"favorites_user_id_upload_id_pk": {
"name": "favorites_user_id_upload_id_pk",
"columns": [
"user_id",
"upload_id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"link_previews": {
"name": "link_previews",
"columns": {
"url_hash": {
"name": "url_hash",
"type": "char(64)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"url": {
"name": "url",
"type": "varchar(2048)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"image": {
"name": "image",
"type": "varchar(2048)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"title": {
"name": "title",
"type": "varchar(500)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"fetched_at": {
"name": "fetched_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"link_previews_url_hash": {
"name": "link_previews_url_hash",
"columns": [
"url_hash"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"notifications": {
"name": "notifications",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"actor_id": {
"name": "actor_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"upload_id": {
"name": "upload_id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"comment_id": {
"name": "comment_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"is_read": {
"name": "is_read",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"notifications_user_id_users_id_fk": {
"name": "notifications_user_id_users_id_fk",
"tableFrom": "notifications",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"notifications_actor_id_users_id_fk": {
"name": "notifications_actor_id_users_id_fk",
"tableFrom": "notifications",
"tableTo": "users",
"columnsFrom": [
"actor_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"notifications_upload_id_uploads_id_fk": {
"name": "notifications_upload_id_uploads_id_fk",
"tableFrom": "notifications",
"tableTo": "uploads",
"columnsFrom": [
"upload_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"notifications_comment_id_comments_id_fk": {
"name": "notifications_comment_id_comments_id_fk",
"tableFrom": "notifications",
"tableTo": "comments",
"columnsFrom": [
"comment_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"notifications_id": {
"name": "notifications_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"roles": {
"name": "roles",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"name": {
"name": "name",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"roles_id": {
"name": "roles_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"roles_name_unique": {
"name": "roles_name_unique",
"columns": [
"name"
]
}
},
"checkConstraint": {}
},
"sessions": {
"name": "sessions",
"columns": {
"id": {
"name": "id",
"type": "varchar(64)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"expires_at": {
"name": "expires_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"sessions_user_id_users_id_fk": {
"name": "sessions_user_id_users_id_fk",
"tableFrom": "sessions",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"sessions_id": {
"name": "sessions_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"uploads": {
"name": "uploads",
"columns": {
"id": {
"name": "id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"type": {
"name": "type",
"type": "enum('image','video','youtube','link')",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"file_name": {
"name": "file_name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"external_url": {
"name": "external_url",
"type": "varchar(2048)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"original_name": {
"name": "original_name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"mime_type": {
"name": "mime_type",
"type": "varchar(100)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"size": {
"name": "size",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"title": {
"name": "title",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"preview_image": {
"name": "preview_image",
"type": "varchar(2048)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"preview_title": {
"name": "preview_title",
"type": "varchar(500)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"uploads_user_id_users_id_fk": {
"name": "uploads_user_id_users_id_fk",
"tableFrom": "uploads",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"uploads_id": {
"name": "uploads_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"user_roles": {
"name": "user_roles",
"columns": {
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"role_id": {
"name": "role_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {
"user_roles_user_id_users_id_fk": {
"name": "user_roles_user_id_users_id_fk",
"tableFrom": "user_roles",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"user_roles_role_id_roles_id_fk": {
"name": "user_roles_role_id_roles_id_fk",
"tableFrom": "user_roles",
"tableTo": "roles",
"columnsFrom": [
"role_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"user_roles_user_id_role_id_pk": {
"name": "user_roles_user_id_role_id_pk",
"columns": [
"user_id",
"role_id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"users": {
"name": "users",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"name": {
"name": "name",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"email": {
"name": "email",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"password_hash": {
"name": "password_hash",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"color": {
"name": "color",
"type": "varchar(7)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"avatar": {
"name": "avatar",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"users_id": {
"name": "users_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"users_name_unique": {
"name": "users_name_unique",
"columns": [
"name"
]
},
"users_email_unique": {
"name": "users_email_unique",
"columns": [
"email"
]
}
},
"checkConstraint": {}
}
},
"views": {},
"_meta": {
"schemas": {},
"tables": {},
"columns": {}
},
"internal": {
"tables": {},
"indexes": {}
}
}
@@ -0,0 +1,775 @@
{
"version": "5",
"dialect": "mysql",
"id": "b32b6b4b-df8f-470e-a46e-24bd192f8970",
"prevId": "d7e55315-bf9d-4a0e-a4b2-fd892746c61e",
"tables": {
"comment_reactions": {
"name": "comment_reactions",
"columns": {
"comment_id": {
"name": "comment_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"emoji": {
"name": "emoji",
"type": "varchar(32)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"comment_reactions_comment_id_comments_id_fk": {
"name": "comment_reactions_comment_id_comments_id_fk",
"tableFrom": "comment_reactions",
"tableTo": "comments",
"columnsFrom": [
"comment_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"comment_reactions_user_id_users_id_fk": {
"name": "comment_reactions_user_id_users_id_fk",
"tableFrom": "comment_reactions",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"comment_reactions_comment_id_user_id_emoji_pk": {
"name": "comment_reactions_comment_id_user_id_emoji_pk",
"columns": [
"comment_id",
"user_id",
"emoji"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"comments": {
"name": "comments",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"upload_id": {
"name": "upload_id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"content": {
"name": "content",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"comments_upload_id_uploads_id_fk": {
"name": "comments_upload_id_uploads_id_fk",
"tableFrom": "comments",
"tableTo": "uploads",
"columnsFrom": [
"upload_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"comments_user_id_users_id_fk": {
"name": "comments_user_id_users_id_fk",
"tableFrom": "comments",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"comments_id": {
"name": "comments_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"favorites": {
"name": "favorites",
"columns": {
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"upload_id": {
"name": "upload_id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"favorites_user_id_users_id_fk": {
"name": "favorites_user_id_users_id_fk",
"tableFrom": "favorites",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"favorites_upload_id_uploads_id_fk": {
"name": "favorites_upload_id_uploads_id_fk",
"tableFrom": "favorites",
"tableTo": "uploads",
"columnsFrom": [
"upload_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"favorites_user_id_upload_id_pk": {
"name": "favorites_user_id_upload_id_pk",
"columns": [
"user_id",
"upload_id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"link_previews": {
"name": "link_previews",
"columns": {
"url_hash": {
"name": "url_hash",
"type": "char(64)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"url": {
"name": "url",
"type": "varchar(2048)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"image": {
"name": "image",
"type": "varchar(2048)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"title": {
"name": "title",
"type": "varchar(500)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"fetched_at": {
"name": "fetched_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"link_previews_url_hash": {
"name": "link_previews_url_hash",
"columns": [
"url_hash"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"notifications": {
"name": "notifications",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"actor_id": {
"name": "actor_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"upload_id": {
"name": "upload_id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"comment_id": {
"name": "comment_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"is_read": {
"name": "is_read",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"notifications_user_id_users_id_fk": {
"name": "notifications_user_id_users_id_fk",
"tableFrom": "notifications",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"notifications_actor_id_users_id_fk": {
"name": "notifications_actor_id_users_id_fk",
"tableFrom": "notifications",
"tableTo": "users",
"columnsFrom": [
"actor_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"notifications_upload_id_uploads_id_fk": {
"name": "notifications_upload_id_uploads_id_fk",
"tableFrom": "notifications",
"tableTo": "uploads",
"columnsFrom": [
"upload_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"notifications_comment_id_comments_id_fk": {
"name": "notifications_comment_id_comments_id_fk",
"tableFrom": "notifications",
"tableTo": "comments",
"columnsFrom": [
"comment_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"notifications_id": {
"name": "notifications_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"roles": {
"name": "roles",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"name": {
"name": "name",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"roles_id": {
"name": "roles_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"roles_name_unique": {
"name": "roles_name_unique",
"columns": [
"name"
]
}
},
"checkConstraint": {}
},
"sessions": {
"name": "sessions",
"columns": {
"id": {
"name": "id",
"type": "varchar(64)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"expires_at": {
"name": "expires_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"sessions_user_id_users_id_fk": {
"name": "sessions_user_id_users_id_fk",
"tableFrom": "sessions",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"sessions_id": {
"name": "sessions_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"uploads": {
"name": "uploads",
"columns": {
"id": {
"name": "id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"type": {
"name": "type",
"type": "enum('image','video','youtube','link')",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"file_name": {
"name": "file_name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"external_url": {
"name": "external_url",
"type": "varchar(2048)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"original_name": {
"name": "original_name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"mime_type": {
"name": "mime_type",
"type": "varchar(100)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"size": {
"name": "size",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"title": {
"name": "title",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"preview_image": {
"name": "preview_image",
"type": "varchar(2048)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"preview_title": {
"name": "preview_title",
"type": "varchar(500)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"uploads_user_id_users_id_fk": {
"name": "uploads_user_id_users_id_fk",
"tableFrom": "uploads",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"uploads_id": {
"name": "uploads_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"user_roles": {
"name": "user_roles",
"columns": {
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"role_id": {
"name": "role_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {
"user_roles_user_id_users_id_fk": {
"name": "user_roles_user_id_users_id_fk",
"tableFrom": "user_roles",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"user_roles_role_id_roles_id_fk": {
"name": "user_roles_role_id_roles_id_fk",
"tableFrom": "user_roles",
"tableTo": "roles",
"columnsFrom": [
"role_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"user_roles_user_id_role_id_pk": {
"name": "user_roles_user_id_role_id_pk",
"columns": [
"user_id",
"role_id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"users": {
"name": "users",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"name": {
"name": "name",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"email": {
"name": "email",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"password_hash": {
"name": "password_hash",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"color": {
"name": "color",
"type": "varchar(7)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"avatar": {
"name": "avatar",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"users_id": {
"name": "users_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"users_name_unique": {
"name": "users_name_unique",
"columns": [
"name"
]
},
"users_email_unique": {
"name": "users_email_unique",
"columns": [
"email"
]
}
},
"checkConstraint": {}
}
},
"views": {},
"_meta": {
"schemas": {},
"tables": {},
"columns": {}
},
"internal": {
"tables": {},
"indexes": {}
}
}
@@ -0,0 +1,879 @@
{
"version": "5",
"dialect": "mysql",
"id": "ea87dc4c-34dc-4f3c-9079-4f8a0abd9057",
"prevId": "b32b6b4b-df8f-470e-a46e-24bd192f8970",
"tables": {
"comment_reactions": {
"name": "comment_reactions",
"columns": {
"comment_id": {
"name": "comment_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"emoji": {
"name": "emoji",
"type": "varchar(32)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"comment_reactions_comment_id_comments_id_fk": {
"name": "comment_reactions_comment_id_comments_id_fk",
"tableFrom": "comment_reactions",
"tableTo": "comments",
"columnsFrom": [
"comment_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"comment_reactions_user_id_users_id_fk": {
"name": "comment_reactions_user_id_users_id_fk",
"tableFrom": "comment_reactions",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"comment_reactions_comment_id_user_id_emoji_pk": {
"name": "comment_reactions_comment_id_user_id_emoji_pk",
"columns": [
"comment_id",
"user_id",
"emoji"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"comments": {
"name": "comments",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"upload_id": {
"name": "upload_id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"content": {
"name": "content",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"comments_upload_id_uploads_id_fk": {
"name": "comments_upload_id_uploads_id_fk",
"tableFrom": "comments",
"tableTo": "uploads",
"columnsFrom": [
"upload_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"comments_user_id_users_id_fk": {
"name": "comments_user_id_users_id_fk",
"tableFrom": "comments",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"comments_id": {
"name": "comments_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"favorites": {
"name": "favorites",
"columns": {
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"upload_id": {
"name": "upload_id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"favorites_user_id_users_id_fk": {
"name": "favorites_user_id_users_id_fk",
"tableFrom": "favorites",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"favorites_upload_id_uploads_id_fk": {
"name": "favorites_upload_id_uploads_id_fk",
"tableFrom": "favorites",
"tableTo": "uploads",
"columnsFrom": [
"upload_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"favorites_user_id_upload_id_pk": {
"name": "favorites_user_id_upload_id_pk",
"columns": [
"user_id",
"upload_id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"link_previews": {
"name": "link_previews",
"columns": {
"url_hash": {
"name": "url_hash",
"type": "char(64)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"url": {
"name": "url",
"type": "varchar(2048)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"image": {
"name": "image",
"type": "varchar(2048)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"title": {
"name": "title",
"type": "varchar(500)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"fetched_at": {
"name": "fetched_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"link_previews_url_hash": {
"name": "link_previews_url_hash",
"columns": [
"url_hash"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"notifications": {
"name": "notifications",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"actor_id": {
"name": "actor_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"upload_id": {
"name": "upload_id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"comment_id": {
"name": "comment_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"is_read": {
"name": "is_read",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"notifications_user_id_users_id_fk": {
"name": "notifications_user_id_users_id_fk",
"tableFrom": "notifications",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"notifications_actor_id_users_id_fk": {
"name": "notifications_actor_id_users_id_fk",
"tableFrom": "notifications",
"tableTo": "users",
"columnsFrom": [
"actor_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"notifications_upload_id_uploads_id_fk": {
"name": "notifications_upload_id_uploads_id_fk",
"tableFrom": "notifications",
"tableTo": "uploads",
"columnsFrom": [
"upload_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"notifications_comment_id_comments_id_fk": {
"name": "notifications_comment_id_comments_id_fk",
"tableFrom": "notifications",
"tableTo": "comments",
"columnsFrom": [
"comment_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"notifications_id": {
"name": "notifications_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"permissions": {
"name": "permissions",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"key": {
"name": "key",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"label": {
"name": "label",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"permissions_id": {
"name": "permissions_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"permissions_key_unique": {
"name": "permissions_key_unique",
"columns": [
"key"
]
}
},
"checkConstraint": {}
},
"role_permissions": {
"name": "role_permissions",
"columns": {
"role_id": {
"name": "role_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"permission_id": {
"name": "permission_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {
"role_permissions_role_id_roles_id_fk": {
"name": "role_permissions_role_id_roles_id_fk",
"tableFrom": "role_permissions",
"tableTo": "roles",
"columnsFrom": [
"role_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"role_permissions_permission_id_permissions_id_fk": {
"name": "role_permissions_permission_id_permissions_id_fk",
"tableFrom": "role_permissions",
"tableTo": "permissions",
"columnsFrom": [
"permission_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"role_permissions_role_id_permission_id_pk": {
"name": "role_permissions_role_id_permission_id_pk",
"columns": [
"role_id",
"permission_id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"roles": {
"name": "roles",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"name": {
"name": "name",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"roles_id": {
"name": "roles_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"roles_name_unique": {
"name": "roles_name_unique",
"columns": [
"name"
]
}
},
"checkConstraint": {}
},
"sessions": {
"name": "sessions",
"columns": {
"id": {
"name": "id",
"type": "varchar(64)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"expires_at": {
"name": "expires_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"sessions_user_id_users_id_fk": {
"name": "sessions_user_id_users_id_fk",
"tableFrom": "sessions",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"sessions_id": {
"name": "sessions_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"uploads": {
"name": "uploads",
"columns": {
"id": {
"name": "id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"type": {
"name": "type",
"type": "enum('image','video','youtube','link')",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"file_name": {
"name": "file_name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"external_url": {
"name": "external_url",
"type": "varchar(2048)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"original_name": {
"name": "original_name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"mime_type": {
"name": "mime_type",
"type": "varchar(100)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"size": {
"name": "size",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"title": {
"name": "title",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"preview_image": {
"name": "preview_image",
"type": "varchar(2048)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"preview_title": {
"name": "preview_title",
"type": "varchar(500)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"uploads_user_id_users_id_fk": {
"name": "uploads_user_id_users_id_fk",
"tableFrom": "uploads",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"uploads_id": {
"name": "uploads_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"user_roles": {
"name": "user_roles",
"columns": {
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"role_id": {
"name": "role_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {
"user_roles_user_id_users_id_fk": {
"name": "user_roles_user_id_users_id_fk",
"tableFrom": "user_roles",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"user_roles_role_id_roles_id_fk": {
"name": "user_roles_role_id_roles_id_fk",
"tableFrom": "user_roles",
"tableTo": "roles",
"columnsFrom": [
"role_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"user_roles_user_id_role_id_pk": {
"name": "user_roles_user_id_role_id_pk",
"columns": [
"user_id",
"role_id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"users": {
"name": "users",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"name": {
"name": "name",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"email": {
"name": "email",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"password_hash": {
"name": "password_hash",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"color": {
"name": "color",
"type": "varchar(7)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"avatar": {
"name": "avatar",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"users_id": {
"name": "users_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"users_name_unique": {
"name": "users_name_unique",
"columns": [
"name"
]
},
"users_email_unique": {
"name": "users_email_unique",
"columns": [
"email"
]
}
},
"checkConstraint": {}
}
},
"views": {},
"_meta": {
"schemas": {},
"tables": {},
"columns": {}
},
"internal": {
"tables": {},
"indexes": {}
}
}
@@ -0,0 +1,886 @@
{
"version": "5",
"dialect": "mysql",
"id": "88fe40d5-5a91-4ca5-a1db-7a228da105db",
"prevId": "ea87dc4c-34dc-4f3c-9079-4f8a0abd9057",
"tables": {
"comment_reactions": {
"name": "comment_reactions",
"columns": {
"comment_id": {
"name": "comment_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"emoji": {
"name": "emoji",
"type": "varchar(32)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"comment_reactions_comment_id_comments_id_fk": {
"name": "comment_reactions_comment_id_comments_id_fk",
"tableFrom": "comment_reactions",
"tableTo": "comments",
"columnsFrom": [
"comment_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"comment_reactions_user_id_users_id_fk": {
"name": "comment_reactions_user_id_users_id_fk",
"tableFrom": "comment_reactions",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"comment_reactions_comment_id_user_id_emoji_pk": {
"name": "comment_reactions_comment_id_user_id_emoji_pk",
"columns": [
"comment_id",
"user_id",
"emoji"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"comments": {
"name": "comments",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"upload_id": {
"name": "upload_id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"content": {
"name": "content",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"comments_upload_id_uploads_id_fk": {
"name": "comments_upload_id_uploads_id_fk",
"tableFrom": "comments",
"tableTo": "uploads",
"columnsFrom": [
"upload_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"comments_user_id_users_id_fk": {
"name": "comments_user_id_users_id_fk",
"tableFrom": "comments",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"comments_id": {
"name": "comments_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"favorites": {
"name": "favorites",
"columns": {
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"upload_id": {
"name": "upload_id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"favorites_user_id_users_id_fk": {
"name": "favorites_user_id_users_id_fk",
"tableFrom": "favorites",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"favorites_upload_id_uploads_id_fk": {
"name": "favorites_upload_id_uploads_id_fk",
"tableFrom": "favorites",
"tableTo": "uploads",
"columnsFrom": [
"upload_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"favorites_user_id_upload_id_pk": {
"name": "favorites_user_id_upload_id_pk",
"columns": [
"user_id",
"upload_id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"link_previews": {
"name": "link_previews",
"columns": {
"url_hash": {
"name": "url_hash",
"type": "char(64)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"url": {
"name": "url",
"type": "varchar(2048)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"image": {
"name": "image",
"type": "varchar(2048)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"title": {
"name": "title",
"type": "varchar(500)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"fetched_at": {
"name": "fetched_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"link_previews_url_hash": {
"name": "link_previews_url_hash",
"columns": [
"url_hash"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"notifications": {
"name": "notifications",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"actor_id": {
"name": "actor_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"upload_id": {
"name": "upload_id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"comment_id": {
"name": "comment_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"is_read": {
"name": "is_read",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"notifications_user_id_users_id_fk": {
"name": "notifications_user_id_users_id_fk",
"tableFrom": "notifications",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"notifications_actor_id_users_id_fk": {
"name": "notifications_actor_id_users_id_fk",
"tableFrom": "notifications",
"tableTo": "users",
"columnsFrom": [
"actor_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"notifications_upload_id_uploads_id_fk": {
"name": "notifications_upload_id_uploads_id_fk",
"tableFrom": "notifications",
"tableTo": "uploads",
"columnsFrom": [
"upload_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"notifications_comment_id_comments_id_fk": {
"name": "notifications_comment_id_comments_id_fk",
"tableFrom": "notifications",
"tableTo": "comments",
"columnsFrom": [
"comment_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"notifications_id": {
"name": "notifications_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"permissions": {
"name": "permissions",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"key": {
"name": "key",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"label": {
"name": "label",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"permissions_id": {
"name": "permissions_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"permissions_key_unique": {
"name": "permissions_key_unique",
"columns": [
"key"
]
}
},
"checkConstraint": {}
},
"role_permissions": {
"name": "role_permissions",
"columns": {
"role_id": {
"name": "role_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"permission_id": {
"name": "permission_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {
"role_permissions_role_id_roles_id_fk": {
"name": "role_permissions_role_id_roles_id_fk",
"tableFrom": "role_permissions",
"tableTo": "roles",
"columnsFrom": [
"role_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"role_permissions_permission_id_permissions_id_fk": {
"name": "role_permissions_permission_id_permissions_id_fk",
"tableFrom": "role_permissions",
"tableTo": "permissions",
"columnsFrom": [
"permission_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"role_permissions_role_id_permission_id_pk": {
"name": "role_permissions_role_id_permission_id_pk",
"columns": [
"role_id",
"permission_id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"roles": {
"name": "roles",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"name": {
"name": "name",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"roles_id": {
"name": "roles_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"roles_name_unique": {
"name": "roles_name_unique",
"columns": [
"name"
]
}
},
"checkConstraint": {}
},
"sessions": {
"name": "sessions",
"columns": {
"id": {
"name": "id",
"type": "varchar(64)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"expires_at": {
"name": "expires_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"sessions_user_id_users_id_fk": {
"name": "sessions_user_id_users_id_fk",
"tableFrom": "sessions",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"sessions_id": {
"name": "sessions_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"uploads": {
"name": "uploads",
"columns": {
"id": {
"name": "id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"type": {
"name": "type",
"type": "enum('image','video','youtube','link')",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"file_name": {
"name": "file_name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"external_url": {
"name": "external_url",
"type": "varchar(2048)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"original_name": {
"name": "original_name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"mime_type": {
"name": "mime_type",
"type": "varchar(100)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"size": {
"name": "size",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"title": {
"name": "title",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"preview_image": {
"name": "preview_image",
"type": "varchar(2048)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"preview_title": {
"name": "preview_title",
"type": "varchar(500)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"uploads_user_id_users_id_fk": {
"name": "uploads_user_id_users_id_fk",
"tableFrom": "uploads",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"uploads_id": {
"name": "uploads_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"user_roles": {
"name": "user_roles",
"columns": {
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"role_id": {
"name": "role_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {
"user_roles_user_id_users_id_fk": {
"name": "user_roles_user_id_users_id_fk",
"tableFrom": "user_roles",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"user_roles_role_id_roles_id_fk": {
"name": "user_roles_role_id_roles_id_fk",
"tableFrom": "user_roles",
"tableTo": "roles",
"columnsFrom": [
"role_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"user_roles_user_id_role_id_pk": {
"name": "user_roles_user_id_role_id_pk",
"columns": [
"user_id",
"role_id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"users": {
"name": "users",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"name": {
"name": "name",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"email": {
"name": "email",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"password_hash": {
"name": "password_hash",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"color": {
"name": "color",
"type": "varchar(7)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"avatar": {
"name": "avatar",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"card_effect": {
"name": "card_effect",
"type": "varchar(32)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"users_id": {
"name": "users_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"users_name_unique": {
"name": "users_name_unique",
"columns": [
"name"
]
},
"users_email_unique": {
"name": "users_email_unique",
"columns": [
"email"
]
}
},
"checkConstraint": {}
}
},
"views": {},
"_meta": {
"schemas": {},
"tables": {},
"columns": {}
},
"internal": {
"tables": {},
"indexes": {}
}
}
@@ -0,0 +1,893 @@
{
"version": "5",
"dialect": "mysql",
"id": "79b8947a-3845-40c6-b17f-b633e75b7dde",
"prevId": "88fe40d5-5a91-4ca5-a1db-7a228da105db",
"tables": {
"comment_reactions": {
"name": "comment_reactions",
"columns": {
"comment_id": {
"name": "comment_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"emoji": {
"name": "emoji",
"type": "varchar(32)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"comment_reactions_comment_id_comments_id_fk": {
"name": "comment_reactions_comment_id_comments_id_fk",
"tableFrom": "comment_reactions",
"tableTo": "comments",
"columnsFrom": [
"comment_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"comment_reactions_user_id_users_id_fk": {
"name": "comment_reactions_user_id_users_id_fk",
"tableFrom": "comment_reactions",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"comment_reactions_comment_id_user_id_emoji_pk": {
"name": "comment_reactions_comment_id_user_id_emoji_pk",
"columns": [
"comment_id",
"user_id",
"emoji"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"comments": {
"name": "comments",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"upload_id": {
"name": "upload_id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"content": {
"name": "content",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"comments_upload_id_uploads_id_fk": {
"name": "comments_upload_id_uploads_id_fk",
"tableFrom": "comments",
"tableTo": "uploads",
"columnsFrom": [
"upload_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"comments_user_id_users_id_fk": {
"name": "comments_user_id_users_id_fk",
"tableFrom": "comments",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"comments_id": {
"name": "comments_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"favorites": {
"name": "favorites",
"columns": {
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"upload_id": {
"name": "upload_id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"favorites_user_id_users_id_fk": {
"name": "favorites_user_id_users_id_fk",
"tableFrom": "favorites",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"favorites_upload_id_uploads_id_fk": {
"name": "favorites_upload_id_uploads_id_fk",
"tableFrom": "favorites",
"tableTo": "uploads",
"columnsFrom": [
"upload_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"favorites_user_id_upload_id_pk": {
"name": "favorites_user_id_upload_id_pk",
"columns": [
"user_id",
"upload_id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"link_previews": {
"name": "link_previews",
"columns": {
"url_hash": {
"name": "url_hash",
"type": "char(64)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"url": {
"name": "url",
"type": "varchar(2048)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"image": {
"name": "image",
"type": "varchar(2048)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"title": {
"name": "title",
"type": "varchar(500)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"fetched_at": {
"name": "fetched_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"link_previews_url_hash": {
"name": "link_previews_url_hash",
"columns": [
"url_hash"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"notifications": {
"name": "notifications",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"actor_id": {
"name": "actor_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"upload_id": {
"name": "upload_id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"comment_id": {
"name": "comment_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"is_read": {
"name": "is_read",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"notifications_user_id_users_id_fk": {
"name": "notifications_user_id_users_id_fk",
"tableFrom": "notifications",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"notifications_actor_id_users_id_fk": {
"name": "notifications_actor_id_users_id_fk",
"tableFrom": "notifications",
"tableTo": "users",
"columnsFrom": [
"actor_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"notifications_upload_id_uploads_id_fk": {
"name": "notifications_upload_id_uploads_id_fk",
"tableFrom": "notifications",
"tableTo": "uploads",
"columnsFrom": [
"upload_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"notifications_comment_id_comments_id_fk": {
"name": "notifications_comment_id_comments_id_fk",
"tableFrom": "notifications",
"tableTo": "comments",
"columnsFrom": [
"comment_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"notifications_id": {
"name": "notifications_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"permissions": {
"name": "permissions",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"key": {
"name": "key",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"label": {
"name": "label",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"permissions_id": {
"name": "permissions_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"permissions_key_unique": {
"name": "permissions_key_unique",
"columns": [
"key"
]
}
},
"checkConstraint": {}
},
"role_permissions": {
"name": "role_permissions",
"columns": {
"role_id": {
"name": "role_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"permission_id": {
"name": "permission_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {
"role_permissions_role_id_roles_id_fk": {
"name": "role_permissions_role_id_roles_id_fk",
"tableFrom": "role_permissions",
"tableTo": "roles",
"columnsFrom": [
"role_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"role_permissions_permission_id_permissions_id_fk": {
"name": "role_permissions_permission_id_permissions_id_fk",
"tableFrom": "role_permissions",
"tableTo": "permissions",
"columnsFrom": [
"permission_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"role_permissions_role_id_permission_id_pk": {
"name": "role_permissions_role_id_permission_id_pk",
"columns": [
"role_id",
"permission_id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"roles": {
"name": "roles",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"name": {
"name": "name",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"roles_id": {
"name": "roles_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"roles_name_unique": {
"name": "roles_name_unique",
"columns": [
"name"
]
}
},
"checkConstraint": {}
},
"sessions": {
"name": "sessions",
"columns": {
"id": {
"name": "id",
"type": "varchar(64)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"expires_at": {
"name": "expires_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"sessions_user_id_users_id_fk": {
"name": "sessions_user_id_users_id_fk",
"tableFrom": "sessions",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"sessions_id": {
"name": "sessions_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"uploads": {
"name": "uploads",
"columns": {
"id": {
"name": "id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"type": {
"name": "type",
"type": "enum('image','video','youtube','link')",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"file_name": {
"name": "file_name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"external_url": {
"name": "external_url",
"type": "varchar(2048)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"original_name": {
"name": "original_name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"mime_type": {
"name": "mime_type",
"type": "varchar(100)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"size": {
"name": "size",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"title": {
"name": "title",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"preview_image": {
"name": "preview_image",
"type": "varchar(2048)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"preview_title": {
"name": "preview_title",
"type": "varchar(500)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"uploads_user_id_users_id_fk": {
"name": "uploads_user_id_users_id_fk",
"tableFrom": "uploads",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"uploads_id": {
"name": "uploads_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"user_roles": {
"name": "user_roles",
"columns": {
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"role_id": {
"name": "role_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {
"user_roles_user_id_users_id_fk": {
"name": "user_roles_user_id_users_id_fk",
"tableFrom": "user_roles",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"user_roles_role_id_roles_id_fk": {
"name": "user_roles_role_id_roles_id_fk",
"tableFrom": "user_roles",
"tableTo": "roles",
"columnsFrom": [
"role_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"user_roles_user_id_role_id_pk": {
"name": "user_roles_user_id_role_id_pk",
"columns": [
"user_id",
"role_id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"users": {
"name": "users",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"name": {
"name": "name",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"email": {
"name": "email",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"password_hash": {
"name": "password_hash",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"color": {
"name": "color",
"type": "varchar(7)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"avatar": {
"name": "avatar",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"card_effect": {
"name": "card_effect",
"type": "varchar(32)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"card_border_effect": {
"name": "card_border_effect",
"type": "varchar(32)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"users_id": {
"name": "users_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"users_name_unique": {
"name": "users_name_unique",
"columns": [
"name"
]
},
"users_email_unique": {
"name": "users_email_unique",
"columns": [
"email"
]
}
},
"checkConstraint": {}
}
},
"views": {},
"_meta": {
"schemas": {},
"tables": {},
"columns": {}
},
"internal": {
"tables": {},
"indexes": {}
}
}
@@ -0,0 +1,893 @@
{
"version": "5",
"dialect": "mysql",
"id": "0fb5f7ec-45ab-450a-a79e-ad28a5c5ee4b",
"prevId": "79b8947a-3845-40c6-b17f-b633e75b7dde",
"tables": {
"comment_reactions": {
"name": "comment_reactions",
"columns": {
"comment_id": {
"name": "comment_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"emoji": {
"name": "emoji",
"type": "varchar(32)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"comment_reactions_comment_id_comments_id_fk": {
"name": "comment_reactions_comment_id_comments_id_fk",
"tableFrom": "comment_reactions",
"tableTo": "comments",
"columnsFrom": [
"comment_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"comment_reactions_user_id_users_id_fk": {
"name": "comment_reactions_user_id_users_id_fk",
"tableFrom": "comment_reactions",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"comment_reactions_comment_id_user_id_emoji_pk": {
"name": "comment_reactions_comment_id_user_id_emoji_pk",
"columns": [
"comment_id",
"user_id",
"emoji"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"comments": {
"name": "comments",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"upload_id": {
"name": "upload_id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"content": {
"name": "content",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"comments_upload_id_uploads_id_fk": {
"name": "comments_upload_id_uploads_id_fk",
"tableFrom": "comments",
"tableTo": "uploads",
"columnsFrom": [
"upload_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"comments_user_id_users_id_fk": {
"name": "comments_user_id_users_id_fk",
"tableFrom": "comments",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"comments_id": {
"name": "comments_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"favorites": {
"name": "favorites",
"columns": {
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"upload_id": {
"name": "upload_id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"favorites_user_id_users_id_fk": {
"name": "favorites_user_id_users_id_fk",
"tableFrom": "favorites",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"favorites_upload_id_uploads_id_fk": {
"name": "favorites_upload_id_uploads_id_fk",
"tableFrom": "favorites",
"tableTo": "uploads",
"columnsFrom": [
"upload_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"favorites_user_id_upload_id_pk": {
"name": "favorites_user_id_upload_id_pk",
"columns": [
"user_id",
"upload_id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"link_previews": {
"name": "link_previews",
"columns": {
"url_hash": {
"name": "url_hash",
"type": "char(64)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"url": {
"name": "url",
"type": "varchar(2048)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"image": {
"name": "image",
"type": "varchar(2048)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"title": {
"name": "title",
"type": "varchar(500)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"fetched_at": {
"name": "fetched_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"link_previews_url_hash": {
"name": "link_previews_url_hash",
"columns": [
"url_hash"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"notifications": {
"name": "notifications",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"actor_id": {
"name": "actor_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"upload_id": {
"name": "upload_id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"comment_id": {
"name": "comment_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"is_read": {
"name": "is_read",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"notifications_user_id_users_id_fk": {
"name": "notifications_user_id_users_id_fk",
"tableFrom": "notifications",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"notifications_actor_id_users_id_fk": {
"name": "notifications_actor_id_users_id_fk",
"tableFrom": "notifications",
"tableTo": "users",
"columnsFrom": [
"actor_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"notifications_upload_id_uploads_id_fk": {
"name": "notifications_upload_id_uploads_id_fk",
"tableFrom": "notifications",
"tableTo": "uploads",
"columnsFrom": [
"upload_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"notifications_comment_id_comments_id_fk": {
"name": "notifications_comment_id_comments_id_fk",
"tableFrom": "notifications",
"tableTo": "comments",
"columnsFrom": [
"comment_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"notifications_id": {
"name": "notifications_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"permissions": {
"name": "permissions",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"key": {
"name": "key",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"label": {
"name": "label",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"permissions_id": {
"name": "permissions_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"permissions_key_unique": {
"name": "permissions_key_unique",
"columns": [
"key"
]
}
},
"checkConstraint": {}
},
"role_permissions": {
"name": "role_permissions",
"columns": {
"role_id": {
"name": "role_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"permission_id": {
"name": "permission_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {
"role_permissions_role_id_roles_id_fk": {
"name": "role_permissions_role_id_roles_id_fk",
"tableFrom": "role_permissions",
"tableTo": "roles",
"columnsFrom": [
"role_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"role_permissions_permission_id_permissions_id_fk": {
"name": "role_permissions_permission_id_permissions_id_fk",
"tableFrom": "role_permissions",
"tableTo": "permissions",
"columnsFrom": [
"permission_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"role_permissions_role_id_permission_id_pk": {
"name": "role_permissions_role_id_permission_id_pk",
"columns": [
"role_id",
"permission_id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"roles": {
"name": "roles",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"name": {
"name": "name",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"roles_id": {
"name": "roles_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"roles_name_unique": {
"name": "roles_name_unique",
"columns": [
"name"
]
}
},
"checkConstraint": {}
},
"sessions": {
"name": "sessions",
"columns": {
"id": {
"name": "id",
"type": "varchar(64)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"expires_at": {
"name": "expires_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"sessions_user_id_users_id_fk": {
"name": "sessions_user_id_users_id_fk",
"tableFrom": "sessions",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"sessions_id": {
"name": "sessions_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"uploads": {
"name": "uploads",
"columns": {
"id": {
"name": "id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"type": {
"name": "type",
"type": "enum('image','video','youtube','twitch','link')",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"file_name": {
"name": "file_name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"external_url": {
"name": "external_url",
"type": "varchar(2048)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"original_name": {
"name": "original_name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"mime_type": {
"name": "mime_type",
"type": "varchar(100)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"size": {
"name": "size",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"title": {
"name": "title",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"preview_image": {
"name": "preview_image",
"type": "varchar(2048)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"preview_title": {
"name": "preview_title",
"type": "varchar(500)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"uploads_user_id_users_id_fk": {
"name": "uploads_user_id_users_id_fk",
"tableFrom": "uploads",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"uploads_id": {
"name": "uploads_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"user_roles": {
"name": "user_roles",
"columns": {
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"role_id": {
"name": "role_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {
"user_roles_user_id_users_id_fk": {
"name": "user_roles_user_id_users_id_fk",
"tableFrom": "user_roles",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"user_roles_role_id_roles_id_fk": {
"name": "user_roles_role_id_roles_id_fk",
"tableFrom": "user_roles",
"tableTo": "roles",
"columnsFrom": [
"role_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"user_roles_user_id_role_id_pk": {
"name": "user_roles_user_id_role_id_pk",
"columns": [
"user_id",
"role_id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"users": {
"name": "users",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"name": {
"name": "name",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"email": {
"name": "email",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"password_hash": {
"name": "password_hash",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"color": {
"name": "color",
"type": "varchar(7)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"avatar": {
"name": "avatar",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"card_effect": {
"name": "card_effect",
"type": "varchar(32)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"card_border_effect": {
"name": "card_border_effect",
"type": "varchar(32)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"users_id": {
"name": "users_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"users_name_unique": {
"name": "users_name_unique",
"columns": [
"name"
]
},
"users_email_unique": {
"name": "users_email_unique",
"columns": [
"email"
]
}
},
"checkConstraint": {}
}
},
"views": {},
"_meta": {
"schemas": {},
"tables": {},
"columns": {}
},
"internal": {
"tables": {},
"indexes": {}
}
}
@@ -0,0 +1,998 @@
{
"version": "5",
"dialect": "mysql",
"id": "1b3fd5f2-f0b3-46fa-aada-e7cf271ac26d",
"prevId": "0fb5f7ec-45ab-450a-a79e-ad28a5c5ee4b",
"tables": {
"comment_reactions": {
"name": "comment_reactions",
"columns": {
"comment_id": {
"name": "comment_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"emoji": {
"name": "emoji",
"type": "varchar(32)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"comment_reactions_comment_id_comments_id_fk": {
"name": "comment_reactions_comment_id_comments_id_fk",
"tableFrom": "comment_reactions",
"tableTo": "comments",
"columnsFrom": [
"comment_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"comment_reactions_user_id_users_id_fk": {
"name": "comment_reactions_user_id_users_id_fk",
"tableFrom": "comment_reactions",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"comment_reactions_comment_id_user_id_emoji_pk": {
"name": "comment_reactions_comment_id_user_id_emoji_pk",
"columns": [
"comment_id",
"user_id",
"emoji"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"comments": {
"name": "comments",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"upload_id": {
"name": "upload_id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"content": {
"name": "content",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"comments_upload_id_uploads_id_fk": {
"name": "comments_upload_id_uploads_id_fk",
"tableFrom": "comments",
"tableTo": "uploads",
"columnsFrom": [
"upload_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"comments_user_id_users_id_fk": {
"name": "comments_user_id_users_id_fk",
"tableFrom": "comments",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"comments_id": {
"name": "comments_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"favorites": {
"name": "favorites",
"columns": {
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"upload_id": {
"name": "upload_id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"favorites_user_id_users_id_fk": {
"name": "favorites_user_id_users_id_fk",
"tableFrom": "favorites",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"favorites_upload_id_uploads_id_fk": {
"name": "favorites_upload_id_uploads_id_fk",
"tableFrom": "favorites",
"tableTo": "uploads",
"columnsFrom": [
"upload_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"favorites_user_id_upload_id_pk": {
"name": "favorites_user_id_upload_id_pk",
"columns": [
"user_id",
"upload_id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"link_previews": {
"name": "link_previews",
"columns": {
"url_hash": {
"name": "url_hash",
"type": "char(64)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"url": {
"name": "url",
"type": "varchar(2048)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"image": {
"name": "image",
"type": "varchar(2048)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"title": {
"name": "title",
"type": "varchar(500)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"fetched_at": {
"name": "fetched_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"link_previews_url_hash": {
"name": "link_previews_url_hash",
"columns": [
"url_hash"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"notifications": {
"name": "notifications",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"actor_id": {
"name": "actor_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"upload_id": {
"name": "upload_id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"comment_id": {
"name": "comment_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"is_read": {
"name": "is_read",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"notifications_user_id_users_id_fk": {
"name": "notifications_user_id_users_id_fk",
"tableFrom": "notifications",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"notifications_actor_id_users_id_fk": {
"name": "notifications_actor_id_users_id_fk",
"tableFrom": "notifications",
"tableTo": "users",
"columnsFrom": [
"actor_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"notifications_upload_id_uploads_id_fk": {
"name": "notifications_upload_id_uploads_id_fk",
"tableFrom": "notifications",
"tableTo": "uploads",
"columnsFrom": [
"upload_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"notifications_comment_id_comments_id_fk": {
"name": "notifications_comment_id_comments_id_fk",
"tableFrom": "notifications",
"tableTo": "comments",
"columnsFrom": [
"comment_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"notifications_id": {
"name": "notifications_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"permissions": {
"name": "permissions",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"key": {
"name": "key",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"label": {
"name": "label",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"permissions_id": {
"name": "permissions_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"permissions_key_unique": {
"name": "permissions_key_unique",
"columns": [
"key"
]
}
},
"checkConstraint": {}
},
"role_permissions": {
"name": "role_permissions",
"columns": {
"role_id": {
"name": "role_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"permission_id": {
"name": "permission_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {
"role_permissions_role_id_roles_id_fk": {
"name": "role_permissions_role_id_roles_id_fk",
"tableFrom": "role_permissions",
"tableTo": "roles",
"columnsFrom": [
"role_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"role_permissions_permission_id_permissions_id_fk": {
"name": "role_permissions_permission_id_permissions_id_fk",
"tableFrom": "role_permissions",
"tableTo": "permissions",
"columnsFrom": [
"permission_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"role_permissions_role_id_permission_id_pk": {
"name": "role_permissions_role_id_permission_id_pk",
"columns": [
"role_id",
"permission_id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"roles": {
"name": "roles",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"name": {
"name": "name",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"roles_id": {
"name": "roles_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"roles_name_unique": {
"name": "roles_name_unique",
"columns": [
"name"
]
}
},
"checkConstraint": {}
},
"sessions": {
"name": "sessions",
"columns": {
"id": {
"name": "id",
"type": "varchar(64)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"expires_at": {
"name": "expires_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"sessions_user_id_users_id_fk": {
"name": "sessions_user_id_users_id_fk",
"tableFrom": "sessions",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"sessions_id": {
"name": "sessions_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"tags": {
"name": "tags",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"name": {
"name": "name",
"type": "varchar(64)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"tags_id": {
"name": "tags_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"tags_name_unique": {
"name": "tags_name_unique",
"columns": [
"name"
]
}
},
"checkConstraint": {}
},
"upload_tags": {
"name": "upload_tags",
"columns": {
"upload_id": {
"name": "upload_id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"tag_id": {
"name": "tag_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {
"upload_tags_upload_id_uploads_id_fk": {
"name": "upload_tags_upload_id_uploads_id_fk",
"tableFrom": "upload_tags",
"tableTo": "uploads",
"columnsFrom": [
"upload_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"upload_tags_tag_id_tags_id_fk": {
"name": "upload_tags_tag_id_tags_id_fk",
"tableFrom": "upload_tags",
"tableTo": "tags",
"columnsFrom": [
"tag_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"upload_tags_upload_id_tag_id_pk": {
"name": "upload_tags_upload_id_tag_id_pk",
"columns": [
"upload_id",
"tag_id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"uploads": {
"name": "uploads",
"columns": {
"id": {
"name": "id",
"type": "varchar(8)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"type": {
"name": "type",
"type": "enum('image','video','youtube','twitch','link')",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"file_name": {
"name": "file_name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"external_url": {
"name": "external_url",
"type": "varchar(2048)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"original_name": {
"name": "original_name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"mime_type": {
"name": "mime_type",
"type": "varchar(100)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"size": {
"name": "size",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"title": {
"name": "title",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"preview_image": {
"name": "preview_image",
"type": "varchar(2048)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"preview_title": {
"name": "preview_title",
"type": "varchar(500)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"uploads_user_id_users_id_fk": {
"name": "uploads_user_id_users_id_fk",
"tableFrom": "uploads",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"uploads_id": {
"name": "uploads_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"user_roles": {
"name": "user_roles",
"columns": {
"user_id": {
"name": "user_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"role_id": {
"name": "role_id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {
"user_roles_user_id_users_id_fk": {
"name": "user_roles_user_id_users_id_fk",
"tableFrom": "user_roles",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"user_roles_role_id_roles_id_fk": {
"name": "user_roles_role_id_roles_id_fk",
"tableFrom": "user_roles",
"tableTo": "roles",
"columnsFrom": [
"role_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"user_roles_user_id_role_id_pk": {
"name": "user_roles_user_id_role_id_pk",
"columns": [
"user_id",
"role_id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"users": {
"name": "users",
"columns": {
"id": {
"name": "id",
"type": "bigint unsigned",
"primaryKey": false,
"notNull": true,
"autoincrement": true
},
"name": {
"name": "name",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"email": {
"name": "email",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"password_hash": {
"name": "password_hash",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"color": {
"name": "color",
"type": "varchar(7)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"avatar": {
"name": "avatar",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"card_effect": {
"name": "card_effect",
"type": "varchar(32)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"card_border_effect": {
"name": "card_border_effect",
"type": "varchar(32)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"users_id": {
"name": "users_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"users_name_unique": {
"name": "users_name_unique",
"columns": [
"name"
]
},
"users_email_unique": {
"name": "users_email_unique",
"columns": [
"email"
]
}
},
"checkConstraint": {}
}
},
"views": {},
"_meta": {
"schemas": {},
"tables": {},
"columns": {}
},
"internal": {
"tables": {},
"indexes": {}
}
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+188
View File
@@ -0,0 +1,188 @@
{
"version": "7",
"dialect": "mysql",
"entries": [
{
"idx": 0,
"version": "5",
"when": 1789842188719,
"tag": "0000_marvelous_the_spike",
"breakpoints": true
},
{
"idx": 1,
"version": "5",
"when": 1789851450541,
"tag": "0001_cuddly_betty_brant",
"breakpoints": true
},
{
"idx": 2,
"version": "5",
"when": 1789857172319,
"tag": "0002_colossal_night_nurse",
"breakpoints": true
},
{
"idx": 3,
"version": "5",
"when": 1789859432013,
"tag": "0003_many_zarek",
"breakpoints": true
},
{
"idx": 4,
"version": "5",
"when": 1789860013310,
"tag": "0004_closed_mister_fear",
"breakpoints": true
},
{
"idx": 5,
"version": "5",
"when": 1789910520999,
"tag": "0005_sparkling_quasar",
"breakpoints": true
},
{
"idx": 6,
"version": "5",
"when": 1789920696042,
"tag": "0006_old_frog_thor",
"breakpoints": true
},
{
"idx": 7,
"version": "5",
"when": 1789924974989,
"tag": "0007_windy_joshua_kane",
"breakpoints": true
},
{
"idx": 8,
"version": "5",
"when": 1789935573559,
"tag": "0008_flashy_magdalene",
"breakpoints": true
},
{
"idx": 9,
"version": "5",
"when": 1789936119560,
"tag": "0009_new_legion",
"breakpoints": true
},
{
"idx": 10,
"version": "5",
"when": 1790019345617,
"tag": "0010_perpetual_aqueduct",
"breakpoints": true
},
{
"idx": 11,
"version": "5",
"when": 1790102908283,
"tag": "0011_permissions",
"breakpoints": true
},
{
"idx": 12,
"version": "5",
"when": 1790108064546,
"tag": "0012_whole_sir_ram",
"breakpoints": true
},
{
"idx": 13,
"version": "5",
"when": 1790108517670,
"tag": "0013_worried_beyonder",
"breakpoints": true
},
{
"idx": 14,
"version": "5",
"when": 1790450943938,
"tag": "0014_big_venus",
"breakpoints": true
},
{
"idx": 15,
"version": "5",
"when": 1790452144567,
"tag": "0015_pink_kingpin",
"breakpoints": true
},
{
"idx": 16,
"version": "5",
"when": 1790453684144,
"tag": "0016_aromatic_punisher",
"breakpoints": true
},
{
"idx": 17,
"version": "5",
"when": 1790465843836,
"tag": "0017_cuddly_lady_bullseye",
"breakpoints": true
},
{
"idx": 18,
"version": "5",
"when": 1790466433142,
"tag": "0018_eminent_storm",
"breakpoints": true
},
{
"idx": 19,
"version": "5",
"when": 1790469274404,
"tag": "0019_sharp_chimera",
"breakpoints": true
},
{
"idx": 20,
"version": "5",
"when": 1790536757531,
"tag": "0020_cooing_crusher_hogan",
"breakpoints": true
},
{
"idx": 21,
"version": "5",
"when": 1790538016436,
"tag": "0021_brave_cardiac",
"breakpoints": true
},
{
"idx": 22,
"version": "5",
"when": 1790540511153,
"tag": "0022_panoramic_shocker",
"breakpoints": true
},
{
"idx": 23,
"version": "5",
"when": 1790618393528,
"tag": "0023_new_nova",
"breakpoints": true
},
{
"idx": 24,
"version": "5",
"when": 1790626717328,
"tag": "0024_brainy_peter_parker",
"breakpoints": true
},
{
"idx": 25,
"version": "5",
"when": 1791040007768,
"tag": "0025_rare_william_stryker",
"breakpoints": true
}
]
}
+220
View File
@@ -0,0 +1,220 @@
import { relations } from 'drizzle-orm'
import { bigint, boolean, char, int, json, mysqlEnum, mysqlTable, primaryKey, text, timestamp, varchar } from 'drizzle-orm/mysql-core'
export const users = mysqlTable('users', {
id: bigint('id', { mode: 'number', unsigned: true }).autoincrement().primaryKey(),
name: varchar('name', { length: 50 }).notNull().unique(),
email: varchar('email', { length: 255 }).unique(),
passwordHash: varchar('password_hash', { length: 255 }).notNull(),
color: varchar('color', { length: 7 }),
avatar: varchar('avatar', { length: 255 }),
cardEffect: varchar('card_effect', { length: 32 }),
cardEffectColor: varchar('card_effect_color', { length: 7 }),
cardVignette: boolean('card_vignette').default(false).notNull(),
cardBorderEffect: varchar('card_border_effect', { length: 32 }),
cardBorderEffectColor: varchar('card_border_effect_color', { length: 7 }),
createdAt: timestamp('created_at').defaultNow().notNull(),
})
export const sessions = mysqlTable('sessions', {
id: varchar('id', { length: 64 }).primaryKey(),
userId: bigint('user_id', { mode: 'number', unsigned: true }).notNull().references(() => users.id, { onDelete: 'cascade' }),
expiresAt: timestamp('expires_at').notNull(),
createdAt: timestamp('created_at').defaultNow().notNull(),
})
export const uploads = mysqlTable('uploads', {
id: varchar('id', { length: 8 }).primaryKey(),
userId: bigint('user_id', { mode: 'number', unsigned: true }).notNull().references(() => users.id, { onDelete: 'cascade' }),
type: mysqlEnum('type', ['image', 'video', 'audio', 'youtube', 'twitch', 'link']).notNull(),
fileName: varchar('file_name', { length: 255 }),
externalUrl: varchar('external_url', { length: 2048 }),
originalName: varchar('original_name', { length: 255 }).notNull(),
mimeType: varchar('mime_type', { length: 100 }),
size: bigint('size', { mode: 'number', unsigned: true }),
title: varchar('title', { length: 255 }),
previewImage: varchar('preview_image', { length: 2048 }),
previewTitle: varchar('preview_title', { length: 500 }),
audioMeta: json('audio_meta'),
commentCount: int('comment_count', { unsigned: true }).notNull().default(0),
createdAt: timestamp('created_at').defaultNow().notNull(),
})
export const comments = mysqlTable('comments', {
id: bigint('id', { mode: 'number', unsigned: true }).autoincrement().primaryKey(),
uploadId: varchar('upload_id', { length: 8 }).notNull().references(() => uploads.id, { onDelete: 'cascade' }),
userId: bigint('user_id', { mode: 'number', unsigned: true }).notNull().references(() => users.id, { onDelete: 'cascade' }),
content: text('content').notNull(),
createdAt: timestamp('created_at').defaultNow().notNull(),
})
export const commentAttachments = mysqlTable('comment_attachments', {
id: bigint('id', { mode: 'number', unsigned: true }).autoincrement().primaryKey(),
commentId: bigint('comment_id', { mode: 'number', unsigned: true }).notNull().references(() => comments.id, { onDelete: 'cascade' }),
fileName: varchar('file_name', { length: 255 }).notNull(),
originalName: varchar('original_name', { length: 255 }).notNull(),
mimeType: varchar('mime_type', { length: 100 }),
size: bigint('size', { mode: 'number', unsigned: true }),
cover: varchar('cover', { length: 2048 }),
meta: json('meta'),
createdAt: timestamp('created_at').defaultNow().notNull(),
})
export const commentReactions = mysqlTable('comment_reactions', {
commentId: bigint('comment_id', { mode: 'number', unsigned: true }).notNull().references(() => comments.id, { onDelete: 'cascade' }),
userId: bigint('user_id', { mode: 'number', unsigned: true }).notNull().references(() => users.id, { onDelete: 'cascade' }),
emoji: varchar('emoji', { length: 32 }).notNull(),
createdAt: timestamp('created_at').defaultNow().notNull(),
}, t => [primaryKey({ columns: [t.commentId, t.userId, t.emoji] })])
export const uploadReactions = mysqlTable('upload_reactions', {
uploadId: varchar('upload_id', { length: 8 }).notNull().references(() => uploads.id, { onDelete: 'cascade' }),
userId: bigint('user_id', { mode: 'number', unsigned: true }).notNull().references(() => users.id, { onDelete: 'cascade' }),
emoji: varchar('emoji', { length: 32 }).notNull(),
createdAt: timestamp('created_at').defaultNow().notNull(),
}, t => [primaryKey({ columns: [t.uploadId, t.userId, t.emoji] })])
export const favorites = mysqlTable('favorites', {
userId: bigint('user_id', { mode: 'number', unsigned: true }).notNull().references(() => users.id, { onDelete: 'cascade' }),
uploadId: varchar('upload_id', { length: 8 }).notNull().references(() => uploads.id, { onDelete: 'cascade' }),
createdAt: timestamp('created_at').defaultNow().notNull(),
}, t => [primaryKey({ columns: [t.userId, t.uploadId] })])
export const threadSubscriptions = mysqlTable('thread_subscriptions', {
uploadId: varchar('upload_id', { length: 8 }).notNull().references(() => uploads.id, { onDelete: 'cascade' }),
userId: bigint('user_id', { mode: 'number', unsigned: true }).notNull().references(() => users.id, { onDelete: 'cascade' }),
enabled: boolean('enabled').notNull().default(true),
createdAt: timestamp('created_at').defaultNow().notNull(),
}, t => [primaryKey({ columns: [t.uploadId, t.userId] })])
export const linkPreviews = mysqlTable('link_previews', {
urlHash: char('url_hash', { length: 64 }).primaryKey(),
url: varchar('url', { length: 2048 }).notNull(),
image: varchar('image', { length: 2048 }),
title: varchar('title', { length: 500 }),
fetchedAt: timestamp('fetched_at').defaultNow().notNull(),
})
export const notifications = mysqlTable('notifications', {
id: bigint('id', { mode: 'number', unsigned: true }).autoincrement().primaryKey(),
userId: bigint('user_id', { mode: 'number', unsigned: true }).notNull().references(() => users.id, { onDelete: 'cascade' }),
actorId: bigint('actor_id', { mode: 'number', unsigned: true }).notNull().references(() => users.id, { onDelete: 'cascade' }),
uploadId: varchar('upload_id', { length: 8 }).notNull().references(() => uploads.id, { onDelete: 'cascade' }),
commentId: bigint('comment_id', { mode: 'number', unsigned: true }).notNull().references(() => comments.id, { onDelete: 'cascade' }),
isRead: boolean('is_read').notNull().default(false),
createdAt: timestamp('created_at').defaultNow().notNull(),
})
export const roles = mysqlTable('roles', {
id: bigint('id', { mode: 'number', unsigned: true }).autoincrement().primaryKey(),
name: varchar('name', { length: 50 }).notNull().unique(),
createdAt: timestamp('created_at').defaultNow().notNull(),
})
export const userRoles = mysqlTable('user_roles', {
userId: bigint('user_id', { mode: 'number', unsigned: true }).notNull().references(() => users.id, { onDelete: 'cascade' }),
roleId: bigint('role_id', { mode: 'number', unsigned: true }).notNull().references(() => roles.id, { onDelete: 'cascade' }),
}, t => [primaryKey({ columns: [t.userId, t.roleId] })])
export const permissions = mysqlTable('permissions', {
id: bigint('id', { mode: 'number', unsigned: true }).autoincrement().primaryKey(),
key: varchar('key', { length: 50 }).notNull().unique(),
label: varchar('label', { length: 255 }).notNull(),
})
export const rolePermissions = mysqlTable('role_permissions', {
roleId: bigint('role_id', { mode: 'number', unsigned: true }).notNull().references(() => roles.id, { onDelete: 'cascade' }),
permissionId: bigint('permission_id', { mode: 'number', unsigned: true }).notNull().references(() => permissions.id, { onDelete: 'cascade' }),
}, t => [primaryKey({ columns: [t.roleId, t.permissionId] })])
export const tags = mysqlTable('tags', {
id: bigint('id', { mode: 'number', unsigned: true }).autoincrement().primaryKey(),
name: varchar('name', { length: 64 }).notNull().unique(),
createdAt: timestamp('created_at').defaultNow().notNull(),
})
export const uploadTags = mysqlTable('upload_tags', {
uploadId: varchar('upload_id', { length: 8 }).notNull().references(() => uploads.id, { onDelete: 'cascade' }),
tagId: bigint('tag_id', { mode: 'number', unsigned: true }).notNull().references(() => tags.id, { onDelete: 'cascade' }),
}, t => [primaryKey({ columns: [t.uploadId, t.tagId] })])
// Generischer Key-Value-Store für Seiten-Einstellungen (z. B. MOTD)
export const settings = mysqlTable('settings', {
key: varchar('key', { length: 100 }).primaryKey(),
value: text('value'),
})
export const usersRelations = relations(users, ({ many }) => ({
sessions: many(sessions),
uploads: many(uploads),
comments: many(comments),
userRoles: many(userRoles),
commentReactions: many(commentReactions),
uploadReactions: many(uploadReactions),
threadSubscriptions: many(threadSubscriptions),
}))
export const rolesRelations = relations(roles, ({ many }) => ({
userRoles: many(userRoles),
rolePermissions: many(rolePermissions),
}))
export const userRolesRelations = relations(userRoles, ({ one }) => ({
user: one(users, { fields: [userRoles.userId], references: [users.id] }),
role: one(roles, { fields: [userRoles.roleId], references: [roles.id] }),
}))
export const sessionsRelations = relations(sessions, ({ one }) => ({
user: one(users, { fields: [sessions.userId], references: [users.id] }),
}))
export const uploadsRelations = relations(uploads, ({ one, many }) => ({
user: one(users, { fields: [uploads.userId], references: [users.id] }),
comments: many(comments),
favorites: many(favorites),
reactions: many(uploadReactions),
threadSubscriptions: many(threadSubscriptions),
}))
export const commentsRelations = relations(comments, ({ one, many }) => ({
upload: one(uploads, { fields: [comments.uploadId], references: [uploads.id] }),
user: one(users, { fields: [comments.userId], references: [users.id] }),
reactions: many(commentReactions),
attachments: many(commentAttachments),
}))
export const commentAttachmentsRelations = relations(commentAttachments, ({ one }) => ({
comment: one(comments, { fields: [commentAttachments.commentId], references: [comments.id] }),
}))
export const commentReactionsRelations = relations(commentReactions, ({ one }) => ({
comment: one(comments, { fields: [commentReactions.commentId], references: [comments.id] }),
user: one(users, { fields: [commentReactions.userId], references: [users.id] }),
}))
export const uploadReactionsRelations = relations(uploadReactions, ({ one }) => ({
upload: one(uploads, { fields: [uploadReactions.uploadId], references: [uploads.id] }),
user: one(users, { fields: [uploadReactions.userId], references: [users.id] }),
}))
export const favoritesRelations = relations(favorites, ({ one }) => ({
upload: one(uploads, { fields: [favorites.uploadId], references: [uploads.id] }),
user: one(users, { fields: [favorites.userId], references: [users.id] }),
}))
export const rolePermissionsRelations = relations(rolePermissions, ({ one }) => ({
role: one(roles, { fields: [rolePermissions.roleId], references: [roles.id] }),
permission: one(permissions, { fields: [rolePermissions.permissionId], references: [permissions.id] }),
}))
export const threadSubscriptionsRelations = relations(threadSubscriptions, ({ one }) => ({
upload: one(uploads, { fields: [threadSubscriptions.uploadId], references: [uploads.id] }),
user: one(users, { fields: [threadSubscriptions.userId], references: [users.id] }),
}))
export const notificationsRelations = relations(notifications, ({ one }) => ({
user: one(users, { fields: [notifications.userId], references: [users.id] }),
actor: one(users, { fields: [notifications.actorId], references: [users.id] }),
upload: one(uploads, { fields: [notifications.uploadId], references: [uploads.id] }),
comment: one(comments, { fields: [notifications.commentId], references: [comments.id] }),
}))