42 lines
1.1 KiB
SQL
42 lines
1.1 KiB
SQL
-- Enable foreign key support
|
|
PRAGMA foreign_keys = ON;
|
|
|
|
-- Add Migration Version
|
|
CREATE TABLE IF NOT EXISTS _sqlx_migrations (
|
|
version INTEGER PRIMARY KEY,
|
|
description TEXT NOT NULL,
|
|
installed_on TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Create users table
|
|
CREATE TABLE users (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
email VARCHAR(255) NOT NULL UNIQUE,
|
|
password_hash TEXT NOT NULL
|
|
);
|
|
|
|
-- Create links table
|
|
CREATE TABLE links (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
original_url TEXT NOT NULL,
|
|
short_code VARCHAR(8) NOT NULL UNIQUE,
|
|
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
clicks INTEGER NOT NULL DEFAULT 0,
|
|
user_id INTEGER,
|
|
FOREIGN KEY (user_id) REFERENCES users(id)
|
|
);
|
|
|
|
-- Create clicks table
|
|
CREATE TABLE clicks (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
link_id INTEGER,
|
|
source TEXT,
|
|
query_source TEXT,
|
|
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (link_id) REFERENCES links(id)
|
|
);
|
|
|
|
-- Create indexes
|
|
CREATE INDEX idx_short_code ON links(short_code);
|
|
CREATE INDEX idx_user_id ON links(user_id);
|
|
CREATE INDEX idx_link_id ON clicks(link_id);
|