forked from boos/BoosAPI
215 lines
6.8 KiB
SQL
215 lines
6.8 KiB
SQL
ALTER TABLE `sites` ADD `proxy_url` text;
|
|
--> statement-breakpoint
|
|
ALTER TABLE `sites` ADD `use_system_proxy` integer DEFAULT false;
|
|
--> statement-breakpoint
|
|
UPDATE `sites`
|
|
SET `use_system_proxy` = false
|
|
WHERE `use_system_proxy` IS NULL;
|
|
--> statement-breakpoint
|
|
ALTER TABLE `sites` ADD `custom_headers` text;
|
|
--> statement-breakpoint
|
|
ALTER TABLE `sites` ADD `external_checkin_url` text;
|
|
--> statement-breakpoint
|
|
ALTER TABLE `sites` ADD `global_weight` real DEFAULT 1;
|
|
--> statement-breakpoint
|
|
UPDATE `sites`
|
|
SET `global_weight` = 1
|
|
WHERE `global_weight` IS NULL
|
|
OR `global_weight` <= 0;
|
|
--> statement-breakpoint
|
|
ALTER TABLE `token_routes` ADD `display_name` text;
|
|
--> statement-breakpoint
|
|
ALTER TABLE `token_routes` ADD `display_icon` text;
|
|
--> statement-breakpoint
|
|
ALTER TABLE `token_routes` ADD `decision_snapshot` text;
|
|
--> statement-breakpoint
|
|
ALTER TABLE `token_routes` ADD `decision_refreshed_at` text;
|
|
--> statement-breakpoint
|
|
ALTER TABLE `token_routes` ADD `routing_strategy` text DEFAULT 'weighted';
|
|
--> statement-breakpoint
|
|
ALTER TABLE `route_channels` ADD `source_model` text;
|
|
--> statement-breakpoint
|
|
ALTER TABLE `route_channels` ADD `last_selected_at` text;
|
|
--> statement-breakpoint
|
|
ALTER TABLE `route_channels` ADD `consecutive_fail_count` integer NOT NULL DEFAULT 0;
|
|
--> statement-breakpoint
|
|
ALTER TABLE `route_channels` ADD `cooldown_level` integer NOT NULL DEFAULT 0;
|
|
--> statement-breakpoint
|
|
CREATE TABLE IF NOT EXISTS `downstream_api_keys` (
|
|
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
|
`name` text NOT NULL,
|
|
`key` text NOT NULL,
|
|
`description` text,
|
|
`enabled` integer DEFAULT true,
|
|
`expires_at` text,
|
|
`max_cost` real,
|
|
`used_cost` real DEFAULT 0,
|
|
`max_requests` integer,
|
|
`used_requests` integer DEFAULT 0,
|
|
`supported_models` text,
|
|
`allowed_route_ids` text,
|
|
`site_weight_multipliers` text,
|
|
`last_used_at` text,
|
|
`created_at` text DEFAULT (datetime('now')),
|
|
`updated_at` text DEFAULT (datetime('now'))
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE UNIQUE INDEX IF NOT EXISTS `downstream_api_keys_key_unique`
|
|
ON `downstream_api_keys` (`key`);
|
|
--> statement-breakpoint
|
|
CREATE INDEX IF NOT EXISTS `downstream_api_keys_name_idx`
|
|
ON `downstream_api_keys` (`name`);
|
|
--> statement-breakpoint
|
|
CREATE INDEX IF NOT EXISTS `downstream_api_keys_enabled_idx`
|
|
ON `downstream_api_keys` (`enabled`);
|
|
--> statement-breakpoint
|
|
CREATE INDEX IF NOT EXISTS `downstream_api_keys_expires_at_idx`
|
|
ON `downstream_api_keys` (`expires_at`);
|
|
--> statement-breakpoint
|
|
CREATE TABLE IF NOT EXISTS `proxy_files` (
|
|
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
|
`public_id` text NOT NULL,
|
|
`owner_type` text NOT NULL,
|
|
`owner_id` text NOT NULL,
|
|
`filename` text NOT NULL,
|
|
`mime_type` text NOT NULL,
|
|
`purpose` text,
|
|
`byte_size` integer NOT NULL,
|
|
`sha256` text NOT NULL,
|
|
`content_base64` text NOT NULL,
|
|
`created_at` text DEFAULT (datetime('now')),
|
|
`updated_at` text DEFAULT (datetime('now')),
|
|
`deleted_at` text
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE UNIQUE INDEX IF NOT EXISTS `proxy_files_public_id_unique`
|
|
ON `proxy_files` (`public_id`);
|
|
--> statement-breakpoint
|
|
CREATE INDEX IF NOT EXISTS `proxy_files_owner_lookup_idx`
|
|
ON `proxy_files` (`owner_type`, `owner_id`, `deleted_at`);
|
|
--> statement-breakpoint
|
|
CREATE TABLE IF NOT EXISTS `proxy_video_tasks` (
|
|
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
|
`public_id` text NOT NULL,
|
|
`upstream_video_id` text NOT NULL,
|
|
`site_url` text NOT NULL,
|
|
`token_value` text NOT NULL,
|
|
`requested_model` text,
|
|
`actual_model` text,
|
|
`channel_id` integer,
|
|
`account_id` integer,
|
|
`status_snapshot` text,
|
|
`upstream_response_meta` text,
|
|
`last_upstream_status` integer,
|
|
`last_polled_at` text,
|
|
`created_at` text DEFAULT (datetime('now')),
|
|
`updated_at` text DEFAULT (datetime('now'))
|
|
);
|
|
--> statement-breakpoint
|
|
CREATE UNIQUE INDEX IF NOT EXISTS `proxy_video_tasks_public_id_unique`
|
|
ON `proxy_video_tasks` (`public_id`);
|
|
--> statement-breakpoint
|
|
CREATE INDEX IF NOT EXISTS `proxy_video_tasks_upstream_video_id_idx`
|
|
ON `proxy_video_tasks` (`upstream_video_id`);
|
|
--> statement-breakpoint
|
|
CREATE INDEX IF NOT EXISTS `proxy_video_tasks_created_at_idx`
|
|
ON `proxy_video_tasks` (`created_at`);
|
|
--> statement-breakpoint
|
|
CREATE UNIQUE INDEX IF NOT EXISTS `model_availability_account_model_unique`
|
|
ON `model_availability` (`account_id`, `model_name`);
|
|
--> statement-breakpoint
|
|
PRAGMA foreign_keys=OFF;
|
|
--> statement-breakpoint
|
|
CREATE TABLE `__new_route_channels` (
|
|
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
|
`route_id` integer NOT NULL,
|
|
`account_id` integer NOT NULL,
|
|
`token_id` integer,
|
|
`source_model` text,
|
|
`priority` integer DEFAULT 0,
|
|
`weight` integer DEFAULT 10,
|
|
`enabled` integer DEFAULT true,
|
|
`manual_override` integer DEFAULT false,
|
|
`success_count` integer DEFAULT 0,
|
|
`fail_count` integer DEFAULT 0,
|
|
`total_latency_ms` integer DEFAULT 0,
|
|
`total_cost` real DEFAULT 0,
|
|
`last_used_at` text,
|
|
`last_selected_at` text,
|
|
`last_fail_at` text,
|
|
`consecutive_fail_count` integer NOT NULL DEFAULT 0,
|
|
`cooldown_level` integer NOT NULL DEFAULT 0,
|
|
`cooldown_until` text,
|
|
FOREIGN KEY (`route_id`) REFERENCES `token_routes`(`id`) ON UPDATE no action ON DELETE cascade,
|
|
FOREIGN KEY (`account_id`) REFERENCES `accounts`(`id`) ON UPDATE no action ON DELETE cascade,
|
|
FOREIGN KEY (`token_id`) REFERENCES `account_tokens`(`id`) ON UPDATE no action ON DELETE set null
|
|
);
|
|
--> statement-breakpoint
|
|
INSERT INTO `__new_route_channels` (
|
|
`id`,
|
|
`route_id`,
|
|
`account_id`,
|
|
`token_id`,
|
|
`source_model`,
|
|
`priority`,
|
|
`weight`,
|
|
`enabled`,
|
|
`manual_override`,
|
|
`success_count`,
|
|
`fail_count`,
|
|
`total_latency_ms`,
|
|
`total_cost`,
|
|
`last_used_at`,
|
|
`last_selected_at`,
|
|
`last_fail_at`,
|
|
`consecutive_fail_count`,
|
|
`cooldown_level`,
|
|
`cooldown_until`
|
|
)
|
|
SELECT
|
|
`id`,
|
|
`route_id`,
|
|
`account_id`,
|
|
CASE
|
|
WHEN `token_id` IS NULL THEN NULL
|
|
WHEN EXISTS (SELECT 1 FROM `account_tokens` WHERE `account_tokens`.`id` = `route_channels`.`token_id`) THEN `token_id`
|
|
ELSE NULL
|
|
END,
|
|
`source_model`,
|
|
`priority`,
|
|
`weight`,
|
|
`enabled`,
|
|
`manual_override`,
|
|
`success_count`,
|
|
`fail_count`,
|
|
`total_latency_ms`,
|
|
`total_cost`,
|
|
`last_used_at`,
|
|
`last_selected_at`,
|
|
`last_fail_at`,
|
|
`consecutive_fail_count`,
|
|
`cooldown_level`,
|
|
`cooldown_until`
|
|
FROM `route_channels`;
|
|
--> statement-breakpoint
|
|
DROP TABLE `route_channels`;
|
|
--> statement-breakpoint
|
|
ALTER TABLE `__new_route_channels` RENAME TO `route_channels`;
|
|
--> statement-breakpoint
|
|
CREATE INDEX IF NOT EXISTS `route_channels_route_id_idx`
|
|
ON `route_channels` (`route_id`);
|
|
--> statement-breakpoint
|
|
CREATE INDEX IF NOT EXISTS `route_channels_account_id_idx`
|
|
ON `route_channels` (`account_id`);
|
|
--> statement-breakpoint
|
|
CREATE INDEX IF NOT EXISTS `route_channels_token_id_idx`
|
|
ON `route_channels` (`token_id`);
|
|
--> statement-breakpoint
|
|
CREATE INDEX IF NOT EXISTS `route_channels_route_enabled_idx`
|
|
ON `route_channels` (`route_id`, `enabled`);
|
|
--> statement-breakpoint
|
|
CREATE INDEX IF NOT EXISTS `route_channels_route_token_idx`
|
|
ON `route_channels` (`route_id`, `token_id`);
|
|
--> statement-breakpoint
|
|
PRAGMA foreign_keys=ON;
|