-- Lietotāju tabula
-- Glabā informāciju par lietotājiem (prasmes īpašniekiem)
CREATE TABLE IF NOT EXISTS users (
  -- Unikāls lietotāja ID
  id SERIAL PRIMARY KEY,

  -- Lietotāja vārds (nav obligāts)
  name VARCHAR(120),

  -- Lietotāja e-pasts (unikāls un obligāts)
  email VARCHAR(255) UNIQUE NOT NULL
);

-- Prasmju tabula
-- Glabā informāciju par piedāvātajām prasmēm
CREATE TABLE IF NOT EXISTS skills (
  -- Unikāls prasmes ID
  id SERIAL PRIMARY KEY,

  -- Prasmes nosaukums
  skill_name VARCHAR(120) NOT NULL,

  -- Prasmes kategorija (teksta veidā)
  category VARCHAR(120) NOT NULL,

  -- Prasmes apraksts
  description TEXT NOT NULL,

  -- Prasmes pieredzes līmenis (piem., Iesācējs, Vidējs, Eksperts)
  experience_level VARCHAR(40) NOT NULL,

  -- Prasmes īpašnieka ID (atsauce uz users tabulu)
  owner_id INT NOT NULL REFERENCES users(id) ON DELETE RESTRICT,

  -- Prasmes izveides datums
  created_date DATE NOT NULL DEFAULT CURRENT_DATE
);

-- Ziņu tabula
-- Glabā ziņas, kas nosūtītas prasmes īpašniekam
CREATE TABLE IF NOT EXISTS messages (
  -- Unikāls ziņas ID
  id SERIAL PRIMARY KEY,

  -- Prasmes ID, kurai ziņa pieder
  -- Dzēšot prasmi, visas saistītās ziņas tiek dzēstas automātiski
  skill_id INT NOT NULL REFERENCES skills(id) ON DELETE CASCADE,

  -- Ziņas sūtītāja e-pasts
  sender_email VARCHAR(255) NOT NULL,

  -- Ziņas saturs
  message_text TEXT NOT NULL,

  -- Ziņas nosūtīšanas datums un laiks
  sent_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);

-- Kategoriju tabula
-- Glabā visas pieejamās kategorijas
CREATE TABLE IF NOT EXISTS categories (
  -- Unikāls kategorijas ID
  id SERIAL PRIMARY KEY,

  -- Kategorijas nosaukums (unikāls)
  name VARCHAR(120) UNIQUE NOT NULL,

  -- Kategorijas izveides datums
  created_date DATE NOT NULL DEFAULT CURRENT_DATE
);

-- Žurnāla ierakstu tabula
-- Glabā aktivitāšu un piezīmju ierakstus
CREATE TABLE IF NOT EXISTS logs (
  -- Unikāls ieraksta ID
  id SERIAL PRIMARY KEY,

  -- Ieraksta virsraksts
  title VARCHAR(160) NOT NULL,

  -- Ieraksta detalizēts apraksts
  details TEXT NOT NULL,

  -- Kategorijas ID, kurai ieraksts pieder
  -- Kategoriju nevar dzēst, ja tai ir piesaistīti ieraksti
  category_id INT NOT NULL REFERENCES categories(id) ON DELETE RESTRICT,

  -- Ieraksta izveides datums un laiks
  created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);