forked from boos/BoosAPI
Add initial database schema and journal entries for token management
- Created a new snapshot JSON file (0003_snapshot.json) defining the schema for tables including account_tokens, accounts, checkin_logs, events, model_availability, proxy_logs, route_channels, settings, sites, token_model_availability, and token_routes. - Added columns, indexes, and foreign key constraints for each table to ensure data integrity and relationships. - Introduced a journal JSON file (_journal.json) to track schema versions and changes, including entries for version 6 with relevant tags and timestamps.
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
node_modules/
|
||||
dist/
|
||||
drizzle/
|
||||
data/*
|
||||
!data/.gitkeep
|
||||
.env
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
CREATE TABLE `accounts` (
|
||||
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||
`site_id` integer NOT NULL,
|
||||
`username` text,
|
||||
`access_token` text NOT NULL,
|
||||
`api_token` text,
|
||||
`balance` real DEFAULT 0,
|
||||
`balance_used` real DEFAULT 0,
|
||||
`quota` real DEFAULT 0,
|
||||
`unit_cost` real,
|
||||
`value_score` real DEFAULT 0,
|
||||
`status` text DEFAULT 'active',
|
||||
`checkin_enabled` integer DEFAULT true,
|
||||
`last_checkin_at` text,
|
||||
`last_balance_refresh` text,
|
||||
`extra_config` text,
|
||||
`created_at` text DEFAULT (datetime('now')),
|
||||
`updated_at` text DEFAULT (datetime('now')),
|
||||
FOREIGN KEY (`site_id`) REFERENCES `sites`(`id`) ON UPDATE no action ON DELETE cascade
|
||||
);
|
||||
--> statement-breakpoint
|
||||
CREATE TABLE `checkin_logs` (
|
||||
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||
`account_id` integer NOT NULL,
|
||||
`status` text NOT NULL,
|
||||
`message` text,
|
||||
`reward` text,
|
||||
`created_at` text DEFAULT (datetime('now')),
|
||||
FOREIGN KEY (`account_id`) REFERENCES `accounts`(`id`) ON UPDATE no action ON DELETE cascade
|
||||
);
|
||||
--> statement-breakpoint
|
||||
CREATE TABLE `model_availability` (
|
||||
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||
`account_id` integer NOT NULL,
|
||||
`model_name` text NOT NULL,
|
||||
`available` integer,
|
||||
`latency_ms` integer,
|
||||
`checked_at` text DEFAULT (datetime('now')),
|
||||
FOREIGN KEY (`account_id`) REFERENCES `accounts`(`id`) ON UPDATE no action ON DELETE cascade
|
||||
);
|
||||
--> statement-breakpoint
|
||||
CREATE TABLE `proxy_logs` (
|
||||
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||
`route_id` integer,
|
||||
`channel_id` integer,
|
||||
`account_id` integer,
|
||||
`model_requested` text,
|
||||
`model_actual` text,
|
||||
`status` text,
|
||||
`http_status` integer,
|
||||
`latency_ms` integer,
|
||||
`prompt_tokens` integer,
|
||||
`completion_tokens` integer,
|
||||
`total_tokens` integer,
|
||||
`estimated_cost` real,
|
||||
`error_message` text,
|
||||
`retry_count` integer DEFAULT 0,
|
||||
`created_at` text DEFAULT (datetime('now'))
|
||||
);
|
||||
--> statement-breakpoint
|
||||
CREATE TABLE `route_channels` (
|
||||
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||
`route_id` integer NOT NULL,
|
||||
`account_id` integer NOT NULL,
|
||||
`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_fail_at` text,
|
||||
`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
|
||||
);
|
||||
--> statement-breakpoint
|
||||
CREATE TABLE `settings` (
|
||||
`key` text PRIMARY KEY NOT NULL,
|
||||
`value` text
|
||||
);
|
||||
--> statement-breakpoint
|
||||
CREATE TABLE `sites` (
|
||||
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||
`name` text NOT NULL,
|
||||
`url` text NOT NULL,
|
||||
`platform` text NOT NULL,
|
||||
`status` text DEFAULT 'active' NOT NULL,
|
||||
`api_key` text,
|
||||
`created_at` text DEFAULT (datetime('now')),
|
||||
`updated_at` text DEFAULT (datetime('now'))
|
||||
);
|
||||
--> statement-breakpoint
|
||||
CREATE TABLE `token_routes` (
|
||||
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||
`model_pattern` text NOT NULL,
|
||||
`model_mapping` text,
|
||||
`enabled` integer DEFAULT true,
|
||||
`created_at` text DEFAULT (datetime('now')),
|
||||
`updated_at` text DEFAULT (datetime('now'))
|
||||
);
|
||||
@@ -0,0 +1,35 @@
|
||||
CREATE TABLE IF NOT EXISTS `account_tokens` (
|
||||
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||
`account_id` integer NOT NULL,
|
||||
`name` text NOT NULL,
|
||||
`token` text NOT NULL,
|
||||
`source` text DEFAULT 'manual',
|
||||
`enabled` integer DEFAULT true,
|
||||
`is_default` integer DEFAULT false,
|
||||
`created_at` text DEFAULT (datetime('now')),
|
||||
`updated_at` text DEFAULT (datetime('now')),
|
||||
FOREIGN KEY (`account_id`) REFERENCES `accounts`(`id`) ON UPDATE no action ON DELETE cascade
|
||||
);
|
||||
--> statement-breakpoint
|
||||
ALTER TABLE `route_channels` ADD COLUMN `token_id` integer;
|
||||
--> statement-breakpoint
|
||||
INSERT INTO `account_tokens` (`account_id`, `name`, `token`, `source`, `enabled`, `is_default`, `created_at`, `updated_at`)
|
||||
SELECT
|
||||
`a`.`id`,
|
||||
'default',
|
||||
`a`.`api_token`,
|
||||
'legacy',
|
||||
true,
|
||||
true,
|
||||
datetime('now'),
|
||||
datetime('now')
|
||||
FROM `accounts` AS `a`
|
||||
WHERE
|
||||
`a`.`api_token` IS NOT NULL
|
||||
AND trim(`a`.`api_token`) <> ''
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM `account_tokens` AS `t`
|
||||
WHERE `t`.`account_id` = `a`.`id`
|
||||
AND `t`.`token` = `a`.`api_token`
|
||||
);
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
CREATE TABLE IF NOT EXISTS `token_model_availability` (
|
||||
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||
`token_id` integer NOT NULL,
|
||||
`model_name` text NOT NULL,
|
||||
`available` integer,
|
||||
`latency_ms` integer,
|
||||
`checked_at` text DEFAULT (datetime('now')),
|
||||
FOREIGN KEY (`token_id`) REFERENCES `account_tokens`(`id`) ON UPDATE no action ON DELETE cascade
|
||||
);
|
||||
--> statement-breakpoint
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS `token_model_availability_token_model_unique`
|
||||
ON `token_model_availability` (`token_id`, `model_name`);
|
||||
@@ -0,0 +1,69 @@
|
||||
CREATE TABLE IF NOT EXISTS `events` (
|
||||
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||
`type` text NOT NULL,
|
||||
`title` text NOT NULL,
|
||||
`message` text,
|
||||
`level` text DEFAULT 'info' NOT NULL,
|
||||
`read` integer DEFAULT false,
|
||||
`related_id` integer,
|
||||
`related_type` text,
|
||||
`created_at` text DEFAULT (datetime('now'))
|
||||
);
|
||||
--> statement-breakpoint
|
||||
CREATE INDEX IF NOT EXISTS `sites_status_idx` ON `sites` (`status`);
|
||||
--> statement-breakpoint
|
||||
CREATE INDEX IF NOT EXISTS `accounts_site_id_idx` ON `accounts` (`site_id`);
|
||||
--> statement-breakpoint
|
||||
CREATE INDEX IF NOT EXISTS `accounts_status_idx` ON `accounts` (`status`);
|
||||
--> statement-breakpoint
|
||||
CREATE INDEX IF NOT EXISTS `accounts_site_status_idx` ON `accounts` (`site_id`,`status`);
|
||||
--> statement-breakpoint
|
||||
CREATE INDEX IF NOT EXISTS `account_tokens_account_id_idx` ON `account_tokens` (`account_id`);
|
||||
--> statement-breakpoint
|
||||
CREATE INDEX IF NOT EXISTS `account_tokens_account_enabled_idx` ON `account_tokens` (`account_id`,`enabled`);
|
||||
--> statement-breakpoint
|
||||
CREATE INDEX IF NOT EXISTS `account_tokens_enabled_idx` ON `account_tokens` (`enabled`);
|
||||
--> statement-breakpoint
|
||||
CREATE INDEX IF NOT EXISTS `checkin_logs_account_created_at_idx` ON `checkin_logs` (`account_id`,`created_at`);
|
||||
--> statement-breakpoint
|
||||
CREATE INDEX IF NOT EXISTS `checkin_logs_created_at_idx` ON `checkin_logs` (`created_at`);
|
||||
--> statement-breakpoint
|
||||
CREATE INDEX IF NOT EXISTS `checkin_logs_status_idx` ON `checkin_logs` (`status`);
|
||||
--> statement-breakpoint
|
||||
CREATE INDEX IF NOT EXISTS `model_availability_account_available_idx` ON `model_availability` (`account_id`,`available`);
|
||||
--> statement-breakpoint
|
||||
CREATE INDEX IF NOT EXISTS `model_availability_model_name_idx` ON `model_availability` (`model_name`);
|
||||
--> statement-breakpoint
|
||||
CREATE INDEX IF NOT EXISTS `token_model_availability_token_available_idx` ON `token_model_availability` (`token_id`,`available`);
|
||||
--> statement-breakpoint
|
||||
CREATE INDEX IF NOT EXISTS `token_model_availability_model_name_idx` ON `token_model_availability` (`model_name`);
|
||||
--> statement-breakpoint
|
||||
CREATE INDEX IF NOT EXISTS `token_model_availability_available_idx` ON `token_model_availability` (`available`);
|
||||
--> statement-breakpoint
|
||||
CREATE INDEX IF NOT EXISTS `token_routes_model_pattern_idx` ON `token_routes` (`model_pattern`);
|
||||
--> statement-breakpoint
|
||||
CREATE INDEX IF NOT EXISTS `token_routes_enabled_idx` ON `token_routes` (`enabled`);
|
||||
--> 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
|
||||
CREATE INDEX IF NOT EXISTS `proxy_logs_created_at_idx` ON `proxy_logs` (`created_at`);
|
||||
--> statement-breakpoint
|
||||
CREATE INDEX IF NOT EXISTS `proxy_logs_account_created_at_idx` ON `proxy_logs` (`account_id`,`created_at`);
|
||||
--> statement-breakpoint
|
||||
CREATE INDEX IF NOT EXISTS `proxy_logs_status_created_at_idx` ON `proxy_logs` (`status`,`created_at`);
|
||||
--> statement-breakpoint
|
||||
CREATE INDEX IF NOT EXISTS `proxy_logs_model_actual_created_at_idx` ON `proxy_logs` (`model_actual`,`created_at`);
|
||||
--> statement-breakpoint
|
||||
CREATE INDEX IF NOT EXISTS `events_read_created_at_idx` ON `events` (`read`,`created_at`);
|
||||
--> statement-breakpoint
|
||||
CREATE INDEX IF NOT EXISTS `events_type_created_at_idx` ON `events` (`type`,`created_at`);
|
||||
--> statement-breakpoint
|
||||
CREATE INDEX IF NOT EXISTS `events_created_at_idx` ON `events` (`created_at`);
|
||||
@@ -0,0 +1,710 @@
|
||||
{
|
||||
"version": "6",
|
||||
"dialect": "sqlite",
|
||||
"id": "9035be50-a1b2-4a8a-8d3c-27cf0d4e3a12",
|
||||
"prevId": "00000000-0000-0000-0000-000000000000",
|
||||
"tables": {
|
||||
"accounts": {
|
||||
"name": "accounts",
|
||||
"columns": {
|
||||
"id": {
|
||||
"name": "id",
|
||||
"type": "integer",
|
||||
"primaryKey": true,
|
||||
"notNull": true,
|
||||
"autoincrement": true
|
||||
},
|
||||
"site_id": {
|
||||
"name": "site_id",
|
||||
"type": "integer",
|
||||
"primaryKey": false,
|
||||
"notNull": true,
|
||||
"autoincrement": false
|
||||
},
|
||||
"username": {
|
||||
"name": "username",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"access_token": {
|
||||
"name": "access_token",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": true,
|
||||
"autoincrement": false
|
||||
},
|
||||
"api_token": {
|
||||
"name": "api_token",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"balance": {
|
||||
"name": "balance",
|
||||
"type": "real",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false,
|
||||
"default": 0
|
||||
},
|
||||
"balance_used": {
|
||||
"name": "balance_used",
|
||||
"type": "real",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false,
|
||||
"default": 0
|
||||
},
|
||||
"quota": {
|
||||
"name": "quota",
|
||||
"type": "real",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false,
|
||||
"default": 0
|
||||
},
|
||||
"unit_cost": {
|
||||
"name": "unit_cost",
|
||||
"type": "real",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"value_score": {
|
||||
"name": "value_score",
|
||||
"type": "real",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false,
|
||||
"default": 0
|
||||
},
|
||||
"status": {
|
||||
"name": "status",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false,
|
||||
"default": "'active'"
|
||||
},
|
||||
"checkin_enabled": {
|
||||
"name": "checkin_enabled",
|
||||
"type": "integer",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false,
|
||||
"default": true
|
||||
},
|
||||
"last_checkin_at": {
|
||||
"name": "last_checkin_at",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"last_balance_refresh": {
|
||||
"name": "last_balance_refresh",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"extra_config": {
|
||||
"name": "extra_config",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"created_at": {
|
||||
"name": "created_at",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false,
|
||||
"default": "(datetime('now'))"
|
||||
},
|
||||
"updated_at": {
|
||||
"name": "updated_at",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false,
|
||||
"default": "(datetime('now'))"
|
||||
}
|
||||
},
|
||||
"indexes": {},
|
||||
"foreignKeys": {
|
||||
"accounts_site_id_sites_id_fk": {
|
||||
"name": "accounts_site_id_sites_id_fk",
|
||||
"tableFrom": "accounts",
|
||||
"tableTo": "sites",
|
||||
"columnsFrom": [
|
||||
"site_id"
|
||||
],
|
||||
"columnsTo": [
|
||||
"id"
|
||||
],
|
||||
"onDelete": "cascade",
|
||||
"onUpdate": "no action"
|
||||
}
|
||||
},
|
||||
"compositePrimaryKeys": {},
|
||||
"uniqueConstraints": {},
|
||||
"checkConstraints": {}
|
||||
},
|
||||
"checkin_logs": {
|
||||
"name": "checkin_logs",
|
||||
"columns": {
|
||||
"id": {
|
||||
"name": "id",
|
||||
"type": "integer",
|
||||
"primaryKey": true,
|
||||
"notNull": true,
|
||||
"autoincrement": true
|
||||
},
|
||||
"account_id": {
|
||||
"name": "account_id",
|
||||
"type": "integer",
|
||||
"primaryKey": false,
|
||||
"notNull": true,
|
||||
"autoincrement": false
|
||||
},
|
||||
"status": {
|
||||
"name": "status",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": true,
|
||||
"autoincrement": false
|
||||
},
|
||||
"message": {
|
||||
"name": "message",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"reward": {
|
||||
"name": "reward",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"created_at": {
|
||||
"name": "created_at",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false,
|
||||
"default": "(datetime('now'))"
|
||||
}
|
||||
},
|
||||
"indexes": {},
|
||||
"foreignKeys": {
|
||||
"checkin_logs_account_id_accounts_id_fk": {
|
||||
"name": "checkin_logs_account_id_accounts_id_fk",
|
||||
"tableFrom": "checkin_logs",
|
||||
"tableTo": "accounts",
|
||||
"columnsFrom": [
|
||||
"account_id"
|
||||
],
|
||||
"columnsTo": [
|
||||
"id"
|
||||
],
|
||||
"onDelete": "cascade",
|
||||
"onUpdate": "no action"
|
||||
}
|
||||
},
|
||||
"compositePrimaryKeys": {},
|
||||
"uniqueConstraints": {},
|
||||
"checkConstraints": {}
|
||||
},
|
||||
"model_availability": {
|
||||
"name": "model_availability",
|
||||
"columns": {
|
||||
"id": {
|
||||
"name": "id",
|
||||
"type": "integer",
|
||||
"primaryKey": true,
|
||||
"notNull": true,
|
||||
"autoincrement": true
|
||||
},
|
||||
"account_id": {
|
||||
"name": "account_id",
|
||||
"type": "integer",
|
||||
"primaryKey": false,
|
||||
"notNull": true,
|
||||
"autoincrement": false
|
||||
},
|
||||
"model_name": {
|
||||
"name": "model_name",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": true,
|
||||
"autoincrement": false
|
||||
},
|
||||
"available": {
|
||||
"name": "available",
|
||||
"type": "integer",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"latency_ms": {
|
||||
"name": "latency_ms",
|
||||
"type": "integer",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"checked_at": {
|
||||
"name": "checked_at",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false,
|
||||
"default": "(datetime('now'))"
|
||||
}
|
||||
},
|
||||
"indexes": {},
|
||||
"foreignKeys": {
|
||||
"model_availability_account_id_accounts_id_fk": {
|
||||
"name": "model_availability_account_id_accounts_id_fk",
|
||||
"tableFrom": "model_availability",
|
||||
"tableTo": "accounts",
|
||||
"columnsFrom": [
|
||||
"account_id"
|
||||
],
|
||||
"columnsTo": [
|
||||
"id"
|
||||
],
|
||||
"onDelete": "cascade",
|
||||
"onUpdate": "no action"
|
||||
}
|
||||
},
|
||||
"compositePrimaryKeys": {},
|
||||
"uniqueConstraints": {},
|
||||
"checkConstraints": {}
|
||||
},
|
||||
"proxy_logs": {
|
||||
"name": "proxy_logs",
|
||||
"columns": {
|
||||
"id": {
|
||||
"name": "id",
|
||||
"type": "integer",
|
||||
"primaryKey": true,
|
||||
"notNull": true,
|
||||
"autoincrement": true
|
||||
},
|
||||
"route_id": {
|
||||
"name": "route_id",
|
||||
"type": "integer",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"channel_id": {
|
||||
"name": "channel_id",
|
||||
"type": "integer",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"account_id": {
|
||||
"name": "account_id",
|
||||
"type": "integer",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"model_requested": {
|
||||
"name": "model_requested",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"model_actual": {
|
||||
"name": "model_actual",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"status": {
|
||||
"name": "status",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"http_status": {
|
||||
"name": "http_status",
|
||||
"type": "integer",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"latency_ms": {
|
||||
"name": "latency_ms",
|
||||
"type": "integer",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"prompt_tokens": {
|
||||
"name": "prompt_tokens",
|
||||
"type": "integer",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"completion_tokens": {
|
||||
"name": "completion_tokens",
|
||||
"type": "integer",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"total_tokens": {
|
||||
"name": "total_tokens",
|
||||
"type": "integer",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"estimated_cost": {
|
||||
"name": "estimated_cost",
|
||||
"type": "real",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"error_message": {
|
||||
"name": "error_message",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"retry_count": {
|
||||
"name": "retry_count",
|
||||
"type": "integer",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false,
|
||||
"default": 0
|
||||
},
|
||||
"created_at": {
|
||||
"name": "created_at",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false,
|
||||
"default": "(datetime('now'))"
|
||||
}
|
||||
},
|
||||
"indexes": {},
|
||||
"foreignKeys": {},
|
||||
"compositePrimaryKeys": {},
|
||||
"uniqueConstraints": {},
|
||||
"checkConstraints": {}
|
||||
},
|
||||
"route_channels": {
|
||||
"name": "route_channels",
|
||||
"columns": {
|
||||
"id": {
|
||||
"name": "id",
|
||||
"type": "integer",
|
||||
"primaryKey": true,
|
||||
"notNull": true,
|
||||
"autoincrement": true
|
||||
},
|
||||
"route_id": {
|
||||
"name": "route_id",
|
||||
"type": "integer",
|
||||
"primaryKey": false,
|
||||
"notNull": true,
|
||||
"autoincrement": false
|
||||
},
|
||||
"account_id": {
|
||||
"name": "account_id",
|
||||
"type": "integer",
|
||||
"primaryKey": false,
|
||||
"notNull": true,
|
||||
"autoincrement": false
|
||||
},
|
||||
"priority": {
|
||||
"name": "priority",
|
||||
"type": "integer",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false,
|
||||
"default": 0
|
||||
},
|
||||
"weight": {
|
||||
"name": "weight",
|
||||
"type": "integer",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false,
|
||||
"default": 10
|
||||
},
|
||||
"enabled": {
|
||||
"name": "enabled",
|
||||
"type": "integer",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false,
|
||||
"default": true
|
||||
},
|
||||
"manual_override": {
|
||||
"name": "manual_override",
|
||||
"type": "integer",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false,
|
||||
"default": false
|
||||
},
|
||||
"success_count": {
|
||||
"name": "success_count",
|
||||
"type": "integer",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false,
|
||||
"default": 0
|
||||
},
|
||||
"fail_count": {
|
||||
"name": "fail_count",
|
||||
"type": "integer",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false,
|
||||
"default": 0
|
||||
},
|
||||
"total_latency_ms": {
|
||||
"name": "total_latency_ms",
|
||||
"type": "integer",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false,
|
||||
"default": 0
|
||||
},
|
||||
"total_cost": {
|
||||
"name": "total_cost",
|
||||
"type": "real",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false,
|
||||
"default": 0
|
||||
},
|
||||
"last_used_at": {
|
||||
"name": "last_used_at",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"last_fail_at": {
|
||||
"name": "last_fail_at",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"cooldown_until": {
|
||||
"name": "cooldown_until",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
}
|
||||
},
|
||||
"indexes": {},
|
||||
"foreignKeys": {
|
||||
"route_channels_route_id_token_routes_id_fk": {
|
||||
"name": "route_channels_route_id_token_routes_id_fk",
|
||||
"tableFrom": "route_channels",
|
||||
"tableTo": "token_routes",
|
||||
"columnsFrom": [
|
||||
"route_id"
|
||||
],
|
||||
"columnsTo": [
|
||||
"id"
|
||||
],
|
||||
"onDelete": "cascade",
|
||||
"onUpdate": "no action"
|
||||
},
|
||||
"route_channels_account_id_accounts_id_fk": {
|
||||
"name": "route_channels_account_id_accounts_id_fk",
|
||||
"tableFrom": "route_channels",
|
||||
"tableTo": "accounts",
|
||||
"columnsFrom": [
|
||||
"account_id"
|
||||
],
|
||||
"columnsTo": [
|
||||
"id"
|
||||
],
|
||||
"onDelete": "cascade",
|
||||
"onUpdate": "no action"
|
||||
}
|
||||
},
|
||||
"compositePrimaryKeys": {},
|
||||
"uniqueConstraints": {},
|
||||
"checkConstraints": {}
|
||||
},
|
||||
"settings": {
|
||||
"name": "settings",
|
||||
"columns": {
|
||||
"key": {
|
||||
"name": "key",
|
||||
"type": "text",
|
||||
"primaryKey": true,
|
||||
"notNull": true,
|
||||
"autoincrement": false
|
||||
},
|
||||
"value": {
|
||||
"name": "value",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
}
|
||||
},
|
||||
"indexes": {},
|
||||
"foreignKeys": {},
|
||||
"compositePrimaryKeys": {},
|
||||
"uniqueConstraints": {},
|
||||
"checkConstraints": {}
|
||||
},
|
||||
"sites": {
|
||||
"name": "sites",
|
||||
"columns": {
|
||||
"id": {
|
||||
"name": "id",
|
||||
"type": "integer",
|
||||
"primaryKey": true,
|
||||
"notNull": true,
|
||||
"autoincrement": true
|
||||
},
|
||||
"name": {
|
||||
"name": "name",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": true,
|
||||
"autoincrement": false
|
||||
},
|
||||
"url": {
|
||||
"name": "url",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": true,
|
||||
"autoincrement": false
|
||||
},
|
||||
"platform": {
|
||||
"name": "platform",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": true,
|
||||
"autoincrement": false
|
||||
},
|
||||
"api_key": {
|
||||
"name": "api_key",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"created_at": {
|
||||
"name": "created_at",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false,
|
||||
"default": "(datetime('now'))"
|
||||
},
|
||||
"updated_at": {
|
||||
"name": "updated_at",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false,
|
||||
"default": "(datetime('now'))"
|
||||
}
|
||||
},
|
||||
"indexes": {},
|
||||
"foreignKeys": {},
|
||||
"compositePrimaryKeys": {},
|
||||
"uniqueConstraints": {},
|
||||
"checkConstraints": {}
|
||||
},
|
||||
"token_routes": {
|
||||
"name": "token_routes",
|
||||
"columns": {
|
||||
"id": {
|
||||
"name": "id",
|
||||
"type": "integer",
|
||||
"primaryKey": true,
|
||||
"notNull": true,
|
||||
"autoincrement": true
|
||||
},
|
||||
"model_pattern": {
|
||||
"name": "model_pattern",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": true,
|
||||
"autoincrement": false
|
||||
},
|
||||
"model_mapping": {
|
||||
"name": "model_mapping",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"enabled": {
|
||||
"name": "enabled",
|
||||
"type": "integer",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false,
|
||||
"default": true
|
||||
},
|
||||
"created_at": {
|
||||
"name": "created_at",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false,
|
||||
"default": "(datetime('now'))"
|
||||
},
|
||||
"updated_at": {
|
||||
"name": "updated_at",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false,
|
||||
"default": "(datetime('now'))"
|
||||
}
|
||||
},
|
||||
"indexes": {},
|
||||
"foreignKeys": {},
|
||||
"compositePrimaryKeys": {},
|
||||
"uniqueConstraints": {},
|
||||
"checkConstraints": {}
|
||||
}
|
||||
},
|
||||
"views": {},
|
||||
"enums": {},
|
||||
"_meta": {
|
||||
"schemas": {},
|
||||
"tables": {},
|
||||
"columns": {}
|
||||
},
|
||||
"internal": {
|
||||
"indexes": {}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"version": "7",
|
||||
"dialect": "sqlite",
|
||||
"entries": [
|
||||
{
|
||||
"idx": 0,
|
||||
"version": "6",
|
||||
"when": 1771906082166,
|
||||
"tag": "0000_sloppy_blackheart",
|
||||
"breakpoints": true
|
||||
},
|
||||
{
|
||||
"idx": 1,
|
||||
"version": "6",
|
||||
"when": 1771966800000,
|
||||
"tag": "0001_token_management",
|
||||
"breakpoints": true
|
||||
},
|
||||
{
|
||||
"idx": 2,
|
||||
"version": "6",
|
||||
"when": 1771969800000,
|
||||
"tag": "0002_token_model_availability",
|
||||
"breakpoints": true
|
||||
},
|
||||
{
|
||||
"idx": 3,
|
||||
"version": "6",
|
||||
"when": 1772079351462,
|
||||
"tag": "0003_great_blizzard",
|
||||
"breakpoints": true
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user