- Add server recommendation integration (SERVER_RECOMMEND worker) - Implement KV-based session management for multi-step ordering - Add Linode/Vultr API clients for server provisioning - Add server-tool for Function Calling support refactor: major code reorganization (Phase 1-3) - Remove 443 lines of deprecated callback handlers - Extract handlers to separate files (message-handler, callback-handler) - Extract cloud-spec-service, server-recommend-service - Centralize constants (OS_IMAGES, REGION_FLAGS, NUM_EMOJIS) - webhook.ts reduced from 1,951 to 30 lines Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
53 lines
2.1 KiB
SQL
53 lines
2.1 KiB
SQL
-- Migration 003: Add server management tables
|
|
-- Purpose: Cloud server order tracking
|
|
-- Date: 2026-01-23
|
|
-- Reference: CLAUDE.md "Server Management System"
|
|
--
|
|
-- Background:
|
|
-- Telegram 봇을 통해 클라우드 서버 주문 내역을 기록하고 관리합니다.
|
|
-- 예치금 시스템과 통합하여 자동 결제를 지원합니다.
|
|
-- 서버 사양(cloud_providers, instance_specs)은 별도 외부 시스템에서 관리합니다.
|
|
|
|
-- Step 1: Create server_orders table (order lifecycle tracking)
|
|
CREATE TABLE IF NOT EXISTS server_orders (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
user_id INTEGER NOT NULL,
|
|
spec_id INTEGER NOT NULL,
|
|
status TEXT NOT NULL DEFAULT 'pending' CHECK(status IN ('pending', 'provisioning', 'active', 'failed', 'cancelled', 'terminated')),
|
|
region TEXT NOT NULL,
|
|
provider_instance_id TEXT,
|
|
ip_address TEXT,
|
|
root_password TEXT,
|
|
price_paid INTEGER NOT NULL,
|
|
error_message TEXT,
|
|
provisioned_at DATETIME,
|
|
terminated_at DATETIME,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (user_id) REFERENCES users(id)
|
|
);
|
|
|
|
-- Step 2: Create user_servers table (ownership mapping)
|
|
CREATE TABLE IF NOT EXISTS user_servers (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
user_id INTEGER NOT NULL,
|
|
order_id INTEGER UNIQUE NOT NULL,
|
|
provider_id INTEGER NOT NULL,
|
|
label TEXT,
|
|
verified INTEGER DEFAULT 0,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (user_id) REFERENCES users(id),
|
|
FOREIGN KEY (order_id) REFERENCES server_orders(id)
|
|
);
|
|
|
|
-- Step 3: Create indexes for efficient queries
|
|
CREATE INDEX IF NOT EXISTS idx_server_orders_user ON server_orders(user_id);
|
|
CREATE INDEX IF NOT EXISTS idx_server_orders_status ON server_orders(status, created_at DESC);
|
|
CREATE INDEX IF NOT EXISTS idx_user_servers_user ON user_servers(user_id);
|
|
CREATE INDEX IF NOT EXISTS idx_user_servers_provider ON user_servers(provider_id);
|
|
|
|
-- Verification Queries (주석으로 제공)
|
|
-- SELECT * FROM server_orders WHERE user_id = 1 ORDER BY created_at DESC;
|
|
-- SELECT * FROM user_servers WHERE user_id = 1;
|