Podcast-server/sql/schema.sql

69 lines
1.9 KiB
SQL

-- Database schema for Podcast Hosting Server
CREATE DATABASE IF NOT EXISTS church_podcast;
USE church_podcast;
-- Episodes table
CREATE TABLE IF NOT EXISTS episodes (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
description TEXT,
audio_file VARCHAR(255) NOT NULL,
cover_image VARCHAR(255),
release_date DATE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Settings table
CREATE TABLE IF NOT EXISTS settings (
`key` VARCHAR(50) PRIMARY KEY,
`value` TEXT
);
-- Admins table
CREATE TABLE IF NOT EXISTS admins (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
role ENUM('admin', 'editor') DEFAULT 'editor',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Plays table (Analytics)
CREATE TABLE IF NOT EXISTS plays (
id INT AUTO_INCREMENT PRIMARY KEY,
episode_id INT NOT NULL,
duration INT DEFAULT 0, -- seconds listened
session_id VARCHAR(100) UNIQUE,
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (episode_id) REFERENCES episodes(id) ON DELETE CASCADE
);
-- Default settings
INSERT IGNORE INTO settings (`key`, `value`) VALUES
('site_title', 'Our Church Podcast'),
('banner_image', 'default-banner.jpg'),
('footer_copyright', 'Our Church'),
('footer_powered_by', 'Antigravity Podcast Server');
-- Subscriptions table (Push Notifications)
CREATE TABLE IF NOT EXISTS subscriptions (
id INT AUTO_INCREMENT PRIMARY KEY,
endpoint TEXT NOT NULL,
p256dh VARCHAR(255) NOT NULL,
auth VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Activity Log table
CREATE TABLE IF NOT EXISTS activity_log (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,
username VARCHAR(50),
action VARCHAR(255) NOT NULL,
details TEXT,
ip_address VARCHAR(45),
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);