diff --git a/drizzle/drafts/0001_breezy_maestro.sql b/drizzle/drafts/0001_breezy_maestro.sql new file mode 100644 index 00000000..57f8d3ee --- /dev/null +++ b/drizzle/drafts/0001_breezy_maestro.sql @@ -0,0 +1,25 @@ +CREATE TABLE `website_daily_reward_claims` ( + `id` bigint unsigned AUTO_INCREMENT NOT NULL, + `user_id` int NOT NULL, + `claim_date` date NOT NULL, + `streak` int unsigned NOT NULL DEFAULT 1, + `reward_day` int unsigned NOT NULL DEFAULT 1, + `currency` varchar(20) NOT NULL DEFAULT 'credits', + `amount` int NOT NULL DEFAULT 0, + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + CONSTRAINT `website_daily_reward_claims_id` PRIMARY KEY(`id`), + CONSTRAINT `daily_claim_user_date_uk` UNIQUE(`user_id`,`claim_date`) +); +--> statement-breakpoint +CREATE TABLE `website_daily_rewards` ( + `id` int unsigned AUTO_INCREMENT NOT NULL, + `day` int unsigned NOT NULL DEFAULT 1, + `currency` varchar(20) NOT NULL DEFAULT 'credits', + `amount` int NOT NULL DEFAULT 0, + `created_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + `updated_at` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + CONSTRAINT `website_daily_rewards_id` PRIMARY KEY(`id`) +); +--> statement-breakpoint +ALTER TABLE `admin_audit_log` MODIFY COLUMN `before` mediumtext;--> statement-breakpoint +ALTER TABLE `admin_audit_log` MODIFY COLUMN `after` mediumtext; \ No newline at end of file diff --git a/drizzle/drafts/meta/0001_snapshot.json b/drizzle/drafts/meta/0001_snapshot.json new file mode 100644 index 00000000..4fbc19ce --- /dev/null +++ b/drizzle/drafts/meta/0001_snapshot.json @@ -0,0 +1,14238 @@ +{ + "version": "5", + "dialect": "mysql", + "id": "70074efe-afef-450e-9911-8a235b4b0184", + "prevId": "29d0dd86-0b12-460e-a800-417774df6dbc", + "tables": { + "achievements": { + "name": "achievements", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "name": { + "name": "name", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'ACH_'" + }, + "category": { + "name": "category", + "type": "varchar(12)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'identity'" + }, + "level": { + "name": "level", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "reward_amount": { + "name": "reward_amount", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 100 + }, + "reward_type": { + "name": "reward_type", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "points": { + "name": "points", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": 10 + }, + "progress_needed": { + "name": "progress_needed", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "achievements_name_level_pk": { + "name": "achievements_name_level_pk", + "columns": [ + "name", + "level" + ] + } + }, + "uniqueConstraints": { + "achievements_id_unique": { + "name": "achievements_id_unique", + "columns": [ + "id" + ] + } + }, + "checkConstraint": {} + }, + "achievements_talents": { + "name": "achievements_talents", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "type": { + "name": "type", + "type": "varchar(11)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'citizenship'" + }, + "level": { + "name": "level", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "achievement_ids": { + "name": "achievement_ids", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "achievement_levels": { + "name": "achievement_levels", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "reward_furni": { + "name": "reward_furni", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "reward_perks": { + "name": "reward_perks", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "reward_badges": { + "name": "reward_badges", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "achievements_talents_id": { + "name": "achievements_talents_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "acl_model_permissions": { + "name": "acl_model_permissions", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "model_type": { + "name": "model_type", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'Role'" + }, + "model_id": { + "name": "model_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission_id": { + "name": "permission_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "acl_model_permissions_id": { + "name": "acl_model_permissions_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "acl_model_roles": { + "name": "acl_model_roles", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "model_type": { + "name": "model_type", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'User'" + }, + "model_id": { + "name": "model_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "role_id": { + "name": "role_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "acl_model_roles_id": { + "name": "acl_model_roles_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "acl_permissions": { + "name": "acl_permissions", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "slug": { + "name": "slug", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "title": { + "name": "title", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "created_at": { + "name": "created_at", + "type": "datetime", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP" + }, + "updated_at": { + "name": "updated_at", + "type": "datetime", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "acl_permissions_id": { + "name": "acl_permissions_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": { + "acl_permissions_slug_unique": { + "name": "acl_permissions_slug_unique", + "columns": [ + "slug" + ] + } + }, + "checkConstraint": {} + }, + "acl_roles": { + "name": "acl_roles", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "slug": { + "name": "slug", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "title": { + "name": "title", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "datetime", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP" + }, + "updated_at": { + "name": "updated_at", + "type": "datetime", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "acl_roles_id": { + "name": "acl_roles_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": { + "acl_roles_slug_unique": { + "name": "acl_roles_slug_unique", + "columns": [ + "slug" + ] + } + }, + "checkConstraint": {} + }, + "admin_audit_log": { + "name": "admin_audit_log", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "action": { + "name": "action", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "target": { + "name": "target", + "type": "varchar(191)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "target_id": { + "name": "target_id", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "details": { + "name": "details", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "before": { + "name": "before", + "type": "mediumtext", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "after": { + "name": "after", + "type": "mediumtext", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "diff": { + "name": "diff", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "ip_address": { + "name": "ip_address", + "type": "varchar(45)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "updated_at": { + "name": "updated_at", + "type": "varchar(64)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "admin_audit_log_id": { + "name": "admin_audit_log_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "alert_logs": { + "name": "alert_logs", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "type": { + "name": "type", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "severity": { + "name": "severity", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "message": { + "name": "message", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "context": { + "name": "context", + "type": "longtext", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "sent_via_email": { + "name": "sent_via_email", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "sent_via_discord": { + "name": "sent_via_discord", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "is_read": { + "name": "is_read", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "read_at": { + "name": "read_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "alert_logs_id": { + "name": "alert_logs_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "bans": { + "name": "bans", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "ip": { + "name": "ip", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "machine_id": { + "name": "machine_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "user_staff_id": { + "name": "user_staff_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "timestamp": { + "name": "timestamp", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "ban_expire": { + "name": "ban_expire", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "ban_reason": { + "name": "ban_reason", + "type": "varchar(200)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "type": { + "name": "type", + "type": "enum('account','ip','machine','super')", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'account'" + }, + "cfh_topic": { + "name": "cfh_topic", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": -1 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "bans_id": { + "name": "bans_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "bots": { + "name": "bots", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "room_id": { + "name": "room_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "name": { + "name": "name", + "type": "varchar(25)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "motto": { + "name": "motto", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "figure": { + "name": "figure", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "gender": { + "name": "gender", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'M'" + }, + "x": { + "name": "x", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "y": { + "name": "y", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "z": { + "name": "z", + "type": "double", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "rot": { + "name": "rot", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "chat_lines": { + "name": "chat_lines", + "type": "varchar(5112)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "chat_auto": { + "name": "chat_auto", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'1'" + }, + "chat_random": { + "name": "chat_random", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'1'" + }, + "chat_delay": { + "name": "chat_delay", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 5 + }, + "dance": { + "name": "dance", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "freeroam": { + "name": "freeroam", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "type": { + "name": "type", + "type": "varchar(32)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'generic'" + }, + "effect": { + "name": "effect", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "bubble_id": { + "name": "bubble_id", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": 31 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "bots_id": { + "name": "bots_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "calendar_campaigns": { + "name": "calendar_campaigns", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "image": { + "name": "image", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "start_timestamp": { + "name": "start_timestamp", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "total_days": { + "name": "total_days", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 30 + }, + "lock_expired": { + "name": "lock_expired", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'1'" + }, + "enabled": { + "name": "enabled", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'1'" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "calendar_campaigns_id": { + "name": "calendar_campaigns_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "calendar_rewards": { + "name": "calendar_rewards", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "campaign_id": { + "name": "campaign_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "product_name": { + "name": "product_name", + "type": "varchar(128)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "custom_image": { + "name": "custom_image", + "type": "varchar(128)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "credits": { + "name": "credits", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "pixels": { + "name": "pixels", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "points": { + "name": "points", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "points_type": { + "name": "points_type", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "badge": { + "name": "badge", + "type": "varchar(25)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "item_id": { + "name": "item_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "subscription_type": { + "name": "subscription_type", + "type": "varchar(128)", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "''" + }, + "subscription_days": { + "name": "subscription_days", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "calendar_rewards_id": { + "name": "calendar_rewards_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "camera_web": { + "name": "camera_web", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "room_id": { + "name": "room_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "timestamp": { + "name": "timestamp", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "url": { + "name": "url", + "type": "varchar(128)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "camera_web_id": { + "name": "camera_web_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "catalog_clothing": { + "name": "catalog_clothing", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "name": { + "name": "name", + "type": "varchar(75)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "setid": { + "name": "setid", + "type": "varchar(200)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "catalog_clothing_id": { + "name": "catalog_clothing_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "catalog_club_offers": { + "name": "catalog_club_offers", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "enabled": { + "name": "enabled", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'1'" + }, + "name": { + "name": "name", + "type": "varchar(35)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "days": { + "name": "days", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "credits": { + "name": "credits", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 10 + }, + "points": { + "name": "points", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "points_type": { + "name": "points_type", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "type": { + "name": "type", + "type": "varchar(19)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'HC'" + }, + "deal": { + "name": "deal", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "giftable": { + "name": "giftable", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "catalog_club_offers_id": { + "name": "catalog_club_offers_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "catalog_featured_pages": { + "name": "catalog_featured_pages", + "columns": { + "slot_id": { + "name": "slot_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "image": { + "name": "image", + "type": "varchar(70)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "caption": { + "name": "caption", + "type": "varchar(130)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "type": { + "name": "type", + "type": "varchar(12)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'page_name'" + }, + "expire_timestamp": { + "name": "expire_timestamp", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": -1 + }, + "page_name": { + "name": "page_name", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "page_id": { + "name": "page_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "product_name": { + "name": "product_name", + "type": "varchar(40)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "catalog_featured_pages_slot_id": { + "name": "catalog_featured_pages_slot_id", + "columns": [ + "slot_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "catalog_items": { + "name": "catalog_items", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "item_ids": { + "name": "item_ids", + "type": "varchar(666)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "page_id": { + "name": "page_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "catalog_name": { + "name": "catalog_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "cost_credits": { + "name": "cost_credits", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 3 + }, + "cost_points": { + "name": "cost_points", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "points_type": { + "name": "points_type", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "amount": { + "name": "amount", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "limited_stack": { + "name": "limited_stack", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "limited_sells": { + "name": "limited_sells", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "order_number": { + "name": "order_number", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "offer_id": { + "name": "offer_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": -1 + }, + "song_id": { + "name": "song_id", + "type": "int unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "extradata": { + "name": "extradata", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "haveOffer": { + "name": "haveOffer", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'1'" + }, + "club_only": { + "name": "club_only", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "catalog_items_id": { + "name": "catalog_items_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "catalog_items_bc": { + "name": "catalog_items_bc", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "item_ids": { + "name": "item_ids", + "type": "varchar(666)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "page_id": { + "name": "page_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "catalog_name": { + "name": "catalog_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "order_number": { + "name": "order_number", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "extradata": { + "name": "extradata", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "catalog_items_bc_id": { + "name": "catalog_items_bc_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "catalog_items_limited": { + "name": "catalog_items_limited", + "columns": { + "catalog_item_id": { + "name": "catalog_item_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "number": { + "name": "number", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "timestamp": { + "name": "timestamp", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "item_id": { + "name": "item_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "indexes": { + "catalog_items_limited_catalogItemId_number": { + "name": "catalog_items_limited_catalogItemId_number", + "columns": [ + "catalog_item_id", + "number" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "catalog_pages": { + "name": "catalog_pages", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "parent_id": { + "name": "parent_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": -1 + }, + "caption_save": { + "name": "caption_save", + "type": "varchar(25)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "caption": { + "name": "caption", + "type": "varchar(128)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "page_layout": { + "name": "page_layout", + "type": "varchar(26)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'default_3x3'" + }, + "icon_color": { + "name": "icon_color", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "icon_image": { + "name": "icon_image", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "min_rank": { + "name": "min_rank", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "order_num": { + "name": "order_num", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "visible": { + "name": "visible", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'1'" + }, + "enabled": { + "name": "enabled", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'1'" + }, + "club_only": { + "name": "club_only", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "vip_only": { + "name": "vip_only", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "page_headline": { + "name": "page_headline", + "type": "varchar(1024)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "page_teaser": { + "name": "page_teaser", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "page_special": { + "name": "page_special", + "type": "varchar(2048)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "page_text1": { + "name": "page_text1", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "page_text2": { + "name": "page_text2", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "page_text_details": { + "name": "page_text_details", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "page_text_teaser": { + "name": "page_text_teaser", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "room_id": { + "name": "room_id", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": 0 + }, + "includes": { + "name": "includes", + "type": "varchar(128)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "catalog_pages_id": { + "name": "catalog_pages_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "catalog_pages_bc": { + "name": "catalog_pages_bc", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "parent_id": { + "name": "parent_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": -1 + }, + "caption": { + "name": "caption", + "type": "varchar(128)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "page_layout": { + "name": "page_layout", + "type": "varchar(26)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'default_3x3'" + }, + "icon_color": { + "name": "icon_color", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "icon_image": { + "name": "icon_image", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "order_num": { + "name": "order_num", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "visible": { + "name": "visible", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'1'" + }, + "enabled": { + "name": "enabled", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'1'" + }, + "page_headline": { + "name": "page_headline", + "type": "varchar(1024)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "page_teaser": { + "name": "page_teaser", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "page_special": { + "name": "page_special", + "type": "varchar(2048)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "page_text1": { + "name": "page_text1", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "page_text2": { + "name": "page_text2", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "page_text_details": { + "name": "page_text_details", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "page_text_teaser": { + "name": "page_text_teaser", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "catalog_pages_bc_id": { + "name": "catalog_pages_bc_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "catalog_target_offers": { + "name": "catalog_target_offers", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "offer_code": { + "name": "offer_code", + "type": "varchar(32)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "title": { + "name": "title", + "type": "varchar(128)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "description": { + "name": "description", + "type": "varchar(2048)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "image": { + "name": "image", + "type": "varchar(128)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "icon": { + "name": "icon", + "type": "varchar(128)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "end_timestamp": { + "name": "end_timestamp", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "credits": { + "name": "credits", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 10 + }, + "points": { + "name": "points", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 10 + }, + "points_type": { + "name": "points_type", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 5 + }, + "purchase_limit": { + "name": "purchase_limit", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 5 + }, + "catalog_item": { + "name": "catalog_item", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "vars": { + "name": "vars", + "type": "varchar(1024)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "catalog_target_offers_id": { + "name": "catalog_target_offers_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "chatlogs_private": { + "name": "chatlogs_private", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "user_from_id": { + "name": "user_from_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_to_id": { + "name": "user_to_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "message": { + "name": "message", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "timestamp": { + "name": "timestamp", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "chatlogs_private_id": { + "name": "chatlogs_private_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "claimed_referral_logs": { + "name": "claimed_referral_logs", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "ip_address": { + "name": "ip_address", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "claimed_referral_logs_id": { + "name": "claimed_referral_logs_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "crafting_altars_recipes": { + "name": "crafting_altars_recipes", + "columns": { + "altar_id": { + "name": "altar_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "recipe_id": { + "name": "recipe_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "crafting_altars_recipes_altarId_recipeId": { + "name": "crafting_altars_recipes_altarId_recipeId", + "columns": [ + "altar_id", + "recipe_id" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "crafting_recipes": { + "name": "crafting_recipes", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "product_name": { + "name": "product_name", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "reward": { + "name": "reward", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "enabled": { + "name": "enabled", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'1'" + }, + "achievement": { + "name": "achievement", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "secret": { + "name": "secret", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "limited": { + "name": "limited", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "remaining": { + "name": "remaining", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "indexes": { + "crafting_recipes_productName": { + "name": "crafting_recipes_productName", + "columns": [ + "product_name" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "crafting_recipes_id": { + "name": "crafting_recipes_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": { + "crafting_recipes_product_name_unique": { + "name": "crafting_recipes_product_name_unique", + "columns": [ + "product_name" + ] + } + }, + "checkConstraint": {} + }, + "daily_challenges": { + "name": "daily_challenges", + "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 + }, + "description": { + "name": "description", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "game": { + "name": "game", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "target": { + "name": "target", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "reward_currency": { + "name": "reward_currency", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'credits'" + }, + "reward_amount": { + "name": "reward_amount", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "date": { + "name": "date", + "type": "date", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "daily_challenges_id": { + "name": "daily_challenges_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "email_templates": { + "name": "email_templates", + "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 + }, + "subject": { + "name": "subject", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "body": { + "name": "body", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "variables": { + "name": "variables", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "email_templates_id": { + "name": "email_templates_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": { + "email_templates_name_unique": { + "name": "email_templates_name_unique", + "columns": [ + "name" + ] + } + }, + "checkConstraint": {} + }, + "emulator_errors": { + "name": "emulator_errors", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "timestamp": { + "name": "timestamp", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "version": { + "name": "version", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "build_hash": { + "name": "build_hash", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "varchar(32)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'Exception'" + }, + "stacktrace": { + "name": "stacktrace", + "type": "binary", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "emulator_errors_id": { + "name": "emulator_errors_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "emulator_settings": { + "name": "emulator_settings", + "columns": { + "key": { + "name": "key", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "value": { + "name": "value", + "type": "varchar(512)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "emulator_settings_key": { + "name": "emulator_settings_key", + "columns": [ + "key" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "emulator_texts": { + "name": "emulator_texts", + "columns": { + "key": { + "name": "key", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "value": { + "name": "value", + "type": "varchar(4096)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "emulator_texts_key": { + "name": "emulator_texts_key", + "columns": [ + "key" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "game_chat_messages": { + "name": "game_chat_messages", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "room_id": { + "name": "room_id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "message": { + "name": "message", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'chat'" + }, + "reactions": { + "name": "reactions", + "type": "longtext", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "game_chat_messages_id": { + "name": "game_chat_messages_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "game_invitations": { + "name": "game_invitations", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "from_user_id": { + "name": "from_user_id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "to_user_id": { + "name": "to_user_id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "game": { + "name": "game", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'pending'" + }, + "bet_amount": { + "name": "bet_amount", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "bet_currency": { + "name": "bet_currency", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'credits'" + }, + "room_id": { + "name": "room_id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "game_invitations_id": { + "name": "game_invitations_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "game_level_rewards": { + "name": "game_level_rewards", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "game": { + "name": "game", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "level": { + "name": "level", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "reward_type": { + "name": "reward_type", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "reward_currency": { + "name": "reward_currency", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "reward_amount": { + "name": "reward_amount", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "claimed": { + "name": "claimed", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "game_level_rewards_id": { + "name": "game_level_rewards_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "game_ranks": { + "name": "game_ranks", + "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 + }, + "slug": { + "name": "slug", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "icon": { + "name": "icon", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'⭐'" + }, + "color": { + "name": "color", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'#ffffff'" + }, + "min_points": { + "name": "min_points", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "max_points": { + "name": "max_points", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "tier": { + "name": "tier", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "game_ranks_id": { + "name": "game_ranks_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": { + "game_ranks_slug_unique": { + "name": "game_ranks_slug_unique", + "columns": [ + "slug" + ] + } + }, + "checkConstraint": {} + }, + "game_replays": { + "name": "game_replays", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "game": { + "name": "game", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "player1_id": { + "name": "player1_id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "player2_id": { + "name": "player2_id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "game_data": { + "name": "game_data", + "type": "longtext", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "moves": { + "name": "moves", + "type": "longtext", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "winner": { + "name": "winner", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "player1_score": { + "name": "player1_score", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "player2_score": { + "name": "player2_score", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "started_at": { + "name": "started_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "ended_at": { + "name": "ended_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "game_replays_id": { + "name": "game_replays_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "game_reward_claims": { + "name": "game_reward_claims", + "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 + }, + "game": { + "name": "game", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "wins_required": { + "name": "wins_required", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "game_reward_claims_userId_game_winsRequired": { + "name": "game_reward_claims_userId_game_winsRequired", + "columns": [ + "user_id", + "game", + "wins_required" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "game_reward_claims_id": { + "name": "game_reward_claims_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "game_rooms": { + "name": "game_rooms", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "game": { + "name": "game", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "player1_id": { + "name": "player1_id", + "type": "int unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "player2_id": { + "name": "player2_id", + "type": "int unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "state": { + "name": "state", + "type": "longtext", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "turn": { + "name": "turn", + "type": "int unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "winner_id": { + "name": "winner_id", + "type": "int unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "varchar(8)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'waiting'" + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "game_rooms_id": { + "name": "game_rooms_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "game_scores": { + "name": "game_scores", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "user_id": { + "name": "user_id", + "type": "int unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "game": { + "name": "game", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "score": { + "name": "score", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "game_scores_id": { + "name": "game_scores_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "gift_wrappers": { + "name": "gift_wrappers", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "sprite_id": { + "name": "sprite_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "item_id": { + "name": "item_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "varchar(7)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'wrapper'" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "gift_wrappers_id": { + "name": "gift_wrappers_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "groups_items": { + "name": "groups_items", + "columns": { + "type": { + "name": "type", + "type": "varchar(6)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "firstvalue": { + "name": "firstvalue", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "secondvalue": { + "name": "secondvalue", + "type": "varchar(2000)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "enabled": { + "name": "enabled", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'1'" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "groups_items_id_type_pk": { + "name": "groups_items_id_type_pk", + "columns": [ + "id", + "type" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "guild_forum_views": { + "name": "guild_forum_views", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "guild_id": { + "name": "guild_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "timestamp": { + "name": "timestamp", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "guild_forum_views_id": { + "name": "guild_forum_views_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "guilds": { + "name": "guilds", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "name": { + "name": "name", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "description": { + "name": "description", + "type": "varchar(250)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "room_id": { + "name": "room_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "state": { + "name": "state", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "rights": { + "name": "rights", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "color_one": { + "name": "color_one", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "color_two": { + "name": "color_two", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "badge": { + "name": "badge", + "type": "varchar(256)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "date_created": { + "name": "date_created", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "forum": { + "name": "forum", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "read_forum": { + "name": "read_forum", + "type": "varchar(8)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'EVERYONE'" + }, + "post_messages": { + "name": "post_messages", + "type": "varchar(8)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'EVERYONE'" + }, + "post_threads": { + "name": "post_threads", + "type": "varchar(8)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'EVERYONE'" + }, + "mod_forum": { + "name": "mod_forum", + "type": "varchar(6)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'ADMINS'" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "guilds_id": { + "name": "guilds_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "guilds_elements": { + "name": "guilds_elements", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "firstvalue": { + "name": "firstvalue", + "type": "varchar(300)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "secondvalue": { + "name": "secondvalue", + "type": "varchar(300)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "enabled": { + "name": "enabled", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'1'" + } + }, + "indexes": { + "guilds_elements_id_type": { + "name": "guilds_elements_id_type", + "columns": [ + "id", + "type" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "guilds_forums_comments": { + "name": "guilds_forums_comments", + "columns": { + "id": { + "name": "id", + "type": "int unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "thread_id": { + "name": "thread_id", + "type": "int unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "message": { + "name": "message", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "state": { + "name": "state", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "admin_id": { + "name": "admin_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "guilds_forums_comments_id": { + "name": "guilds_forums_comments_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "guilds_forums_threads": { + "name": "guilds_forums_threads", + "columns": { + "id": { + "name": "id", + "type": "int unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "guild_id": { + "name": "guild_id", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": 0 + }, + "opener_id": { + "name": "opener_id", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": 0 + }, + "subject": { + "name": "subject", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "''" + }, + "posts_count": { + "name": "posts_count", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": 0 + }, + "created_at": { + "name": "created_at", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": 0 + }, + "updated_at": { + "name": "updated_at", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": 0 + }, + "state": { + "name": "state", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": 0 + }, + "pinned": { + "name": "pinned", + "type": "tinyint", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": 0 + }, + "locked": { + "name": "locked", + "type": "tinyint", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": 0 + }, + "admin_id": { + "name": "admin_id", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "guilds_forums_threads_id": { + "name": "guilds_forums_threads_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "guilds_members": { + "name": "guilds_members", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "guild_id": { + "name": "guild_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "level_id": { + "name": "level_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "member_since": { + "name": "member_since", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "guilds_members_id": { + "name": "guilds_members_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "hotelview_news": { + "name": "hotelview_news", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "title": { + "name": "title", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "text": { + "name": "text", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "button_text": { + "name": "button_text", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "button_type": { + "name": "button_type", + "type": "varchar(6)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'web'" + }, + "button_link": { + "name": "button_link", + "type": "varchar(200)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "image": { + "name": "image", + "type": "varchar(200)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "hotelview_news_id": { + "name": "hotelview_news_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "items": { + "name": "items", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "room_id": { + "name": "room_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "item_id": { + "name": "item_id", + "type": "int unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": 0 + }, + "wall_pos": { + "name": "wall_pos", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "x": { + "name": "x", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "y": { + "name": "y", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "z": { + "name": "z", + "type": "double", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "rot": { + "name": "rot", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "extra_data": { + "name": "extra_data", + "type": "varchar(1024)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "wired_data": { + "name": "wired_data", + "type": "varchar(10000)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "limited_data": { + "name": "limited_data", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0:0'" + }, + "guild_id": { + "name": "guild_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "items_id": { + "name": "items_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "items_base": { + "name": "items_base", + "columns": { + "id": { + "name": "id", + "type": "int unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "sprite_id": { + "name": "sprite_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "public_name": { + "name": "public_name", + "type": "varchar(56)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "item_name": { + "name": "item_name", + "type": "varchar(70)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "varchar(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'s'" + }, + "width": { + "name": "width", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "length": { + "name": "length", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "stack_height": { + "name": "stack_height", + "type": "double", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "allow_stack": { + "name": "allow_stack", + "type": "tinyint", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "allow_sit": { + "name": "allow_sit", + "type": "tinyint", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "allow_lay": { + "name": "allow_lay", + "type": "tinyint", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "allow_walk": { + "name": "allow_walk", + "type": "tinyint", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "allow_gift": { + "name": "allow_gift", + "type": "tinyint", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "allow_trade": { + "name": "allow_trade", + "type": "tinyint", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "allow_recycle": { + "name": "allow_recycle", + "type": "tinyint", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "allow_marketplace_sell": { + "name": "allow_marketplace_sell", + "type": "tinyint", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "allow_inventory_stack": { + "name": "allow_inventory_stack", + "type": "tinyint", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "interaction_type": { + "name": "interaction_type", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'default'" + }, + "interaction_modes_count": { + "name": "interaction_modes_count", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "vending_ids": { + "name": "vending_ids", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "multiheight": { + "name": "multiheight", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "customparams": { + "name": "customparams", + "type": "varchar(25600)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "effect_id_male": { + "name": "effect_id_male", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "effect_id_female": { + "name": "effect_id_female", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "clothing_on_walk": { + "name": "clothing_on_walk", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "items_base_id": { + "name": "items_base_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "items_crackable": { + "name": "items_crackable", + "columns": { + "item_id": { + "name": "item_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "item_name": { + "name": "item_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "count": { + "name": "count", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "prizes": { + "name": "prizes", + "type": "varchar(860)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'179:1'" + }, + "achievement_tick": { + "name": "achievement_tick", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "achievement_cracked": { + "name": "achievement_cracked", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "required_effect": { + "name": "required_effect", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "subscription_duration": { + "name": "subscription_duration", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "subscription_type": { + "name": "subscription_type", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "items_crackable_item_id": { + "name": "items_crackable_item_id", + "columns": [ + "item_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "items_highscore_data": { + "name": "items_highscore_data", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "item_id": { + "name": "item_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_ids": { + "name": "user_ids", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "score": { + "name": "score", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "is_win": { + "name": "is_win", + "type": "tinyint", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": 0 + }, + "timestamp": { + "name": "timestamp", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "items_highscore_data_id": { + "name": "items_highscore_data_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "logs_furni_imports": { + "name": "logs_furni_imports", + "columns": { + "id": { + "name": "id", + "type": "int unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "timestamp": { + "name": "timestamp", + "type": "int unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "batch": { + "name": "batch", + "type": "tinyint", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "total_items": { + "name": "total_items", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "succeeded": { + "name": "succeeded", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "failed": { + "name": "failed", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "details": { + "name": "details", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "rolled_back": { + "name": "rolled_back", + "type": "tinyint", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "rolled_back_at": { + "name": "rolled_back_at", + "type": "int unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "rolled_back_by": { + "name": "rolled_back_by", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "logs_furni_imports_id": { + "name": "logs_furni_imports_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "logs_hc_payday": { + "name": "logs_hc_payday", + "columns": { + "id": { + "name": "id", + "type": "int unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "timestamp": { + "name": "timestamp", + "type": "int unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "hc_streak": { + "name": "hc_streak", + "type": "int unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "total_coins_spent": { + "name": "total_coins_spent", + "type": "int unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "reward_coins_spent": { + "name": "reward_coins_spent", + "type": "int unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "reward_streak": { + "name": "reward_streak", + "type": "int unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "total_payout": { + "name": "total_payout", + "type": "int unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "currency": { + "name": "currency", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "claimed": { + "name": "claimed", + "type": "tinyint", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "logs_hc_payday_id": { + "name": "logs_hc_payday_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "logs_shop_purchases": { + "name": "logs_shop_purchases", + "columns": { + "id": { + "name": "id", + "type": "int unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "timestamp": { + "name": "timestamp", + "type": "int unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "catalog_item_id": { + "name": "catalog_item_id", + "type": "int unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "item_ids": { + "name": "item_ids", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "catalog_name": { + "name": "catalog_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "cost_credits": { + "name": "cost_credits", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "cost_points": { + "name": "cost_points", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "points_type": { + "name": "points_type", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "amount": { + "name": "amount", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "logs_shop_purchases_id": { + "name": "logs_shop_purchases_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "marketplace_items": { + "name": "marketplace_items", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "item_id": { + "name": "item_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "price": { + "name": "price", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "timestamp": { + "name": "timestamp", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "sold_timestamp": { + "name": "sold_timestamp", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "state": { + "name": "state", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "marketplace_items_id": { + "name": "marketplace_items_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "messenger_categories": { + "name": "messenger_categories", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "name": { + "name": "name", + "type": "varchar(25)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "messenger_categories_id": { + "name": "messenger_categories_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "messenger_friendrequests": { + "name": "messenger_friendrequests", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "user_to_id": { + "name": "user_to_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "user_from_id": { + "name": "user_from_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "messenger_friendrequests_id": { + "name": "messenger_friendrequests_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "messenger_friendships": { + "name": "messenger_friendships", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "user_one_id": { + "name": "user_one_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "user_two_id": { + "name": "user_two_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "relation": { + "name": "relation", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "friends_since": { + "name": "friends_since", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "category": { + "name": "category", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "messenger_friendships_id": { + "name": "messenger_friendships_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "messenger_offline": { + "name": "messenger_offline", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "user_from_id": { + "name": "user_from_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "message": { + "name": "message", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "sended_on": { + "name": "sended_on", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "messenger_offline_id": { + "name": "messenger_offline_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "navigator_filter": { + "name": "navigator_filter", + "columns": { + "key": { + "name": "key", + "type": "varchar(11)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "field": { + "name": "field", + "type": "varchar(32)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "compare": { + "name": "compare", + "type": "varchar(18)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "database_query": { + "name": "database_query", + "type": "varchar(1024)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "navigator_filter_key": { + "name": "navigator_filter_key", + "columns": [ + "key" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "navigator_flatcats": { + "name": "navigator_flatcats", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "min_rank": { + "name": "min_rank", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "caption_save": { + "name": "caption_save", + "type": "varchar(32)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'caption_save'" + }, + "caption": { + "name": "caption", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "canTrade": { + "name": "canTrade", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'1'" + }, + "max_user_count": { + "name": "max_user_count", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 100 + }, + "public": { + "name": "public", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "list_type": { + "name": "list_type", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "order_num": { + "name": "order_num", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "navigator_flatcats_id": { + "name": "navigator_flatcats_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "navigator_publiccats": { + "name": "navigator_publiccats", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "name": { + "name": "name", + "type": "varchar(32)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'Staff Picks'" + }, + "image": { + "name": "image", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "visible": { + "name": "visible", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'1'" + }, + "order_num": { + "name": "order_num", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "navigator_publiccats_id": { + "name": "navigator_publiccats_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "nux_gifts": { + "name": "nux_gifts", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "type": { + "name": "type", + "type": "varchar(4)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'item'" + }, + "value": { + "name": "value", + "type": "varchar(32)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "image": { + "name": "image", + "type": "varchar(256)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "nux_gifts_id": { + "name": "nux_gifts_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "old_guilds_forums": { + "name": "old_guilds_forums", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "guild_id": { + "name": "guild_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "subject": { + "name": "subject", + "type": "mediumtext", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "message": { + "name": "message", + "type": "longtext", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "state": { + "name": "state", + "type": "varchar(15)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'OPEN'" + }, + "admin_id": { + "name": "admin_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "pinned": { + "name": "pinned", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "locked": { + "name": "locked", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "timestamp": { + "name": "timestamp", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "old_guilds_forums_id": { + "name": "old_guilds_forums_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "old_guilds_forums_comments": { + "name": "old_guilds_forums_comments", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "thread_id": { + "name": "thread_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "timestamp": { + "name": "timestamp", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "message": { + "name": "message", + "type": "longtext", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "state": { + "name": "state", + "type": "varchar(15)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'OPEN'" + }, + "admin_id": { + "name": "admin_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "old_guilds_forums_comments_id": { + "name": "old_guilds_forums_comments_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "password_resets": { + "name": "password_resets", + "columns": { + "email": { + "name": "email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "token": { + "name": "token", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "password_resets_email": { + "name": "password_resets_email", + "columns": [ + "email" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "personal_access_tokens": { + "name": "personal_access_tokens", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "tokenable_id": { + "name": "tokenable_id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "tokenable_type": { + "name": "tokenable_type", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "token": { + "name": "token", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "abilities": { + "name": "abilities", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "last_used_at": { + "name": "last_used_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "personal_access_tokens_id": { + "name": "personal_access_tokens_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": { + "personal_access_tokens_token_unique": { + "name": "personal_access_tokens_token_unique", + "columns": [ + "token" + ] + } + }, + "checkConstraint": {} + }, + "pet_actions": { + "name": "pet_actions", + "columns": { + "ID": { + "name": "ID", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "pet_type": { + "name": "pet_type", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "pet_name": { + "name": "pet_name", + "type": "varchar(32)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "offspring_type": { + "name": "offspring_type", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": -1 + }, + "happy_actions": { + "name": "happy_actions", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "tired_actions": { + "name": "tired_actions", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "random_actions": { + "name": "random_actions", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "can_swim": { + "name": "can_swim", + "type": "varchar(1)", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'0'" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "pet_actions_ID": { + "name": "pet_actions_ID", + "columns": [ + "ID" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "pet_breeds": { + "name": "pet_breeds", + "columns": { + "race": { + "name": "race", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "color_one": { + "name": "color_one", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "color_two": { + "name": "color_two", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "has_color_one": { + "name": "has_color_one", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "has_color_two": { + "name": "has_color_two", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + } + }, + "indexes": { + "pet_breeds_race_colorOne_colorTwo_hasColorOne_hasColorTwo": { + "name": "pet_breeds_race_colorOne_colorTwo_hasColorOne_hasColorTwo", + "columns": [ + "race", + "color_one", + "color_two", + "has_color_one", + "has_color_two" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "pet_commands_data": { + "name": "pet_commands_data", + "columns": { + "command_id": { + "name": "command_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "text": { + "name": "text", + "type": "varchar(15)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "required_level": { + "name": "required_level", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "reward_xp": { + "name": "reward_xp", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 5 + }, + "cost_happyness": { + "name": "cost_happyness", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "cost_energy": { + "name": "cost_energy", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "pet_commands_data_command_id": { + "name": "pet_commands_data_command_id", + "columns": [ + "command_id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "polls": { + "name": "polls", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "title": { + "name": "title", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'Hey! We''d appreciate it if you could take some time to answer these questions. It will help improve our hotel.'" + }, + "thanks_message": { + "name": "thanks_message", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "reward_badge": { + "name": "reward_badge", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "polls_id": { + "name": "polls_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "polls_answers": { + "name": "polls_answers", + "columns": { + "poll_id": { + "name": "poll_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "question_id": { + "name": "question_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "answer": { + "name": "answer", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "polls_answers_pollId_userId_questionId": { + "name": "polls_answers_pollId_userId_questionId", + "columns": [ + "poll_id", + "user_id", + "question_id" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "polls_questions": { + "name": "polls_questions", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "parent_id": { + "name": "parent_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "poll_id": { + "name": "poll_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "order": { + "name": "order", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "question": { + "name": "question", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 2 + }, + "min_selections": { + "name": "min_selections", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "options": { + "name": "options", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "polls_questions_id": { + "name": "polls_questions_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "radio_api_keys": { + "name": "radio_api_keys", + "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 + }, + "key": { + "name": "key", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "allowed_ips": { + "name": "allowed_ips", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "permissions": { + "name": "permissions", + "type": "longtext", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "rate_limit": { + "name": "rate_limit", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 300 + }, + "last_used_at": { + "name": "last_used_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "radio_api_keys_id": { + "name": "radio_api_keys_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": { + "radio_api_keys_key_unique": { + "name": "radio_api_keys_key_unique", + "columns": [ + "key" + ] + } + }, + "checkConstraint": {} + }, + "radio_applications": { + "name": "radio_applications", + "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 + }, + "real_name": { + "name": "real_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "age": { + "name": "age", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "availability": { + "name": "availability", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "experience": { + "name": "experience", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "motivation": { + "name": "motivation", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "music_style": { + "name": "music_style", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "discord_username": { + "name": "discord_username", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "rank_id": { + "name": "rank_id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "varchar(8)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'pending'" + }, + "approved_by": { + "name": "approved_by", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "approved_at": { + "name": "approved_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "rejected_by": { + "name": "rejected_by", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "rejected_at": { + "name": "rejected_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "radio_applications_id": { + "name": "radio_applications_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "radio_auto_dj_playlist": { + "name": "radio_auto_dj_playlist", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "title": { + "name": "title", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "artist": { + "name": "artist", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "album": { + "name": "album", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "artwork_url": { + "name": "artwork_url", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "duration": { + "name": "duration", + "type": "int unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "play_count": { + "name": "play_count", + "type": "int unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "last_played_at": { + "name": "last_played_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": true + }, + "sort_order": { + "name": "sort_order", + "type": "int unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "radio_auto_dj_playlist_id": { + "name": "radio_auto_dj_playlist_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "radio_banners": { + "name": "radio_banners", + "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 + }, + "image_path": { + "name": "image_path", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "title": { + "name": "title", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "sort_order": { + "name": "sort_order", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "radio_banners_id": { + "name": "radio_banners_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "radio_contests": { + "name": "radio_contests", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "title": { + "name": "title", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "prize": { + "name": "prize", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "start_date": { + "name": "start_date", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "end_date": { + "name": "end_date", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "winner_id": { + "name": "winner_id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": true + }, + "created_by": { + "name": "created_by", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "radio_contests_id": { + "name": "radio_contests_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "radio_giveaways": { + "name": "radio_giveaways", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "title": { + "name": "title", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "prize": { + "name": "prize", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "prize_amount": { + "name": "prize_amount", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "prize_currency": { + "name": "prize_currency", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "start_date": { + "name": "start_date", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "end_date": { + "name": "end_date", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "winner_id": { + "name": "winner_id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": true + }, + "created_by": { + "name": "created_by", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "radio_giveaways_id": { + "name": "radio_giveaways_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "radio_history": { + "name": "radio_history", + "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 + }, + "show_name": { + "name": "show_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "started_at": { + "name": "started_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "ended_at": { + "name": "ended_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "listeners_count": { + "name": "listeners_count", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "notes": { + "name": "notes", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "radio_history_id": { + "name": "radio_history_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "radio_listener_points": { + "name": "radio_listener_points", + "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 + }, + "points": { + "name": "points", + "type": "decimal(10,2)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "radio_listener_points_id": { + "name": "radio_listener_points_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "radio_ranks": { + "name": "radio_ranks", + "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 + }, + "description": { + "name": "description", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "badge_code": { + "name": "badge_code", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "radio_ranks_id": { + "name": "radio_ranks_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "radio_schedules": { + "name": "radio_schedules", + "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 + }, + "day": { + "name": "day", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "start_time": { + "name": "start_time", + "type": "time", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "end_time": { + "name": "end_time", + "type": "time", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "show_name": { + "name": "show_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "radio_schedules_id": { + "name": "radio_schedules_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "radio_shouts": { + "name": "radio_shouts", + "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 + }, + "message": { + "name": "message", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "radio_shouts_id": { + "name": "radio_shouts_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "radio_song_plays": { + "name": "radio_song_plays", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "title": { + "name": "title", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "artist": { + "name": "artist", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "album": { + "name": "album", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "artwork_url": { + "name": "artwork_url", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "duration": { + "name": "duration", + "type": "int unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "played_at": { + "name": "played_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "dj_id": { + "name": "dj_id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "metadata": { + "name": "metadata", + "type": "longtext", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "radio_song_plays_id": { + "name": "radio_song_plays_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "radio_song_requests": { + "name": "radio_song_requests", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "user_id": { + "name": "user_id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "song_title": { + "name": "song_title", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "artist": { + "name": "artist", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "is_approved": { + "name": "is_approved", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "is_played": { + "name": "is_played", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "votes": { + "name": "votes", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "submitted_at": { + "name": "submitted_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "played_at": { + "name": "played_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "radio_song_requests_id": { + "name": "radio_song_requests_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "radio_song_votes": { + "name": "radio_song_votes", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "radio_song_votes_id": { + "name": "radio_song_votes_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "referrals": { + "name": "referrals", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "referred_user_id": { + "name": "referred_user_id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "referred_user_ip": { + "name": "referred_user_ip", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "referrals_id": { + "name": "referrals_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "room_models": { + "name": "room_models", + "columns": { + "name": { + "name": "name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "door_x": { + "name": "door_x", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "door_y": { + "name": "door_y", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "door_dir": { + "name": "door_dir", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 2 + }, + "heightmap": { + "name": "heightmap", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "public_items": { + "name": "public_items", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "club_only": { + "name": "club_only", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "room_models_name": { + "name": "room_models_name", + "columns": [ + "name" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "room_trade_log": { + "name": "room_trade_log", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "user_one_id": { + "name": "user_one_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_two_id": { + "name": "user_two_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_one_ip": { + "name": "user_one_ip", + "type": "varchar(45)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_two_ip": { + "name": "user_two_ip", + "type": "varchar(45)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "timestamp": { + "name": "timestamp", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_one_item_count": { + "name": "user_one_item_count", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_two_item_count": { + "name": "user_two_item_count", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "room_trade_log_id": { + "name": "room_trade_log_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "room_trade_log_items": { + "name": "room_trade_log_items", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "item_id": { + "name": "item_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "room_trade_log_items_id_itemId_userId": { + "name": "room_trade_log_items_id_itemId_userId", + "columns": [ + "id", + "item_id", + "user_id" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "room_wordfilter": { + "name": "room_wordfilter", + "columns": { + "room_id": { + "name": "room_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "word": { + "name": "word", + "type": "varchar(25)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "room_wordfilter_roomId_word": { + "name": "room_wordfilter_roomId_word", + "columns": [ + "room_id", + "word" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "rooms": { + "name": "rooms", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "owner_id": { + "name": "owner_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "owner_name": { + "name": "owner_name", + "type": "varchar(25)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "name": { + "name": "name", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "description": { + "name": "description", + "type": "varchar(512)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "model": { + "name": "model", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'model_a'" + }, + "password": { + "name": "password", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "state": { + "name": "state", + "type": "varchar(9)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'open'" + }, + "users": { + "name": "users", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "users_max": { + "name": "users_max", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 25 + }, + "guild_id": { + "name": "guild_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "category": { + "name": "category", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "score": { + "name": "score", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "paper_floor": { + "name": "paper_floor", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0.0'" + }, + "paper_wall": { + "name": "paper_wall", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0.0'" + }, + "paper_landscape": { + "name": "paper_landscape", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0.0'" + }, + "thickness_wall": { + "name": "thickness_wall", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "wall_height": { + "name": "wall_height", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": -1 + }, + "thickness_floor": { + "name": "thickness_floor", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "moodlight_data": { + "name": "moodlight_data", + "type": "varchar(254)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'2,1,1,#000000,255;2,3,1,#000000,255;2,3,1,#000000,255;'" + }, + "tags": { + "name": "tags", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "is_public": { + "name": "is_public", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "is_staff_picked": { + "name": "is_staff_picked", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "allow_other_pets": { + "name": "allow_other_pets", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "allow_other_pets_eat": { + "name": "allow_other_pets_eat", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "allow_walkthrough": { + "name": "allow_walkthrough", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'1'" + }, + "allow_hidewall": { + "name": "allow_hidewall", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "chat_mode": { + "name": "chat_mode", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "chat_weight": { + "name": "chat_weight", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "chat_speed": { + "name": "chat_speed", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "chat_hearing_distance": { + "name": "chat_hearing_distance", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 50 + }, + "chat_protection": { + "name": "chat_protection", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 2 + }, + "override_model": { + "name": "override_model", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "who_can_mute": { + "name": "who_can_mute", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "who_can_kick": { + "name": "who_can_kick", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "who_can_ban": { + "name": "who_can_ban", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "poll_id": { + "name": "poll_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "roller_speed": { + "name": "roller_speed", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 4 + }, + "promoted": { + "name": "promoted", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "trade_mode": { + "name": "trade_mode", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 2 + }, + "move_diagonally": { + "name": "move_diagonally", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'1'" + }, + "jukebox_active": { + "name": "jukebox_active", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "hidewired": { + "name": "hidewired", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "is_forsale": { + "name": "is_forsale", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "rooms_id": { + "name": "rooms_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "sanction_levels": { + "name": "sanction_levels", + "columns": { + "level": { + "name": "level", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "varchar(5)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "hour_length": { + "name": "hour_length", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "probation_days": { + "name": "probation_days", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "sanction_levels_level": { + "name": "sanction_levels_level", + "columns": [ + "level" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "sanctions": { + "name": "sanctions", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "habbo_id": { + "name": "habbo_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "sanction_level": { + "name": "sanction_level", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "probation_timestamp": { + "name": "probation_timestamp", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "reason": { + "name": "reason", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "trade_locked_until": { + "name": "trade_locked_until", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "is_muted": { + "name": "is_muted", + "type": "tinyint", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "mute_duration": { + "name": "mute_duration", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "sanctions_id": { + "name": "sanctions_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "social_accounts": { + "name": "social_accounts", + "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 + }, + "provider": { + "name": "provider", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider_id": { + "name": "provider_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "avatar": { + "name": "avatar", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "social_accounts_provider_providerId": { + "name": "social_accounts_provider_providerId", + "columns": [ + "provider", + "provider_id" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "social_accounts_id": { + "name": "social_accounts_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "soundtracks": { + "name": "soundtracks", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "code": { + "name": "code", + "type": "varchar(32)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "author": { + "name": "author", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "track": { + "name": "track", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "length": { + "name": "length", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "soundtracks_id": { + "name": "soundtracks_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "staff_activities": { + "name": "staff_activities", + "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 + }, + "action": { + "name": "action", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "target_type": { + "name": "target_type", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "target_id": { + "name": "target_id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "ip_address": { + "name": "ip_address", + "type": "varchar(45)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "metadata": { + "name": "metadata", + "type": "longtext", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "staff_activities_id": { + "name": "staff_activities_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "support_cfh_categories": { + "name": "support_cfh_categories", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "name_internal": { + "name": "name_internal", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "name_external": { + "name": "name_external", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "support_cfh_categories_id": { + "name": "support_cfh_categories_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "support_cfh_topics": { + "name": "support_cfh_topics", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "category_id": { + "name": "category_id", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "name_internal": { + "name": "name_internal", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "name_external": { + "name": "name_external", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "action": { + "name": "action", + "type": "varchar(11)", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'mods'" + }, + "ignore_target": { + "name": "ignore_target", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "auto_reply": { + "name": "auto_reply", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "default_sanction": { + "name": "default_sanction", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "support_cfh_topics_id": { + "name": "support_cfh_topics_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "support_issue_categories": { + "name": "support_issue_categories", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'PII'" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "support_issue_categories_id": { + "name": "support_issue_categories_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "support_issue_presets": { + "name": "support_issue_presets", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "category": { + "name": "category", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "name": { + "name": "name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "message": { + "name": "message", + "type": "varchar(300)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "reminder": { + "name": "reminder", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "ban_for": { + "name": "ban_for", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "mute_for": { + "name": "mute_for", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "support_issue_presets_id": { + "name": "support_issue_presets_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "support_presets": { + "name": "support_presets", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "type": { + "name": "type", + "type": "varchar(4)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'user'" + }, + "preset": { + "name": "preset", + "type": "varchar(200)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "support_presets_id": { + "name": "support_presets_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "support_tickets": { + "name": "support_tickets", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "state": { + "name": "state", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "type": { + "name": "type", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "timestamp": { + "name": "timestamp", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "score": { + "name": "score", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "sender_id": { + "name": "sender_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "reported_id": { + "name": "reported_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "room_id": { + "name": "room_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "mod_id": { + "name": "mod_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "issue": { + "name": "issue", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "category": { + "name": "category", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "group_id": { + "name": "group_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "thread_id": { + "name": "thread_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "comment_id": { + "name": "comment_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "photo_item_id": { + "name": "photo_item_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": -1 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "support_tickets_id": { + "name": "support_tickets_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "taggables": { + "name": "taggables", + "columns": { + "tag_id": { + "name": "tag_id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "taggable_id": { + "name": "taggable_id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "taggable_type": { + "name": "taggable_type", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "taggables_tagId_taggableId_taggableType": { + "name": "taggables_tagId_taggableId_taggableType", + "columns": [ + "tag_id", + "taggable_id", + "taggable_type" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "tags": { + "name": "tags", + "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 + }, + "background_color": { + "name": "background_color", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "tags_id": { + "name": "tags_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "theme_scopes": { + "name": "theme_scopes", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "name": { + "name": "name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "enum('global','site','module','route')", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "parent_id": { + "name": "parent_id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "site_domain": { + "name": "site_domain", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "route_path": { + "name": "route_path", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "module_id": { + "name": "module_id", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": true + }, + "sort_order": { + "name": "sort_order", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "created_at": { + "name": "created_at", + "type": "datetime", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "datetime", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "theme_scopes_id": { + "name": "theme_scopes_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "theme_scope_values": { + "name": "theme_scope_values", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "scope_id": { + "name": "scope_id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "setting_key": { + "name": "setting_key", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "setting_val": { + "name": "setting_val", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "mode": { + "name": "mode", + "type": "enum('light','dark')", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'light'" + }, + "created_at": { + "name": "created_at", + "type": "datetime", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "datetime", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "theme_scope_values_unique": { + "name": "theme_scope_values_unique", + "columns": [ + "scope_id", + "setting_key", + "mode" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "theme_scope_values_id": { + "name": "theme_scope_values_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "users": { + "name": "users", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "username": { + "name": "username", + "type": "varchar(25)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "real_name": { + "name": "real_name", + "type": "varchar(25)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'KREWS DEV'" + }, + "password": { + "name": "password", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "mail": { + "name": "mail", + "type": "varchar(500)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "mail_verified": { + "name": "mail_verified", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "account_created": { + "name": "account_created", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "account_day_of_birth": { + "name": "account_day_of_birth", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "last_login": { + "name": "last_login", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "last_online": { + "name": "last_online", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "motto": { + "name": "motto", + "type": "varchar(127)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "look": { + "name": "look", + "type": "varchar(256)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "gender": { + "name": "gender", + "type": "enum('M','F')", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'M'" + }, + "rank": { + "name": "rank", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "credits": { + "name": "credits", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 2500 + }, + "pixels": { + "name": "pixels", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 500 + }, + "points": { + "name": "points", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 10 + }, + "online": { + "name": "online", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "auth_ticket": { + "name": "auth_ticket", + "type": "varchar(256)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "ip_register": { + "name": "ip_register", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "ip_current": { + "name": "ip_current", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "machine_id": { + "name": "machine_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "home_room": { + "name": "home_room", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "secret_key": { + "name": "secret_key", + "type": "varchar(40)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "pincode": { + "name": "pincode", + "type": "varchar(11)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "terms_accepted": { + "name": "terms_accepted", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "age_verified": { + "name": "age_verified", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "extra_rank": { + "name": "extra_rank", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "two_factor_secret": { + "name": "two_factor_secret", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "two_factor_recovery_codes": { + "name": "two_factor_recovery_codes", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "two_factor_confirmed_at": { + "name": "two_factor_confirmed_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "website_jwt_version": { + "name": "website_jwt_version", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "users_id": { + "name": "users_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": { + "users_username_unique": { + "name": "users_username_unique", + "columns": [ + "username" + ] + } + }, + "checkConstraint": {} + }, + "user_challenge_progress": { + "name": "user_challenge_progress", + "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 + }, + "challenge_id": { + "name": "challenge_id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "progress": { + "name": "progress", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "completed": { + "name": "completed", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "claimed": { + "name": "claimed", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "completed_at": { + "name": "completed_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "user_challenge_progress_userId_challengeId": { + "name": "user_challenge_progress_userId_challengeId", + "columns": [ + "user_id", + "challenge_id" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "user_challenge_progress_id": { + "name": "user_challenge_progress_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "user_game_ranks": { + "name": "user_game_ranks", + "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 + }, + "game": { + "name": "game", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "rank_id": { + "name": "rank_id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "points": { + "name": "points", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "wins": { + "name": "wins", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "games_played": { + "name": "games_played", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "win_streak": { + "name": "win_streak", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "best_streak": { + "name": "best_streak", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "last_played_at": { + "name": "last_played_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "user_game_ranks_userId_game": { + "name": "user_game_ranks_userId_game", + "columns": [ + "user_id", + "game" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "user_game_ranks_id": { + "name": "user_game_ranks_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "user_game_xp": { + "name": "user_game_xp", + "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 + }, + "game": { + "name": "game", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "xp": { + "name": "xp", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "level": { + "name": "level", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "user_game_xp_userId_game": { + "name": "user_game_xp_userId_game", + "columns": [ + "user_id", + "game" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "user_game_xp_id": { + "name": "user_game_xp_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "user_referrals": { + "name": "user_referrals", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "referrals_total": { + "name": "referrals_total", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "user_referrals_id": { + "name": "user_referrals_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "user_watch": { + "name": "user_watch", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "staff_id": { + "name": "staff_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "target_user_id": { + "name": "target_user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "reason": { + "name": "reason", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "created_at": { + "name": "created_at", + "type": "datetime", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP" + } + }, + "indexes": { + "user_watch_staffId_targetUserId": { + "name": "user_watch_staffId_targetUserId", + "columns": [ + "staff_id", + "target_user_id" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "user_watch_id": { + "name": "user_watch_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "users_achievements": { + "name": "users_achievements", + "columns": { + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "achievement_name": { + "name": "achievement_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "progress": { + "name": "progress", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + } + }, + "indexes": { + "users_achievements_userId_achievementName": { + "name": "users_achievements_userId_achievementName", + "columns": [ + "user_id", + "achievement_name" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "users_achievements_queue": { + "name": "users_achievements_queue", + "columns": { + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "achievement_id": { + "name": "achievement_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "amount": { + "name": "amount", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "users_achievements_queue_userId_achievementId": { + "name": "users_achievements_queue_userId_achievementId", + "columns": [ + "user_id", + "achievement_id" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "users_badges": { + "name": "users_badges", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "slot_id": { + "name": "slot_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "badge_code": { + "name": "badge_code", + "type": "varchar(32)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "users_badges_id": { + "name": "users_badges_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "users_clothing": { + "name": "users_clothing", + "columns": { + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "clothing_id": { + "name": "clothing_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "users_clothing_userId_clothingId": { + "name": "users_clothing_userId_clothingId", + "columns": [ + "user_id", + "clothing_id" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "users_currency": { + "name": "users_currency", + "columns": { + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "amount": { + "name": "amount", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "users_currency_user_id_type_pk": { + "name": "users_currency_user_id_type_pk", + "columns": [ + "user_id", + "type" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "users_effects": { + "name": "users_effects", + "columns": { + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "effect": { + "name": "effect", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "duration": { + "name": "duration", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 86400 + }, + "activation_timestamp": { + "name": "activation_timestamp", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": -1 + }, + "total": { + "name": "total", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + } + }, + "indexes": { + "users_effects_userId_effect": { + "name": "users_effects_userId_effect", + "columns": [ + "user_id", + "effect" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "users_favorite_rooms": { + "name": "users_favorite_rooms", + "columns": { + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "room_id": { + "name": "room_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "users_favorite_rooms_userId_roomId": { + "name": "users_favorite_rooms_userId_roomId", + "columns": [ + "user_id", + "room_id" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "users_pets": { + "name": "users_pets", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "room_id": { + "name": "room_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(15)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'User Pet'" + }, + "race": { + "name": "race", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "color": { + "name": "color", + "type": "varchar(6)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "happyness": { + "name": "happyness", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 100 + }, + "experience": { + "name": "experience", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "energy": { + "name": "energy", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 100 + }, + "hunger": { + "name": "hunger", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "thirst": { + "name": "thirst", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "respect": { + "name": "respect", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "created": { + "name": "created", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "x": { + "name": "x", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "y": { + "name": "y", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "z": { + "name": "z", + "type": "double", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "rot": { + "name": "rot", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "hair_style": { + "name": "hair_style", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": -1 + }, + "hair_color": { + "name": "hair_color", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "saddle": { + "name": "saddle", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "ride": { + "name": "ride", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "mp_type": { + "name": "mp_type", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "mp_color": { + "name": "mp_color", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "mp_nose": { + "name": "mp_nose", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "mp_nose_color": { + "name": "mp_nose_color", + "type": "tinyint", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "mp_eyes": { + "name": "mp_eyes", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "mp_eyes_color": { + "name": "mp_eyes_color", + "type": "tinyint", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "mp_mouth": { + "name": "mp_mouth", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "mp_mouth_color": { + "name": "mp_mouth_color", + "type": "tinyint", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "mp_death_timestamp": { + "name": "mp_death_timestamp", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "mp_breedable": { + "name": "mp_breedable", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "mp_allow_breed": { + "name": "mp_allow_breed", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "gnome_data": { + "name": "gnome_data", + "type": "varchar(80)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "mp_is_dead": { + "name": "mp_is_dead", + "type": "tinyint", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "saddle_item_id": { + "name": "saddle_item_id", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "users_pets_id": { + "name": "users_pets_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "users_recipes": { + "name": "users_recipes", + "columns": { + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "recipe": { + "name": "recipe", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "users_recipes_userId_recipe": { + "name": "users_recipes_userId_recipe", + "columns": [ + "user_id", + "recipe" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "users_saved_searches": { + "name": "users_saved_searches", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "search_code": { + "name": "search_code", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "filter": { + "name": "filter", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "users_saved_searches_id": { + "name": "users_saved_searches_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "users_settings": { + "name": "users_settings", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "credits": { + "name": "credits", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "achievement_score": { + "name": "achievement_score", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "daily_respect_points": { + "name": "daily_respect_points", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 3 + }, + "daily_pet_respect_points": { + "name": "daily_pet_respect_points", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 3 + }, + "respects_given": { + "name": "respects_given", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "respects_received": { + "name": "respects_received", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "guild_id": { + "name": "guild_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "can_change_name": { + "name": "can_change_name", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "can_trade": { + "name": "can_trade", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'1'" + }, + "is_citizen": { + "name": "is_citizen", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "citizen_level": { + "name": "citizen_level", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "helper_level": { + "name": "helper_level", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "tradelock_amount": { + "name": "tradelock_amount", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "cfh_send": { + "name": "cfh_send", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "cfh_abusive": { + "name": "cfh_abusive", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "cfh_warnings": { + "name": "cfh_warnings", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "cfh_bans": { + "name": "cfh_bans", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "block_following": { + "name": "block_following", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "block_friendrequests": { + "name": "block_friendrequests", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "block_roominvites": { + "name": "block_roominvites", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "volume_system": { + "name": "volume_system", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 100 + }, + "volume_furni": { + "name": "volume_furni", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 100 + }, + "volume_trax": { + "name": "volume_trax", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 100 + }, + "old_chat": { + "name": "old_chat", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "block_camera_follow": { + "name": "block_camera_follow", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "chat_color": { + "name": "chat_color", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "home_room": { + "name": "home_room", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "online_time": { + "name": "online_time", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "tags": { + "name": "tags", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'Arcturus Emulator;'" + }, + "club_expire_timestamp": { + "name": "club_expire_timestamp", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "login_streak": { + "name": "login_streak", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "rent_space_id": { + "name": "rent_space_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "rent_space_endtime": { + "name": "rent_space_endtime", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "hof_points": { + "name": "hof_points", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "block_alerts": { + "name": "block_alerts", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "talent_track_citizenship_level": { + "name": "talent_track_citizenship_level", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": -1 + }, + "talent_track_helpers_level": { + "name": "talent_track_helpers_level", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": -1 + }, + "ignore_bots": { + "name": "ignore_bots", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "ignore_pets": { + "name": "ignore_pets", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "nux": { + "name": "nux", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "mute_end_timestamp": { + "name": "mute_end_timestamp", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "allow_name_change": { + "name": "allow_name_change", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "perk_trade": { + "name": "perk_trade", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'0'" + }, + "forums_post_count": { + "name": "forums_post_count", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": 0 + }, + "ui_flags": { + "name": "ui_flags", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "has_gotten_default_saved_searches": { + "name": "has_gotten_default_saved_searches", + "type": "tinyint", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "hc_gifts_claimed": { + "name": "hc_gifts_claimed", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": 0 + }, + "last_hc_payday": { + "name": "last_hc_payday", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": 0 + }, + "max_rooms": { + "name": "max_rooms", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": 50 + }, + "max_friends": { + "name": "max_friends", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": 300 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "users_settings_id": { + "name": "users_settings_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": { + "users_settings_user_id_unique": { + "name": "users_settings_user_id_unique", + "columns": [ + "user_id" + ] + } + }, + "checkConstraint": {} + }, + "users_subscriptions": { + "name": "users_subscriptions", + "columns": { + "id": { + "name": "id", + "type": "int unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "subscription_type": { + "name": "subscription_type", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "timestamp_start": { + "name": "timestamp_start", + "type": "int unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "duration": { + "name": "duration", + "type": "int unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "active": { + "name": "active", + "type": "tinyint", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": 1 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "users_subscriptions_id": { + "name": "users_subscriptions_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "users_target_offer_purchases": { + "name": "users_target_offer_purchases", + "columns": { + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "offer_id": { + "name": "offer_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "state": { + "name": "state", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "amount": { + "name": "amount", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "last_purchase": { + "name": "last_purchase", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "indexes": { + "users_target_offer_purchases_userId_offerId": { + "name": "users_target_offer_purchases_userId_offerId", + "columns": [ + "user_id", + "offer_id" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "users_wardrobe": { + "name": "users_wardrobe", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "slot_id": { + "name": "slot_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "look": { + "name": "look", + "type": "varchar(256)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "gender": { + "name": "gender", + "type": "varchar(1)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'F'" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "users_wardrobe_id": { + "name": "users_wardrobe_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "voucher_history": { + "name": "voucher_history", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "voucher_id": { + "name": "voucher_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "timestamp": { + "name": "timestamp", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "voucher_history_id": { + "name": "voucher_history_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "vouchers": { + "name": "vouchers", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "code": { + "name": "code", + "type": "varchar(10)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "credits": { + "name": "credits", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "points": { + "name": "points", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "points_type": { + "name": "points_type", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "catalog_item_id": { + "name": "catalog_item_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "amount": { + "name": "amount", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "limit": { + "name": "limit", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": -1 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "vouchers_id": { + "name": "vouchers_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "website_ads": { + "name": "website_ads", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "image": { + "name": "image", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_ads_id": { + "name": "website_ads_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "website_article_comments": { + "name": "website_article_comments", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "article_id": { + "name": "article_id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "comment": { + "name": "comment", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_article_comments_id": { + "name": "website_article_comments_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "website_article_reactions": { + "name": "website_article_reactions", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "user_id": { + "name": "user_id", + "type": "int unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "article_id": { + "name": "article_id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "reaction": { + "name": "reaction", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "active": { + "name": "active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": true + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_article_reactions_id": { + "name": "website_article_reactions_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "website_articles": { + "name": "website_articles", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "slug": { + "name": "slug", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "title": { + "name": "title", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "short_story": { + "name": "short_story", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "full_story": { + "name": "full_story", + "type": "longtext", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "image": { + "name": "image", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'published'" + }, + "publish_at": { + "name": "publish_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "published_at": { + "name": "published_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_articles_id": { + "name": "website_articles_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": { + "website_articles_slug_unique": { + "name": "website_articles_slug_unique", + "columns": [ + "slug" + ] + } + }, + "checkConstraint": {} + }, + "website_badges": { + "name": "website_badges", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "badge_key": { + "name": "badge_key", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "badge_name": { + "name": "badge_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "badge_description": { + "name": "badge_description", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_badges_id": { + "name": "website_badges_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": { + "website_badges_badge_key_unique": { + "name": "website_badges_badge_key_unique", + "columns": [ + "badge_key" + ] + } + }, + "checkConstraint": {} + }, + "website_banners": { + "name": "website_banners", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "title": { + "name": "title", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "subtitle": { + "name": "subtitle", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "image": { + "name": "image", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "link": { + "name": "link", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "color": { + "name": "color", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "is_active": { + "name": "is_active", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "sort_order": { + "name": "sort_order", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "start_date": { + "name": "start_date", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "end_date": { + "name": "end_date", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_banners_id": { + "name": "website_banners_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "website_beta_codes": { + "name": "website_beta_codes", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "code": { + "name": "code", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_beta_codes_id": { + "name": "website_beta_codes_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": { + "website_beta_codes_code_unique": { + "name": "website_beta_codes_code_unique", + "columns": [ + "code" + ] + } + }, + "checkConstraint": {} + }, + "website_daily_reward_claims": { + "name": "website_daily_reward_claims", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "claim_date": { + "name": "claim_date", + "type": "date", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "streak": { + "name": "streak", + "type": "int unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "reward_day": { + "name": "reward_day", + "type": "int unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "currency": { + "name": "currency", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'credits'" + }, + "amount": { + "name": "amount", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "created_at": { + "name": "created_at", + "type": "datetime(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3)" + } + }, + "indexes": { + "daily_claim_user_date_uk": { + "name": "daily_claim_user_date_uk", + "columns": [ + "user_id", + "claim_date" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_daily_reward_claims_id": { + "name": "website_daily_reward_claims_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "website_daily_rewards": { + "name": "website_daily_rewards", + "columns": { + "id": { + "name": "id", + "type": "int unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "day": { + "name": "day", + "type": "int unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "currency": { + "name": "currency", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'credits'" + }, + "amount": { + "name": "amount", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "created_at": { + "name": "created_at", + "type": "datetime(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3)" + }, + "updated_at": { + "name": "updated_at", + "type": "datetime(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3)" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_daily_rewards_id": { + "name": "website_daily_rewards_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "website_drawbadges": { + "name": "website_drawbadges", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "badge_path": { + "name": "badge_path", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "badge_url": { + "name": "badge_url", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "badge_name": { + "name": "badge_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "badge_desc": { + "name": "badge_desc", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "published": { + "name": "published", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_drawbadges_id": { + "name": "website_drawbadges_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "website_events": { + "name": "website_events", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "title": { + "name": "title", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "type_id": { + "name": "type_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "host_user_id": { + "name": "host_user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "room_id": { + "name": "room_id", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "starts_at": { + "name": "starts_at", + "type": "datetime(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "ends_at": { + "name": "ends_at", + "type": "datetime(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "max_players": { + "name": "max_players", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "is_recurring": { + "name": "is_recurring", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "recurrence_rule": { + "name": "recurrence_rule", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'draft'" + }, + "image": { + "name": "image", + "type": "varchar(500)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "datetime(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP" + }, + "updated_at": { + "name": "updated_at", + "type": "datetime(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_events_id": { + "name": "website_events_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "website_event_prizes": { + "name": "website_event_prizes", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "event_id": { + "name": "event_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "position": { + "name": "position", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "prize_type": { + "name": "prize_type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'badge'" + }, + "badge_code": { + "name": "badge_code", + "type": "varchar(50)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "credits": { + "name": "credits", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "pixels": { + "name": "pixels", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "points": { + "name": "points", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "item_id": { + "name": "item_id", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_event_prizes_id": { + "name": "website_event_prizes_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "website_event_registrations": { + "name": "website_event_registrations", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "event_id": { + "name": "event_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "datetime(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP" + } + }, + "indexes": { + "website_event_registrations_eventId_userId": { + "name": "website_event_registrations_eventId_userId", + "columns": [ + "event_id", + "user_id" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_event_registrations_id": { + "name": "website_event_registrations_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "website_event_types": { + "name": "website_event_types", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "name": { + "name": "name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "slug": { + "name": "slug", + "type": "varchar(100)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "''" + }, + "color": { + "name": "color", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'#3b82f6'" + }, + "icon": { + "name": "icon", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'calendar'" + }, + "is_active": { + "name": "is_active", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "min_rank": { + "name": "min_rank", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_event_types_id": { + "name": "website_event_types_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": { + "website_event_types_slug_unique": { + "name": "website_event_types_slug_unique", + "columns": [ + "slug" + ] + } + }, + "checkConstraint": {} + }, + "website_event_winners": { + "name": "website_event_winners", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "event_id": { + "name": "event_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "position": { + "name": "position", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "created_at": { + "name": "created_at", + "type": "datetime(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP" + } + }, + "indexes": { + "website_event_winners_eventId_userId": { + "name": "website_event_winners_eventId_userId", + "columns": [ + "event_id", + "user_id" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_event_winners_id": { + "name": "website_event_winners_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "website_help_center_categories": { + "name": "website_help_center_categories", + "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 + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "position": { + "name": "position", + "type": "int unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "image_url": { + "name": "image_url", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "button_text": { + "name": "button_text", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "button_url": { + "name": "button_url", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "button_color": { + "name": "button_color", + "type": "varchar(16)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'#eeb425'" + }, + "button_border_color": { + "name": "button_border_color", + "type": "varchar(16)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'#facc15'" + }, + "small_box": { + "name": "small_box", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_help_center_categories_id": { + "name": "website_help_center_categories_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": { + "website_help_center_categories_name_unique": { + "name": "website_help_center_categories_name_unique", + "columns": [ + "name" + ] + } + }, + "checkConstraint": {} + }, + "website_help_center_ticket_replies": { + "name": "website_help_center_ticket_replies", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "ticket_id": { + "name": "ticket_id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "int", + "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": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_help_center_ticket_replies_id": { + "name": "website_help_center_ticket_replies_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "website_help_center_tickets": { + "name": "website_help_center_tickets", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "category_id": { + "name": "category_id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "title": { + "name": "title", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "open": { + "name": "open", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_help_center_tickets_id": { + "name": "website_help_center_tickets_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "website_housekeeping_permissions": { + "name": "website_housekeeping_permissions", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "permission": { + "name": "permission", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "min_rank": { + "name": "min_rank", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "group_name": { + "name": "group_name", + "type": "varchar(100)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "depends_on": { + "name": "depends_on", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_by": { + "name": "updated_by", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_housekeeping_permissions_id": { + "name": "website_housekeeping_permissions_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": { + "website_housekeeping_permissions_permission_unique": { + "name": "website_housekeeping_permissions_permission_unique", + "columns": [ + "permission" + ] + } + }, + "checkConstraint": {} + }, + "website_installation": { + "name": "website_installation", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "step": { + "name": "step", + "type": "int unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": 0 + }, + "completed": { + "name": "completed", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "installation_key": { + "name": "installation_key", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "user_ip": { + "name": "user_ip", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_installation_id": { + "name": "website_installation_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "website_ip_blacklist": { + "name": "website_ip_blacklist", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "ip_address": { + "name": "ip_address", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "asn": { + "name": "asn", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "blacklist_asn": { + "name": "blacklist_asn", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_ip_blacklist_id": { + "name": "website_ip_blacklist_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "website_ip_whitelist": { + "name": "website_ip_whitelist", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "ip_address": { + "name": "ip_address", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "asn": { + "name": "asn", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "whitelist_asn": { + "name": "whitelist_asn", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_ip_whitelist_id": { + "name": "website_ip_whitelist_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "website_languages": { + "name": "website_languages", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "country_code": { + "name": "country_code", + "type": "varchar(8)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "language": { + "name": "language", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_languages_id": { + "name": "website_languages_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": { + "website_languages_country_code_unique": { + "name": "website_languages_country_code_unique", + "columns": [ + "country_code" + ] + }, + "website_languages_language_unique": { + "name": "website_languages_language_unique", + "columns": [ + "language" + ] + } + }, + "checkConstraint": {} + }, + "website_login_logs": { + "name": "website_login_logs", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "ip": { + "name": "ip", + "type": "varchar(45)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_agent": { + "name": "user_agent", + "type": "varchar(512)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_login_logs_id": { + "name": "website_login_logs_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "website_maintenance_tasks": { + "name": "website_maintenance_tasks", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "task": { + "name": "task", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "completed": { + "name": "completed", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_maintenance_tasks_id": { + "name": "website_maintenance_tasks_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "website_open_positions": { + "name": "website_open_positions", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "permission_id": { + "name": "permission_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "apply_from": { + "name": "apply_from", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "apply_to": { + "name": "apply_to", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_open_positions_id": { + "name": "website_open_positions_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": { + "website_open_positions_permission_id_unique": { + "name": "website_open_positions_permission_id_unique", + "columns": [ + "permission_id" + ] + } + }, + "checkConstraint": {} + }, + "website_paypal_transactions": { + "name": "website_paypal_transactions", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "transaction_id": { + "name": "transaction_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "varchar(512)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "amount": { + "name": "amount", + "type": "double", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "currency": { + "name": "currency", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'USD'" + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_paypal_transactions_id": { + "name": "website_paypal_transactions_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "website_permissions": { + "name": "website_permissions", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "permission": { + "name": "permission", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "min_rank": { + "name": "min_rank", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_permissions_id": { + "name": "website_permissions_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": { + "website_permissions_permission_unique": { + "name": "website_permissions_permission_unique", + "columns": [ + "permission" + ] + } + }, + "checkConstraint": {} + }, + "website_polls": { + "name": "website_polls", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "title": { + "name": "title", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "status": { + "name": "status", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'draft'" + }, + "show_results": { + "name": "show_results", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "multiple_choice": { + "name": "multiple_choice", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "starts_at": { + "name": "starts_at", + "type": "datetime(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "ends_at": { + "name": "ends_at", + "type": "datetime(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "datetime(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP" + }, + "updated_at": { + "name": "updated_at", + "type": "datetime(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_polls_id": { + "name": "website_polls_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "website_poll_questions": { + "name": "website_poll_questions", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "poll_id": { + "name": "poll_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "question": { + "name": "question", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'single'" + }, + "sort_order": { + "name": "sort_order", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "options": { + "name": "options", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_poll_questions_id": { + "name": "website_poll_questions_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "website_poll_votes": { + "name": "website_poll_votes", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "question_id": { + "name": "question_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "answer": { + "name": "answer", + "type": "varchar(500)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "datetime(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP" + } + }, + "indexes": { + "website_poll_votes_questionId_userId": { + "name": "website_poll_votes_questionId_userId", + "columns": [ + "question_id", + "user_id" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_poll_votes_id": { + "name": "website_poll_votes_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "website_rare_value_categories": { + "name": "website_rare_value_categories", + "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 + }, + "badge": { + "name": "badge", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "priority": { + "name": "priority", + "type": "int unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_rare_value_categories_id": { + "name": "website_rare_value_categories_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": { + "website_rare_value_categories_name_unique": { + "name": "website_rare_value_categories_name_unique", + "columns": [ + "name" + ] + } + }, + "checkConstraint": {} + }, + "website_rare_values": { + "name": "website_rare_values", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "category_id": { + "name": "category_id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "item_id": { + "name": "item_id", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "credit_value": { + "name": "credit_value", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "currency_value": { + "name": "currency_value", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "currency_type": { + "name": "currency_type", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'diamonds'" + }, + "furniture_icon": { + "name": "furniture_icon", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_rare_values_id": { + "name": "website_rare_values_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "website_rule_categories": { + "name": "website_rule_categories", + "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 + }, + "description": { + "name": "description", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "badge": { + "name": "badge", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_rule_categories_id": { + "name": "website_rule_categories_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": { + "website_rule_categories_name_unique": { + "name": "website_rule_categories_name_unique", + "columns": [ + "name" + ] + } + }, + "checkConstraint": {} + }, + "website_rules": { + "name": "website_rules", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "category_id": { + "name": "category_id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "paragraph": { + "name": "paragraph", + "type": "varchar(8)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "rule": { + "name": "rule", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_rules_id": { + "name": "website_rules_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "website_settings": { + "name": "website_settings", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "key": { + "name": "key", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "value": { + "name": "value", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "comment": { + "name": "comment", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_settings_id": { + "name": "website_settings_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": { + "website_settings_key_unique": { + "name": "website_settings_key_unique", + "columns": [ + "key" + ] + } + }, + "checkConstraint": {} + }, + "website_shop_article_features": { + "name": "website_shop_article_features", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "article_id": { + "name": "article_id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "content": { + "name": "content", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_shop_article_features_id": { + "name": "website_shop_article_features_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "website_shop_articles": { + "name": "website_shop_articles", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "website_shop_category_id": { + "name": "website_shop_category_id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "info": { + "name": "info", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "icon_url": { + "name": "icon_url", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "color": { + "name": "color", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "costs": { + "name": "costs", + "type": "int unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "give_rank": { + "name": "give_rank", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "is_giftable": { + "name": "is_giftable", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "credits": { + "name": "credits", + "type": "int unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "duckets": { + "name": "duckets", + "type": "int unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "diamonds": { + "name": "diamonds", + "type": "int unsigned", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "badges": { + "name": "badges", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "furniture": { + "name": "furniture", + "type": "longtext", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "position": { + "name": "position", + "type": "int unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_shop_articles_id": { + "name": "website_shop_articles_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": { + "website_shop_articles_name_unique": { + "name": "website_shop_articles_name_unique", + "columns": [ + "name" + ] + } + }, + "checkConstraint": {} + }, + "website_shop_categories": { + "name": "website_shop_categories", + "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 + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "icon": { + "name": "icon", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "order": { + "name": "order", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_shop_categories_id": { + "name": "website_shop_categories_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "website_shop_vouchers": { + "name": "website_shop_vouchers", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "code": { + "name": "code", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "max_uses": { + "name": "max_uses", + "type": "int unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "use_count": { + "name": "use_count", + "type": "int unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "amount": { + "name": "amount", + "type": "int unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_shop_vouchers_id": { + "name": "website_shop_vouchers_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": { + "website_shop_vouchers_code_unique": { + "name": "website_shop_vouchers_code_unique", + "columns": [ + "code" + ] + } + }, + "checkConstraint": {} + }, + "website_staff_applications": { + "name": "website_staff_applications", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "rank_id": { + "name": "rank_id", + "type": "int", + "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": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_staff_applications_id": { + "name": "website_staff_applications_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "website_teams": { + "name": "website_teams", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "rank_name": { + "name": "rank_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "hidden_rank": { + "name": "hidden_rank", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "badge": { + "name": "badge", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "job_description": { + "name": "job_description", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "staff_color": { + "name": "staff_color", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'#327fa8'" + }, + "staff_background": { + "name": "staff_background", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'staff-bg.png'" + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_teams_id": { + "name": "website_teams_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": { + "website_teams_rank_name_unique": { + "name": "website_teams_rank_name_unique", + "columns": [ + "rank_name" + ] + } + }, + "checkConstraint": {} + }, + "website_tickets": { + "name": "website_tickets", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "subject": { + "name": "subject", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "category": { + "name": "category", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'general'" + }, + "priority": { + "name": "priority", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'normal'" + }, + "status": { + "name": "status", + "type": "varchar(20)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'open'" + }, + "creator_id": { + "name": "creator_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "assignee_id": { + "name": "assignee_id", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "closed_at": { + "name": "closed_at", + "type": "datetime", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "datetime", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP" + }, + "updated_at": { + "name": "updated_at", + "type": "datetime", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_tickets_id": { + "name": "website_tickets_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "website_ticket_messages": { + "name": "website_ticket_messages", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "ticket_id": { + "name": "ticket_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "message": { + "name": "message", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "is_staff": { + "name": "is_staff", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "created_at": { + "name": "created_at", + "type": "datetime", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_ticket_messages_id": { + "name": "website_ticket_messages_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "website_ticket_templates": { + "name": "website_ticket_templates", + "columns": { + "id": { + "name": "id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "title": { + "name": "title", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "category": { + "name": "category", + "type": "varchar(50)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'general'" + }, + "sort_order": { + "name": "sort_order", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "created_at": { + "name": "created_at", + "type": "datetime", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_ticket_templates_id": { + "name": "website_ticket_templates_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "website_used_shop_vouchers": { + "name": "website_used_shop_vouchers", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "voucher_id": { + "name": "voucher_id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_used_shop_vouchers_id": { + "name": "website_used_shop_vouchers_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "website_user_guestbooks": { + "name": "website_user_guestbooks", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "profile_id": { + "name": "profile_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "message": { + "name": "message", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_user_guestbooks_id": { + "name": "website_user_guestbooks_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "website_wordfilter": { + "name": "website_wordfilter", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "word": { + "name": "word", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_wordfilter_id": { + "name": "website_wordfilter_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": { + "website_wordfilter_word_unique": { + "name": "website_wordfilter_word_unique", + "columns": [ + "word" + ] + } + }, + "checkConstraint": {} + }, + "website_writeable_boxes": { + "name": "website_writeable_boxes", + "columns": { + "id": { + "name": "id", + "type": "bigint unsigned", + "primaryKey": false, + "notNull": true, + "autoincrement": true + }, + "title": { + "name": "title", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "icon": { + "name": "icon", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "content": { + "name": "content", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "position": { + "name": "position", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 0 + }, + "is_active": { + "name": "is_active", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "website_writeable_boxes_id": { + "name": "website_writeable_boxes_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "youtube_playlists": { + "name": "youtube_playlists", + "columns": { + "item_id": { + "name": "item_id", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "playlist_id": { + "name": "playlist_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "order": { + "name": "order", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "youtube_playlists_itemId_playlistId_order": { + "name": "youtube_playlists_itemId_playlistId_order", + "columns": [ + "item_id", + "playlist_id", + "order" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraint": {} + } + }, + "views": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "tables": {}, + "indexes": {} + } +} \ No newline at end of file diff --git a/drizzle/drafts/meta/_journal.json b/drizzle/drafts/meta/_journal.json index 7ec47b3b..404318ff 100644 --- a/drizzle/drafts/meta/_journal.json +++ b/drizzle/drafts/meta/_journal.json @@ -8,6 +8,13 @@ "when": 1788791201804, "tag": "0000_premium_spirit", "breakpoints": true + }, + { + "idx": 1, + "version": "5", + "when": 1791828901011, + "tag": "0001_breezy_maestro", + "breakpoints": true } ] } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2fdbe30d..d8478b51 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -167,6 +167,7 @@ overrides: '@esbuild-kit/core-utils': npm:tsx@^4.23.15 '@esbuild-kit/esm-loader': npm:tsx@^4.23.15 source-map-js: 1.2.2 + postcss-selector-parser: ^7.1.6 importers: @@ -3255,8 +3256,8 @@ packages: postal-mime@2.7.6: resolution: {integrity: sha512-UUlyE2KlxmvwMGq060onF/VWU3zD6dVW31FwokQ5v26jWd35fbs2MoTFzh+jXnPwAyV2MULMKXcBInGOl5TO6Q==} - postcss-selector-parser@6.0.10: - resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} + postcss-selector-parser@7.1.6: + resolution: {integrity: sha512-7qASPzhKF2l2KLboRZux8CCTRMdGiV08vWmyKzPz22qZ7ZjQBOeY7rNzNoCLSUiftJ7HUq0GERHmxw/t0dCdMw==} engines: {node: '>=4'} postcss@8.5.23: @@ -4961,7 +4962,7 @@ snapshots: '@tailwindcss/typography@0.5.20(tailwindcss@4.3.3)': dependencies: - postcss-selector-parser: 6.0.10 + postcss-selector-parser: 7.1.6 tailwindcss: 4.3.3 '@tanstack/query-core@5.104.2': {} @@ -6110,7 +6111,7 @@ snapshots: postal-mime@2.7.6: {} - postcss-selector-parser@6.0.10: + postcss-selector-parser@7.1.6: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index a80ab1c5..3673d6d8 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -17,3 +17,8 @@ overrides: '@esbuild-kit/core-utils': 'npm:tsx@^4.23.15' '@esbuild-kit/esm-loader': 'npm:tsx@^4.23.15' source-map-js: '1.2.2' + # GHSA advisory: postcss-selector-parser <7.1.6. Pulled in only by + # @tailwindcss/typography (build-time prose selectors), which pins 6.0.10 + # exactly and has no upstream bump. The API subset it uses is unchanged in + # v7, so force the patched major. + postcss-selector-parser: '^7.1.6' diff --git a/src/app/(site)/news/page.tsx b/src/app/(site)/news/page.tsx index 3e8d85e4..ee3b4293 100644 --- a/src/app/(site)/news/page.tsx +++ b/src/app/(site)/news/page.tsx @@ -99,6 +99,7 @@ async function NewsPage({ fill sizes="(max-width: 1024px) 50vw, 300px" style={{ objectFit: "cover" }} + unoptimized /> ) : ( diff --git a/src/app/(site)/page.tsx b/src/app/(site)/page.tsx index 640d195a..5b5bcc0f 100644 --- a/src/app/(site)/page.tsx +++ b/src/app/(site)/page.tsx @@ -170,12 +170,9 @@ function GlassPanel({ } async function getHotelData() { - const [hotelName, logo] = await Promise.all([ - resolveHotelName(), - siteSettings.get("cms_logo", ""), - ]); - const [ + hotelName, + logo, online, users, rooms, @@ -185,6 +182,8 @@ async function getHotelData() { recentUsers, recentPhotos, ] = await Promise.all([ + resolveHotelName(), + siteSettings.get("cms_logo", ""), cachedOnlineCount().catch(publicReadFailure("home.online")), cached("total_users", 300_000, countUsers, { staleMs: 300000 }).catch( publicReadFailure("home.users"), @@ -243,22 +242,34 @@ export default async function Home() { const session = await auth(); if (session?.user?.id) redirect("/me"); - const tp = await getTranslations("pages.home"); - const te = await getTranslations("publicData"); - const th = await getTranslations("header"); - const tn = await getTranslations("nav"); - const { - hotelName, - online, - users, - rooms, - totalPhotos, - articleCount, - articles, - recentUsers: rawRecentUsers, - recentPhotos, - logo, - } = await getHotelData(); + const [ + tp, + te, + th, + tn, + { + hotelName, + online, + users, + rooms, + totalPhotos, + articleCount, + articles, + recentUsers: rawRecentUsers, + recentPhotos, + logo, + }, + captcha, + nonceHeaders, + ] = await Promise.all([ + getTranslations("pages.home"), + getTranslations("publicData"), + getTranslations("header"), + getTranslations("nav"), + getHotelData(), + captchaConfig(), + headers(), + ]); // Users who hide their online state must not surface in the "who is online" // rails on the homepage either. @@ -271,8 +282,7 @@ export default async function Home() { : rawRecentUsers.filter( (u) => recentUserPrivacy.get(u.id)?.online !== false, ); - const captcha = await captchaConfig(); - const nonce = (await headers()).get("x-nonce") ?? undefined; + const nonce = nonceHeaders.get("x-nonce") ?? undefined; const features = [ { @@ -315,6 +325,7 @@ export default async function Home() { fill sizes={featured ? "100vw" : "(max-width: 640px) 100vw, 33vw"} className="rounded-2xl object-cover transition-transform duration-700 ease-out group-hover:scale-108" + unoptimized />
>; +}; +const inFlight = + globalForBadgeFetches.imagingBadgeFetches ?? + new Map>(); +globalForBadgeFetches.imagingBadgeFetches = inFlight; + +async function resolveBadge( + cacheKey: string, + code: string, + candidates: string[], +): Promise { + const pending = inFlight.get(cacheKey); + if (pending) return pending; + + const work = (async (): Promise => { + for (const base of candidates) { + const result = await fetchCandidate(base, code); + if (result) { + await writeImagingCache( + badgeCacheDir(), + cacheKey, + result.body, + result.contentType, + ); + return result; + } + } + return { + body: new TextEncoder().encode(BADGE_PLACEHOLDER_SVG), + contentType: "image/svg+xml", + source: "unavailable", + }; + })(); + + inFlight.set(cacheKey, work); + try { + return await work; + } finally { + if (inFlight.get(cacheKey) === work) inFlight.delete(cacheKey); + } +} + export async function GET(request: NextRequest) { const code = request.nextUrl.searchParams.get("code")?.trim(); if (!code || code.length > CODE_MAX_LEN || !CODE_RE.test(code)) { @@ -56,25 +115,20 @@ export async function GET(request: NextRequest) { const cacheKey = imagingCacheKey(`${code}\n${candidates.join("\n")}`); const cached = await readImagingCache(badgeCacheDir(), cacheKey); - if (cached) return badgeResponse(cached.body, cached.contentType, "cache"); - - for (const base of candidates) { - const result = await fetchCandidate(base, code); - if (result) { - await writeImagingCache( - badgeCacheDir(), - cacheKey, - result.body, - result.contentType, - ); - return badgeResponse(result.body, result.contentType, result.source); - } - } + if (cached) + return badgeResponse( + cached.body, + cached.contentType, + "cache", + request.headers.get("if-none-match"), + ); + const resolved = await resolveBadge(cacheKey, code, candidates); return badgeResponse( - new TextEncoder().encode(BADGE_PLACEHOLDER_SVG), - "image/svg+xml", - "unavailable", + resolved.body, + resolved.contentType, + resolved.source, + request.headers.get("if-none-match"), ); } @@ -140,16 +194,31 @@ function badgeResponse( body: Uint8Array, contentType: string, source: BadgeSource, + ifNoneMatch: string | null = null, ) { + const etag = strongEtag(body); + const cacheControl = + source === "unavailable" ? "no-cache, max-age=0" : "public, max-age=3600"; + // Same bytes the client already has: skip the body. Validators are hashed + // from the body, so a fallback→upstream swap still forces a fresh 200. + if (ifNoneMatchSatisfied(ifNoneMatch, etag)) { + return new NextResponse(null, { + status: 304, + headers: { + ETag: etag, + "Cache-Control": cacheControl, + "X-Imager-Source": source, + "Access-Control-Allow-Origin": "*", + }, + }); + } return new NextResponse(body as unknown as BodyInit, { status: 200, headers: { "Content-Type": contentType, "Content-Length": String(body.length), - "Cache-Control": - source === "unavailable" - ? "no-cache, max-age=0" - : "public, max-age=3600", + "Cache-Control": cacheControl, + ETag: etag, "X-Imager-Source": source, "Access-Control-Allow-Origin": "*", }, diff --git a/src/app/imaging/route.ts b/src/app/imaging/route.ts index ef3fd61f..acb0b547 100644 --- a/src/app/imaging/route.ts +++ b/src/app/imaging/route.ts @@ -1,8 +1,33 @@ import { type NextRequest, NextResponse } from "next/server"; import sharp from "sharp"; -import { fetchAvatarImage, parseAvatarQuery } from "@/lib/imager-upstream"; +import { AVATAR_FALLBACK_SRC } from "@/lib/imager"; +import { + avatarCacheDir, + imagingCacheKey, + readImagingCache, + writeImagingCache, +} from "@/lib/imager-cache"; +import { ifNoneMatchSatisfied, strongEtag } from "@/lib/imager-http"; +import { isAnimatedPng } from "@/lib/imager-png"; +import { + fetchAvatarImage, + ImagerUnavailableError, + parseAvatarQuery, +} from "@/lib/imager-upstream"; +import { resolveImagerBase } from "@/lib/runtime-asset-config"; type AvatarFormat = "png" | "webp" | "avif"; +type TranscodeFormat = Exclude; + +// Same neutral silhouette the sibling /api/imaging/avatar route serves, so a +// figure no upstream can render still shows a graceful image instead of the +// browser's broken-image glyph. This is the site-wide default imager endpoint, +// so a 502 here would blank avatars across every server-rendered page. +const PLACEHOLDER_SVG_BYTES = new TextEncoder().encode( + decodeURIComponent( + AVATAR_FALLBACK_SRC.slice("data:image/svg+xml;utf8,".length), + ), +); function resolveFormat(raw: string | null): AvatarFormat { switch (raw?.toLowerCase()) { @@ -15,6 +40,89 @@ function resolveFormat(raw: string | null): AvatarFormat { } } +/** + * Concurrent cold-cache requests for the same figure all arrive with the same + * decoded PNG and the same target format, so they would each run the same + * sharp transcode — the one operation on this route that is CPU-bound. Sharing + * a single transcode across those requests keeps a cold cache from stacking + * identical encoder work. Held on globalThis because Next can evaluate this + * module more than once per process; separate copies would each start their own + * transcode and defeat the point. + */ +const globalForTranscodes = globalThis as typeof globalThis & { + imagingTranscodes?: Map>; +}; +const inFlight = + globalForTranscodes.imagingTranscodes ?? + new Map>(); +globalForTranscodes.imagingTranscodes = inFlight; + +interface TranscodeResult { + body: Uint8Array; + contentType: string; +} + +/** + * Serve a WebP/AVIF variant of the decoded render, cached on disk so sharp only + * runs once per (figure, variant) rather than on every avatar request. This + * endpoint is the default imager, so re-encoding on each hit would burn CPU for + * an image that never changes. + * + * Returns `null` when a conversion cannot be produced (e.g. sharp cannot decode + * the input) so the caller falls back to serving the original render unchanged. + */ +async function transcodeToVariant( + body: Uint8Array, + format: TranscodeFormat, + variantKey: string, +): Promise { + if (isAnimatedPng(body)) return null; + + const cached = await readImagingCache(avatarCacheDir(), variantKey); + if (cached) return cached; + + const pending = inFlight.get(variantKey); + if (pending) return pending; + + const work = runTranscode(body, format, variantKey); + inFlight.set(variantKey, work); + try { + return await work; + } finally { + if (inFlight.get(variantKey) === work) inFlight.delete(variantKey); + } +} + +async function runTranscode( + body: Uint8Array, + format: TranscodeFormat, + variantKey: string, +): Promise { + try { + // `animated: true` lets sharp carry animation through for inputs it can + // decode frame-by-frame (animated GIF/WebP). APNG is handled before this + // point: libvips here reads only its first frame, so those are left as-is. + const pipeline = sharp(Buffer.from(body), { animated: true }); + const out = + format === "webp" + ? await pipeline.webp().toBuffer() + : await pipeline.avif().toBuffer(); + const contentType = format === "webp" ? "image/webp" : "image/avif"; + const result = { body: new Uint8Array(out), contentType }; + // Best-effort: a failed write must never turn a good render into an + // error; the next request simply re-runs the transcode. + await writeImagingCache( + avatarCacheDir(), + variantKey, + result.body, + contentType, + ); + return result; + } catch { + return null; + } +} + export async function GET(request: NextRequest) { const { searchParams } = new URL(request.url); @@ -31,48 +139,84 @@ export async function GET(request: NextRequest) { parsed.params, ); - // Re-encode PNG avatars to WebP/AVIF with sharp to cut bandwidth. - // Falls back to the original PNG if conversion fails. let respBody: Uint8Array = body; let respContentType = contentType; if (format !== "png") { - try { - if (format === "webp") { - respBody = new Uint8Array( - await sharp(Buffer.from(body)).webp().toBuffer(), - ); - respContentType = "image/webp"; - } else { - respBody = new Uint8Array( - await sharp(Buffer.from(body)).avif().toBuffer(), - ); - respContentType = "image/avif"; - } - } catch { - respBody = body; - respContentType = contentType; + // The variant is keyed off the exact render that produced it (the + // resolved upstream + the normalized query) plus the target format, + // mirroring how the underlying render itself is cached. + const variantKey = imagingCacheKey( + `${resolveImagerBase(new URL(request.url).origin)}\n${parsed.params.toString()}\n${format}`, + ); + const converted = await transcodeToVariant(body, format, variantKey); + if (converted) { + respBody = converted.body; + respContentType = converted.contentType; } } + const etag = strongEtag(respBody); + // s-maxage lets Cloudflare/edge cache avatars (currently DYNAMIC), + // stale-while-revalidate keeps them fresh without blocking requests. + // The ?format= param is part of the URL, so variants cache separately. + // Fallback renders use a shorter TTL so the configured imager is + // retried soon instead of being masked for hours. + const cacheControl = + source === "fallback" + ? "public, max-age=300, s-maxage=3600, stale-while-revalidate=3600" + : "public, max-age=3600, s-maxage=86400, stale-while-revalidate=86400"; + if (ifNoneMatchSatisfied(request.headers.get("if-none-match"), etag)) { + return new NextResponse(null, { + status: 304, + headers: { + ETag: etag, + "Cache-Control": cacheControl, + "X-Imager-Source": source, + "Access-Control-Allow-Origin": "*", + }, + }); + } + return new NextResponse(respBody as unknown as BodyInit, { status: 200, headers: { "Content-Type": respContentType, "Content-Length": String(respBody.length), - // s-maxage lets Cloudflare/edge cache avatars (currently DYNAMIC), - // stale-while-revalidate keeps them fresh without blocking requests. - // The ?format= param is part of the URL, so variants cache separately. - // Fallback renders use a shorter TTL so the configured imager is - // retried soon instead of being masked for hours. - "Cache-Control": - source === "fallback" - ? "public, max-age=300, s-maxage=3600, stale-while-revalidate=3600" - : "public, max-age=3600, s-maxage=86400, stale-while-revalidate=86400", + "Cache-Control": cacheControl, + ETag: etag, "X-Imager-Source": source, "Access-Control-Allow-Origin": "*", }, }); - } catch { + } catch (error) { + if (error instanceof ImagerUnavailableError) { + // Every upstream is down and nothing was cached: serve the graceful + // silhouette as a 200 so tags never break, and keep it + // uncached so a real render is picked up as soon as one recovers. + const etag = strongEtag(PLACEHOLDER_SVG_BYTES); + if (ifNoneMatchSatisfied(request.headers.get("if-none-match"), etag)) { + return new NextResponse(null, { + status: 304, + headers: { + ETag: etag, + "Cache-Control": "no-cache, max-age=0", + "X-Imager-Source": "unavailable", + "Access-Control-Allow-Origin": "*", + }, + }); + } + return new NextResponse(PLACEHOLDER_SVG_BYTES as unknown as BodyInit, { + status: 200, + headers: { + "Content-Type": "image/svg+xml", + "Content-Length": String(PLACEHOLDER_SVG_BYTES.length), + "Cache-Control": "no-cache, max-age=0", + ETag: etag, + "X-Imager-Source": "unavailable", + "Access-Control-Allow-Origin": "*", + }, + }); + } return NextResponse.json( { error: "Failed to fetch avatar from upstream" }, { status: 502 }, diff --git a/src/lib/badge-route.test.ts b/src/lib/badge-route.test.ts new file mode 100644 index 00000000..c6afb742 --- /dev/null +++ b/src/lib/badge-route.test.ts @@ -0,0 +1,107 @@ +// @ts-nocheck +import { rm } from "node:fs/promises"; +import { NextRequest } from "next/server"; +import { afterAll, afterEach, beforeEach, expect, it, vi } from "vitest"; +import { GET } from "../app/api/imaging/badge/route"; + +const SCRATCH_ROOT = `${process.cwd()}/storage/imaging/test-badge-route-${process.pid}`; + +beforeEach(async () => { + // Cold disk cache for every test so the candidate walk actually runs. + await rm(SCRATCH_ROOT, { recursive: true, force: true }); + vi.stubEnv("IMAGING_CACHE_ROOT", SCRATCH_ROOT); + // A configured CDN short-circuits the database lookup for badge_base_url. + vi.stubEnv("BADGE_URL", "https://badges.test/album1584"); + globalThis.imagingBadgeFetches?.clear?.(); +}); + +afterEach(() => { + vi.unstubAllEnvs(); + vi.unstubAllGlobals(); +}); + +afterAll(async () => { + await rm(SCRATCH_ROOT, { recursive: true, force: true }); +}); + +function gifResponse() { + return new Response(new Uint8Array([1, 2, 3]), { + headers: { "content-type": "image/gif" }, + }); +} + +it("shares a single upstream fetch across concurrent cold-cache requests", async () => { + let calls = 0; + vi.stubGlobal( + "fetch", + vi.fn(async () => { + calls += 1; + await new Promise((resolve) => setTimeout(resolve, 20)); + return gifResponse(); + }), + ); + const request = () => + new NextRequest("https://hotel.test/api/imaging/badge?code=ADM"); + const [a, b] = await Promise.all([GET(request()), GET(request())]); + expect(a.status).toBe(200); + expect(b.status).toBe(200); + expect(a.headers.get("content-type")).toBe("image/gif"); + expect(calls).toBe(1); +}); + +it("serves a previously fetched badge from disk without re-fetching", async () => { + const fetcher = vi.fn(async () => gifResponse()); + vi.stubGlobal("fetch", fetcher); + const request = new NextRequest( + "https://hotel.test/api/imaging/badge?code=HABBO", + ); + const first = await GET(request); + expect(first.status).toBe(200); + const callsAfterFirst = fetcher.mock.calls.length; + expect(callsAfterFirst).toBeGreaterThan(0); + + const second = await GET(request); + expect(second.status).toBe(200); + expect(second.headers.get("x-imager-source")).toBe("cache"); + expect(fetcher.mock.calls.length).toBe(callsAfterFirst); +}); + +it("revalidates a cached badge with a 304 when the client already has it", async () => { + vi.stubGlobal( + "fetch", + vi.fn(async () => gifResponse()), + ); + const url = "https://hotel.test/api/imaging/badge?code=ETAG"; + const first = await GET(new NextRequest(url)); + const etag = first.headers.get("etag"); + expect(etag).toBeTruthy(); + + const second = await GET( + new NextRequest(url, { headers: { "if-none-match": etag } }), + ); + expect(second.status).toBe(304); + expect(second.headers.get("etag")).toBe(etag); +}); + +it("serves a placeholder when every candidate is unavailable", async () => { + vi.stubGlobal( + "fetch", + vi.fn(async () => new Response("nope", { status: 404 })), + ); + const result = await GET( + new NextRequest("https://hotel.test/api/imaging/badge?code=GONE"), + ); + expect(result.status).toBe(200); + expect(result.headers.get("content-type")).toBe("image/svg+xml"); + expect(result.headers.get("x-imager-source")).toBe("unavailable"); +}); + +it("rejects malformed badge codes without contacting any candidate", async () => { + const fetcher = vi.fn(); + vi.stubGlobal("fetch", fetcher); + const result = await GET( + new NextRequest("https://hotel.test/api/imaging/badge?code=../bad"), + ); + expect(result.status).toBe(400); + expect(fetcher).not.toHaveBeenCalled(); +}); diff --git a/src/lib/csp.test.ts b/src/lib/csp.test.ts index 68ffe11c..0165f127 100644 --- a/src/lib/csp.test.ts +++ b/src/lib/csp.test.ts @@ -1,5 +1,5 @@ // @ts-nocheck -import { describe, expect, it } from "vitest"; +import { describe, expect, it, vi } from "vitest"; import { buildContentSecurityPolicy, createCspNonce } from "./csp"; describe("csp", () => { @@ -19,4 +19,20 @@ describe("csp", () => { expect(csp).toContain("https://challenges.cloudflare.com"); expect(csp).not.toContain("https://cdn.jsdelivr.net"); }); + + it("blocks framing and upgrades insecure requests outside development", () => { + vi.stubEnv("NODE_ENV", "production"); + const csp = buildContentSecurityPolicy("n"); + expect(csp).toContain("frame-ancestors 'none'"); + expect(csp).toContain("upgrade-insecure-requests"); + vi.unstubAllEnvs(); + }); + + it("omits upgrade-insecure-requests in development", () => { + vi.stubEnv("NODE_ENV", "development"); + const csp = buildContentSecurityPolicy("n"); + expect(csp).toContain("frame-ancestors 'none'"); + expect(csp).not.toContain("upgrade-insecure-requests"); + vi.unstubAllEnvs(); + }); }); diff --git a/src/lib/csp.ts b/src/lib/csp.ts index 0e0c9921..417d7e40 100644 --- a/src/lib/csp.ts +++ b/src/lib/csp.ts @@ -28,11 +28,17 @@ export function buildContentSecurityPolicy(nonce: string): string { "style-src-attr 'unsafe-inline'", "img-src 'self' data: blob: https:", "frame-src 'self' https://challenges.cloudflare.com https://www.google.com/recaptcha/", + // Clickjacking defence that also covers the `frame-ancestors`-aware + // browsers X-Frame-Options cannot reach. `upgrade-insecure-requests` is + // production-only: over plain-HTTP localhost it would rewrite same-origin + // asset URLs to https and break the dev server. + "frame-ancestors 'none'", "connect-src 'self' https: wss:", "font-src 'self' data: https://fonts.gstatic.com", "object-src 'none'", "base-uri 'self'", "form-action 'self'", + ...(isDev ? [] : ["upgrade-insecure-requests"]), ].join("; "); } diff --git a/src/lib/imager-http.test.ts b/src/lib/imager-http.test.ts new file mode 100644 index 00000000..1db256c4 --- /dev/null +++ b/src/lib/imager-http.test.ts @@ -0,0 +1,39 @@ +import { describe, expect, it } from "vitest"; +import { ifNoneMatchSatisfied, strongEtag } from "./imager-http"; + +describe("strongEtag", () => { + it("is deterministic and quote-wrapped", () => { + const body = new Uint8Array([1, 2, 3]); + expect(strongEtag(body)).toBe(strongEtag(new Uint8Array([1, 2, 3]))); + expect(strongEtag(body)).toMatch(/^"[A-Za-z0-9_-]+"$/); + }); + + it("changes when the body changes", () => { + expect(strongEtag(new Uint8Array([1, 2, 3]))).not.toBe( + strongEtag(new Uint8Array([1, 2, 4])), + ); + }); +}); + +describe("ifNoneMatchSatisfied", () => { + const etag = strongEtag(new Uint8Array([9])); + + it("returns false without a header", () => { + expect(ifNoneMatchSatisfied(null, etag)).toBe(false); + expect(ifNoneMatchSatisfied("", etag)).toBe(false); + }); + + it("matches an exact, weak or wildcard validator", () => { + expect(ifNoneMatchSatisfied(etag, etag)).toBe(true); + expect(ifNoneMatchSatisfied(`W/${etag}`, etag)).toBe(true); + expect(ifNoneMatchSatisfied("*", etag)).toBe(true); + }); + + it("matches any entry in a comma-separated list", () => { + expect(ifNoneMatchSatisfied(`"other", ${etag}`, etag)).toBe(true); + }); + + it("does not match a different validator", () => { + expect(ifNoneMatchSatisfied('"other"', etag)).toBe(false); + }); +}); diff --git a/src/lib/imager-http.ts b/src/lib/imager-http.ts new file mode 100644 index 00000000..a49d22fe --- /dev/null +++ b/src/lib/imager-http.ts @@ -0,0 +1,33 @@ +import "server-only"; + +import { createHash } from "node:crypto"; + +/** + * Strong HTTP validator for an imaging response body. + * + * Derived from the bytes rather than the request URL on purpose: the same URL + * can legitimately return different bytes over its lifetime — a degraded + * fallback render before the configured imager recovers, or a different + * transcode variant — and a URL-based validator would let a browser keep the + * worse image via a stale `304`. Hashing the body means the ETag changes + * exactly when the bytes do. + */ +export function strongEtag(body: Uint8Array): string { + return `"${createHash("sha1").update(body).digest("base64url")}"`; +} + +/** + * Whether an `If-None-Match` request header matches `etag`. Handles the + * comma-separated list form, weak validators (`W/"…"`) and the `*` wildcard, so + * a revalidating browser gets a `304` whenever its cached copy still matches. + */ +export function ifNoneMatchSatisfied( + header: string | null, + etag: string, +): boolean { + if (!header) return false; + return header.split(",").some((raw) => { + const tag = raw.trim(); + return tag === "*" || tag === etag || tag === `W/${etag}`; + }); +} diff --git a/src/lib/imager-png.test.ts b/src/lib/imager-png.test.ts new file mode 100644 index 00000000..45eba703 --- /dev/null +++ b/src/lib/imager-png.test.ts @@ -0,0 +1,62 @@ +import { describe, expect, it } from "vitest"; +import { isAnimatedPng } from "./imager-png"; + +function png(chunks: Array<{ type: string; data?: number[] }>): Uint8Array { + const bytes = [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]; + for (const chunk of chunks) { + const data = chunk.data ?? []; + const len = data.length; + bytes.push( + (len >>> 24) & 0xff, + (len >>> 16) & 0xff, + (len >>> 8) & 0xff, + len & 0xff, + ...chunk.type.split("").map((c) => c.charCodeAt(0)), + ...data, + 0, + 0, + 0, + 0, + ); + } + return new Uint8Array(bytes); +} + +describe("isAnimatedPng", () => { + it("returns false for non-PNG input", () => { + expect(isAnimatedPng(new Uint8Array([1, 2, 3]))).toBe(false); + expect(isAnimatedPng(new Uint8Array())).toBe(false); + }); + + it("returns false for a plain PNG", () => { + const plain = png([{ type: "IHDR" }, { type: "IDAT" }, { type: "IEND" }]); + expect(isAnimatedPng(plain)).toBe(false); + }); + + it("returns true when an acTL chunk precedes IDAT", () => { + const anim = png([ + { type: "IHDR" }, + { type: "acTL", data: [0, 16, 0, 0] }, + { type: "IDAT" }, + { type: "IEND" }, + ]); + expect(isAnimatedPng(anim)).toBe(true); + }); + + it("ignores an acTL chunk that appears after IDAT", () => { + const late = png([ + { type: "IHDR" }, + { type: "IDAT" }, + { type: "acTL", data: [0, 16, 0, 0] }, + ]); + expect(isAnimatedPng(late)).toBe(false); + }); + + it("does not loop forever on a corrupt chunk length", () => { + const corrupt = new Uint8Array([ + 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0xff, 0xff, 0xff, 0xff, + 0x49, 0x48, 0x44, 0x52, + ]); + expect(isAnimatedPng(corrupt)).toBe(false); + }); +}); diff --git a/src/lib/imager-png.ts b/src/lib/imager-png.ts new file mode 100644 index 00000000..d1de4b38 --- /dev/null +++ b/src/lib/imager-png.ts @@ -0,0 +1,43 @@ +import "server-only"; + +const PNG_SIGNATURE = [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]; + +/** + * Whether a buffer is an animated PNG (APNG). + * + * APNG is a PNG carrying an `acTL` control chunk before `IDAT`; a plain PNG has + * none. `sharp`/libvips in this build cannot decode APNG *animation* — it reads + * only the first frame and re-encodes that — so a WebP/AVIF transcode of an + * APNG silently turns a moving avatar into a still one. Callers that care about + * quality use this to leave animated renders untouched and only re-encode the + * static ones. Chunk walking stops at `IDAT`/`IEND` because the spec requires + * `acTL` to precede them. + */ +export function isAnimatedPng(bytes: Uint8Array): boolean { + if (bytes.length < 8) return false; + for (let i = 0; i < 8; i++) { + if (bytes[i] !== PNG_SIGNATURE[i]) return false; + } + + let offset = 8; + while (offset + 8 <= bytes.length) { + const length = + ((bytes[offset] << 24) | + (bytes[offset + 1] << 16) | + (bytes[offset + 2] << 8) | + bytes[offset + 3]) >>> + 0; + const type = String.fromCharCode( + bytes[offset + 4], + bytes[offset + 5], + bytes[offset + 6], + bytes[offset + 7], + ); + if (type === "acTL") return true; + if (type === "IDAT" || type === "IEND") return false; + // A corrupt length would loop forever; bail instead. + if (length > bytes.length) return false; + offset += 12 + length; + } + return false; +} diff --git a/src/lib/imager-upstream.test.ts b/src/lib/imager-upstream.test.ts index 1ef6fa0e..8ab72511 100644 --- a/src/lib/imager-upstream.test.ts +++ b/src/lib/imager-upstream.test.ts @@ -15,7 +15,11 @@ vi.mock("@/lib/runtime-asset-config", () => ({ resolveImagerBase: (origin: string) => `${origin}/imager`, })); -import { fetchAvatarImage, ImagerUnavailableError } from "./imager-upstream"; +import { + fetchAvatarImage, + ImagerUnavailableError, + parseAvatarQuery, +} from "./imager-upstream"; const params = new URLSearchParams({ figure: "hr-1", direction: "2" }); @@ -136,3 +140,19 @@ it("does not queue a new caller behind a render that is already too old", async expect([...shared[0].body]).toEqual([9]); expect(shared[1].body).toBe(shared[0].body); }); + +it("accepts figures the renderer understands even with a trailing segment", () => { + // The client appends extra segments the imager still draws (e.g. the + // trailing `.0` here). Rejecting them turned valid avatars into 400s. + const figure = + "hr-11782-40-40.hd-180-7-14.ch-11592-66.lg-10726-79-1408.sh-11764-1408.ha-11958-70-1408.wa-2007-0.0"; + const parsed = parseAvatarQuery(new URLSearchParams({ figure })); + expect(parsed.ok).toBe(true); + if (parsed.ok) expect(parsed.params.get("figure")).toBe(figure); +}); + +it("still rejects a figure that is not a figure", () => { + for (const figure of ["../bad", "hd-180-1/../x", "", "0"]) { + expect(parseAvatarQuery(new URLSearchParams({ figure })).ok).toBe(false); + } +}); diff --git a/src/lib/imager-upstream.ts b/src/lib/imager-upstream.ts index 45991b1d..2031b8a3 100644 --- a/src/lib/imager-upstream.ts +++ b/src/lib/imager-upstream.ts @@ -8,7 +8,12 @@ import { } from "@/lib/imager-cache"; import { resolveImagerBase } from "@/lib/runtime-asset-config"; -export const FIGURE_RE = /^[a-z]{2}-\d+(?:-\d+)*(?:\.[a-z]{2}-\d+(?:-\d+)*)*$/i; +// The client's figure strings are passed straight through to the imager, which +// is the authority on what it can draw. Only the first segment is required to +// look like a real part (`hd-180`); the rest is deliberately loose because some +// clients append extra segments (e.g. a trailing `.0`) that the renderer still +// accepts. Over-strict validation here turned valid avatars into 400s. +export const FIGURE_RE = /^[a-z]{2}-\d+(?:[.-][a-z0-9]+)*$/i; export const FIGURE_MAX_LEN = 512; export const FIGURE_MAX_PARTS = 24; diff --git a/src/lib/imaging-route.test.ts b/src/lib/imaging-route.test.ts new file mode 100644 index 00000000..e2ccab0a --- /dev/null +++ b/src/lib/imaging-route.test.ts @@ -0,0 +1,171 @@ +// @ts-nocheck +import { rm } from "node:fs/promises"; +import { NextRequest } from "next/server"; +import { afterAll, afterEach, beforeEach, expect, it, vi } from "vitest"; +import { GET } from "../app/imaging/route"; + +// sharp is the one CPU-bound operation on this default-imager route, so the +// tests instrument it directly to prove transcodes are cached rather than +// re-run on every request. +const { sharpMock, counters } = vi.hoisted(() => { + const counters = { + calls: 0, + options: [] as unknown[], + behavior: "ok" as "ok" | "throw", + }; + const sharpMock = (_input: unknown, options?: unknown) => { + counters.calls += 1; + counters.options.push(options); + if (counters.behavior === "throw") throw new Error("decode failed"); + return { + webp: () => ({ toBuffer: async () => Buffer.from([1, 2, 3]) }), + avif: () => ({ toBuffer: async () => Buffer.from([4, 5, 6]) }), + }; + }; + return { sharpMock, counters }; +}); + +vi.mock("sharp", () => ({ default: sharpMock })); + +// One scratch root for the whole file, removed afterwards, so the disk cache +// never leaks state between tests or into the runtime cache tree. +const SCRATCH_ROOT = `${process.cwd()}/storage/imaging/test-imaging-route-${process.pid}`; + +beforeEach(async () => { + // Cold disk cache for every test: a warm variant would short-circuit the + // transcode being asserted. + await rm(SCRATCH_ROOT, { recursive: true, force: true }); + vi.stubEnv("IMAGING_CACHE_ROOT", SCRATCH_ROOT); + vi.stubEnv("IMAGER_URL", "https://imager.test/avatarimage"); + counters.calls = 0; + counters.options = []; + counters.behavior = "ok"; + // Drop any single-flight entries a prior test may have left behind. + globalThis.imagingTranscodes?.clear?.(); +}); + +afterEach(() => { + vi.unstubAllEnvs(); + vi.unstubAllGlobals(); +}); + +afterAll(async () => { + await rm(SCRATCH_ROOT, { recursive: true, force: true }); +}); + +function stubPngUpstream() { + const fetcher = vi.fn( + async () => + new Response(new Uint8Array([9, 8, 7]), { + headers: { "content-type": "image/png" }, + }), + ); + vi.stubGlobal("fetch", fetcher); + return fetcher; +} + +// A minimal APNG: the PNG signature followed by an `acTL` chunk, which is all +// the animated-format detector needs. sharp cannot re-encode APNG animation in +// this build, so these must be passed through untouched. +function apngBytes(): Uint8Array { + return new Uint8Array([ + 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0, 0, 0, 0, 0x61, 0x63, + 0x54, 0x4c, 0, 0, 0, 0, + ]); +} + +it("re-encodes an avatar to WebP and caches the variant across requests", async () => { + const fetcher = stubPngUpstream(); + const request = new NextRequest( + "https://hotel.test/imaging?figure=hd-180-1&format=webp", + ); + + const first = await GET(request); + expect(first.status).toBe(200); + expect(first.headers.get("content-type")).toBe("image/webp"); + expect(counters.calls).toBe(1); + + const fetchesAfterFirst = fetcher.mock.calls.length; + const second = await GET(request); + expect(second.status).toBe(200); + expect(second.headers.get("content-type")).toBe("image/webp"); + // Served entirely from disk cache: neither the upstream nor sharp re-ran. + expect(counters.calls).toBe(1); + expect(fetcher.mock.calls.length).toBe(fetchesAfterFirst); +}); + +it("decodes with animation awareness for transcodeable inputs", async () => { + stubPngUpstream(); + const result = await GET( + new NextRequest("https://hotel.test/imaging?figure=hd-180-1&format=webp"), + ); + expect(result.status).toBe(200); + expect(counters.options.at(-1)).toMatchObject({ animated: true }); +}); + +it("leaves an animated PNG untouched instead of dropping its frames", async () => { + vi.stubGlobal( + "fetch", + vi.fn( + async () => + new Response(apngBytes(), { + headers: { "content-type": "image/png" }, + }), + ), + ); + const result = await GET( + new NextRequest("https://hotel.test/imaging?figure=hd-180-1&format=webp"), + ); + expect(result.status).toBe(200); + // Original bytes/content-type preserved and sharp never ran. + expect(result.headers.get("content-type")).toBe("image/png"); + expect(counters.calls).toBe(0); +}); + +it("shares a single transcode across concurrent cold-cache requests", async () => { + stubPngUpstream(); + const request = () => + new NextRequest("https://hotel.test/imaging?figure=hd-180-1&format=avif"); + const [a, b] = await Promise.all([GET(request()), GET(request())]); + expect(a.status).toBe(200); + expect(b.status).toBe(200); + expect(counters.calls).toBe(1); +}); + +it("falls back to the original render when the transcode fails", async () => { + stubPngUpstream(); + counters.behavior = "throw"; + const result = await GET( + new NextRequest("https://hotel.test/imaging?figure=hd-180-1&format=webp"), + ); + expect(result.status).toBe(200); + expect(result.headers.get("content-type")).toBe("image/png"); +}); + +it("revalidates a cached avatar with a 304 when the client already has it", async () => { + stubPngUpstream(); + const url = "https://hotel.test/imaging?figure=hd-55-1"; + const first = await GET(new NextRequest(url)); + const etag = first.headers.get("etag"); + expect(etag).toBeTruthy(); + + const second = await GET( + new NextRequest(url, { headers: { "if-none-match": etag } }), + ); + expect(second.status).toBe(304); + expect(second.headers.get("etag")).toBe(etag); +}); + +it("serves the graceful silhouette instead of a broken image when every upstream is down", async () => { + vi.stubGlobal( + "fetch", + vi.fn(async () => new Response("down", { status: 503 })), + ); + const result = await GET( + new NextRequest("https://hotel.test/imaging?figure=xd-900-1&format=webp"), + ); + expect(result.status).toBe(200); + expect(result.headers.get("content-type")).toBe("image/svg+xml"); + expect(result.headers.get("x-imager-source")).toBe("unavailable"); + expect(result.headers.get("cache-control")).toContain("no-cache"); +}); diff --git a/src/lib/runtime-avatar-route.test.ts b/src/lib/runtime-avatar-route.test.ts index 8d0cb680..9ab2b450 100644 --- a/src/lib/runtime-avatar-route.test.ts +++ b/src/lib/runtime-avatar-route.test.ts @@ -108,6 +108,28 @@ it("serves a previously rendered avatar from the disk cache without re-fetching" expect(fetcher.mock.calls.length).toBe(callsAfterFirst); }); +it("revalidates a cached avatar with a 304 when the client already has it", async () => { + const fetcher = vi.fn( + async () => + new Response(new Uint8Array([1, 2, 3]), { + headers: { "content-type": "image/png" }, + }), + ); + vi.stubGlobal("fetch", fetcher); + vi.stubEnv("IMAGER_URL", "https://etag.test/avatarimage"); + const url = "https://hotel.test/api/imaging/avatar?figure=hd-77-1"; + const first = await GET(new NextRequest(url)); + const etag = first.headers.get("etag"); + expect(etag).toBeTruthy(); + + const second = await GET( + new NextRequest(url, { headers: { "if-none-match": etag } }), + ); + expect(second.status).toBe(304); + expect(second.headers.get("etag")).toBe(etag); + expect(second.headers.get("x-imager-source")).toBe("cache"); +}); + it("serves a graceful silhouette instead of a broken image when every upstream is down", async () => { const fetcher = vi.fn( async (_input: string | URL) => diff --git a/test-ci.txt b/test-ci.txt deleted file mode 100644 index 790409d2..00000000 --- a/test-ci.txt +++ /dev/null @@ -1,3 +0,0 @@ -test-ci-runner -# final test -# CI test via Gitea runner diff --git a/test-clean.txt b/test-clean.txt deleted file mode 100644 index 904fdc07..00000000 --- a/test-clean.txt +++ /dev/null @@ -1 +0,0 @@ -# clean v5 docker install test diff --git a/test-final.txt b/test-final.txt deleted file mode 100644 index 1a7b2cc3..00000000 --- a/test-final.txt +++ /dev/null @@ -1 +0,0 @@ -# CI test na complete herinstallatie diff --git a/test-label.txt b/test-label.txt deleted file mode 100644 index a99724fd..00000000 --- a/test-label.txt +++ /dev/null @@ -1 +0,0 @@ -# test nieuwe label aanpak diff --git a/test-only-ubuntu.txt b/test-only-ubuntu.txt deleted file mode 100644 index 352fb45f..00000000 --- a/test-only-ubuntu.txt +++ /dev/null @@ -1 +0,0 @@ -# test ubuntu-latest alleen diff --git a/test-runner-test.txt b/test-runner-test.txt deleted file mode 100644 index a6be8e24..00000000 --- a/test-runner-test.txt +++ /dev/null @@ -1,4 +0,0 @@ -// test: runner actief -// second test -// third test - token sync fix -// fourth test - token config fix diff --git a/test-ubuntu.txt b/test-ubuntu.txt deleted file mode 100644 index 2925edc7..00000000 --- a/test-ubuntu.txt +++ /dev/null @@ -1 +0,0 @@ -# test met ubuntu-latest label diff --git a/test-v5.txt b/test-v5.txt deleted file mode 100644 index 06773db3..00000000 --- a/test-v5.txt +++ /dev/null @@ -1 +0,0 @@ -# test na volledige schone installatie v5