Files
uptodownbot/internal/repo/migrations/001_init.sql
db123 05fcdf7458 feat: initial implementation of uptodownbot
Telegram bot for downloading media from any site using yt-dlp.
Supports audio/video/both, quality selection, language picker,
container format selection, playlist pagination, progress updates,
per-user quotas, user preferences, download history, cancel at any step,
polling and webhook modes, proxy support, and SQLite persistence.
2026-06-25 14:22:48 +03:30

52 lines
1.8 KiB
SQL

-- +goose Up
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
chat_id INTEGER NOT NULL UNIQUE,
language TEXT NOT NULL DEFAULT 'en',
created_at TEXT NOT NULL DEFAULT (datetime('now'))
);
CREATE TABLE IF NOT EXISTS user_preferences (
user_id INTEGER PRIMARY KEY REFERENCES users(id),
default_media_type TEXT NOT NULL DEFAULT 'video_audio',
default_quality TEXT NOT NULL DEFAULT 'best',
default_container TEXT NOT NULL DEFAULT 'mp4',
default_language TEXT NOT NULL DEFAULT ''
);
CREATE TABLE IF NOT EXISTS user_quotas (
user_id INTEGER PRIMARY KEY REFERENCES users(id),
daily_limit_mb INTEGER NOT NULL DEFAULT 100,
daily_used_mb INTEGER NOT NULL DEFAULT 0,
daily_date TEXT NOT NULL DEFAULT '',
weekly_limit_mb INTEGER NOT NULL DEFAULT 500,
weekly_used_mb INTEGER NOT NULL DEFAULT 0,
week_start TEXT NOT NULL DEFAULT '',
monthly_limit_mb INTEGER NOT NULL DEFAULT 2000,
monthly_used_mb INTEGER NOT NULL DEFAULT 0,
month_start TEXT NOT NULL DEFAULT '',
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
);
CREATE TABLE IF NOT EXISTS download_history (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER NOT NULL REFERENCES users(id),
url TEXT NOT NULL,
title TEXT NOT NULL,
media_type TEXT NOT NULL,
format_id TEXT NOT NULL,
container TEXT NOT NULL,
file_size INTEGER NOT NULL DEFAULT 0,
status TEXT NOT NULL DEFAULT 'completed',
created_at TEXT NOT NULL DEFAULT (datetime('now'))
);
CREATE INDEX IF NOT EXISTS idx_history_user ON download_history(user_id);
CREATE INDEX IF NOT EXISTS idx_history_user_created ON download_history(user_id, created_at);
-- +goose Down
DROP TABLE IF EXISTS download_history;
DROP TABLE IF EXISTS user_quotas;
DROP TABLE IF EXISTS user_preferences;
DROP TABLE IF EXISTS users;