Files
atakanozbancom/database/schema.sql
T

112 lines
4.3 KiB
Transact-SQL
Raw Normal View History

-- atakanozban.com - full database schema
-- Target: Microsoft SQL Server
--
-- This project uses EF6 Code First with Database.SetInitializer(null), which means
-- Entity Framework will NOT create or migrate the database automatically. Run this
-- script once against a fresh database to create every table the application needs.
--
-- Usage:
-- 1. Create an empty database, e.g.:
-- CREATE DATABASE atakanozbancomdb;
-- 2. Run this whole script against that database (SSMS, Azure Data Studio, sqlcmd, etc.)
USE atakanozbancomdb;
GO
-- =========================================================
-- Admin users (used for the /login and /admin panel)
-- =========================================================
CREATE TABLE dbo.admins (
id INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
username NVARCHAR(100) NOT NULL,
password NVARCHAR(255) NOT NULL
);
GO
-- =========================================================
-- My Projects
-- =========================================================
CREATE TABLE dbo.myprojects (
id INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
image NVARCHAR(MAX) NULL, -- legacy, kept for backward compatibility
iframe NVARCHAR(MAX) NULL, -- legacy, kept for backward compatibility
title NVARCHAR(255) NULL,
description NVARCHAR(MAX) NULL
);
GO
CREATE TABLE dbo.myprojectstranslations (
id INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
project_id INT NOT NULL,
culture NVARCHAR(10) NOT NULL,
title NVARCHAR(255) NULL,
description NVARCHAR(MAX) NULL,
CONSTRAINT FK_myprojectstranslations_myprojects
FOREIGN KEY (project_id) REFERENCES dbo.myprojects(id) ON DELETE CASCADE
);
GO
CREATE TABLE dbo.projectmedia (
id INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
projectid INT NOT NULL,
mediatype INT NOT NULL, -- 1 = Image, 2 = Iframe
mediaurl NVARCHAR(1000) NOT NULL,
sortorder INT NOT NULL DEFAULT 0,
CONSTRAINT FK_projectmedia_myprojects
FOREIGN KEY (projectid) REFERENCES dbo.myprojects(id) ON DELETE CASCADE
);
GO
-- =========================================================
-- Affiliate Links
-- =========================================================
CREATE TABLE dbo.affiliatelinks (
id INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
image NVARCHAR(500) NOT NULL,
title NVARCHAR(200) NOT NULL,
description NVARCHAR(500) NULL,
url NVARCHAR(1000) NOT NULL,
sortorder INT NOT NULL DEFAULT 0
);
GO
CREATE TABLE dbo.affiliatelinktranslations (
id INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
affiliatelink_id INT NOT NULL,
culture NVARCHAR(10) NOT NULL,
title NVARCHAR(255) NULL,
description NVARCHAR(MAX) NULL,
CONSTRAINT FK_affiliatelinktranslations_affiliatelinks
FOREIGN KEY (affiliatelink_id) REFERENCES dbo.affiliatelinks(id) ON DELETE CASCADE
);
GO
-- =========================================================
-- Social Icons (footer icon row)
-- =========================================================
CREATE TABLE dbo.socialicons (
id INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
icon NVARCHAR(100) NOT NULL, -- Font Awesome class(es), e.g. "fa-brands fa-github"
url NVARCHAR(500) NOT NULL,
sortorder INT NOT NULL DEFAULT 0
);
GO
-- =========================================================
-- Site Settings (currently just the wallpaper; single row table)
-- =========================================================
CREATE TABLE dbo.sitesettings (
id INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
wallpaper NVARCHAR(500) NULL -- public URL of the current wallpaper; NULL = use bundled default
);
GO
-- =========================================================
-- Seed data: one admin account so you can log in to /admin
-- IMPORTANT: change the username/password below before/after running this,
-- and see the "Security notes" section in README.md - passwords are currently
-- stored and compared in plain text, so pick something you don't reuse elsewhere.
-- =========================================================
INSERT INTO dbo.admins (username, password) VALUES ('admin', 'change-this-password');
GO