-- PostgreSQL datubāzes eksports ar datiem.
-- Faila nosaukums un ieteicamais DB nosaukums: Demidovs_trenesanas_eksamenam_1.
-- Piemērs:
-- CREATE DATABASE Demidovs_trenesanas_eksamenam_1;
-- \c Demidovs_trenesanas_eksamenam_1;

DROP TABLE IF EXISTS work_items CASCADE;
DROP TABLE IF EXISTS work_subsections CASCADE;
DROP TABLE IF EXISTS work_sections CASCADE;
DROP TABLE IF EXISTS measurement_units CASCADE;
DROP TABLE IF EXISTS construction_objects CASCADE;

CREATE TABLE construction_objects (
    object_id integer PRIMARY KEY,
    object_name varchar(300) NOT NULL,
    partner_name varchar(200),
    notes text
);

COMMENT ON TABLE construction_objects IS 'Tabula glabā pamatinformāciju par būvobjektu, kuram tiek veidota darbu tāme. Šajā projektā katrai tāmei ir viens objekts, bet struktūra ļauj glabāt arī vairākus objektus nākotnē.';
COMMENT ON COLUMN construction_objects.object_id IS 'Primārā atslēga būvobjektam. Unikāls objekta identifikators, uz kuru atsaucas tabula work_sections.';
COMMENT ON COLUMN construction_objects.object_name IS 'Objekta pilns nosaukums no Excel varianta. Lauks ir obligāts un satur oficiālo objekta aprakstu.';
COMMENT ON COLUMN construction_objects.partner_name IS 'Partnera nosaukums, ja tāds ir norādīts avota dokumentā. Šajā darbā vērtība var būt NULL, jo partneris variantā nav aizpildīts.';
COMMENT ON COLUMN construction_objects.notes IS 'Papildu komentāri par objektu. Izmantojams paskaidrojumiem, kas neietilpst citos laukos.';

CREATE TABLE measurement_units (
    unit_id integer PRIMARY KEY,
    unit_code varchar(30) NOT NULL UNIQUE,
    unit_name varchar(100) NOT NULL,
    notes text
);

COMMENT ON TABLE measurement_units IS 'Mērvienību klasifikators darbu pozīcijām. Tabula ir izdalīta atsevišķi, lai mērvienību nosaukumi nedublētos katrā ierakstā tabulā work_items.';
COMMENT ON COLUMN measurement_units.unit_id IS 'Primārā atslēga mērvienībai. Unikāls identifikators, uz kuru atsaucas work_items.unit_id.';
COMMENT ON COLUMN measurement_units.unit_code IS 'Saīsinātais mērvienības apzīmējums, piemēram gab., km, šķiedra. Lauks ir unikāls un obligāts.';
COMMENT ON COLUMN measurement_units.unit_name IS 'Pilns mērvienības nosaukums cilvēkam lasāmā formā.';
COMMENT ON COLUMN measurement_units.notes IS 'Komentāri par mērvienības izmantošanu vai nozīmi konkrētajā tāmē.';

CREATE TABLE work_sections (
    section_id integer PRIMARY KEY,
    object_id integer NOT NULL REFERENCES construction_objects(object_id),
    section_code varchar(20) NOT NULL UNIQUE,
    section_name varchar(250) NOT NULL,
    sort_order integer NOT NULL,
    notes text
);

COMMENT ON TABLE work_sections IS 'Galvenās darbu sadaļas konkrētajam objektam. Piemēri: kabeļu kanalizācija, optiskā kabeļa montāžas darbi, telekomunikāciju tīkla projektēšana.';
COMMENT ON COLUMN work_sections.section_id IS 'Primārā atslēga darbu sadaļai. Unikāls sadaļas identifikators.';
COMMENT ON COLUMN work_sections.object_id IS 'Ārējā atslēga uz construction_objects.object_id. Norāda, kuram objektam šī sadaļa pieder.';
COMMENT ON COLUMN work_sections.section_code IS 'Tehnisks sadaļas kods datu kārtošanai un identificēšanai. Lauks ir unikāls visā tabulā.';
COMMENT ON COLUMN work_sections.section_name IS 'Sadaļas nosaukums, kā redzams Excel variantā un gala izdrukā.';
COMMENT ON COLUMN work_sections.sort_order IS 'Sadaļas attēlošanas secība gala rezultātā. Mazāka vērtība nozīmē agrāku parādīšanu rezultātā.';
COMMENT ON COLUMN work_sections.notes IS 'Papildu komentāri par sadaļas saturu vai nozīmi.';

CREATE TABLE work_subsections (
    subsection_id integer PRIMARY KEY,
    section_id integer NOT NULL REFERENCES work_sections(section_id),
    subsection_code varchar(20) NOT NULL UNIQUE,
    subsection_name varchar(250) NOT NULL,
    sort_order integer NOT NULL,
    notes text
);

COMMENT ON TABLE work_subsections IS 'Darbu apakšsadaļas katras galvenās sadaļas ietvaros. Tās grupē vairākas pozīcijas vienā tematiskā blokā.';
COMMENT ON COLUMN work_subsections.subsection_id IS 'Primārā atslēga apakšsadaļai. Unikāls identifikators katrai apakšsadaļai.';
COMMENT ON COLUMN work_subsections.section_id IS 'Ārējā atslēga uz work_sections.section_id. Norāda, kurai galvenajai sadaļai apakšsadaļa pieder.';
COMMENT ON COLUMN work_subsections.subsection_code IS 'Tehnisks apakšsadaļas kods. Lauks ir unikāls visā tabulā.';
COMMENT ON COLUMN work_subsections.subsection_name IS 'Apakšsadaļas nosaukums no Excel varianta, piemēram Uzmavas sagatavošana.';
COMMENT ON COLUMN work_subsections.sort_order IS 'Apakšsadaļas attēlošanas secība savas sadaļas ietvaros.';
COMMENT ON COLUMN work_subsections.notes IS 'Papildu komentāri par apakšsadaļas saturu.';

CREATE TABLE work_items (
    item_id integer PRIMARY KEY,
    subsection_id integer NOT NULL REFERENCES work_subsections(subsection_id),
    position_code varchar(20) NOT NULL,
    position_detail varchar(20),
    work_description text NOT NULL,
    unit_id integer NOT NULL REFERENCES measurement_units(unit_id),
    quantity numeric(12,2) NOT NULL,
    price_ls numeric(12,2),
    sort_order integer NOT NULL,
    notes text
);

COMMENT ON TABLE work_items IS 'Konkrētas darbu pozīcijas ar daudzumiem, mērvienībām un cenu lauku. Šī ir detalizētākā tabula, kas satur faktiskās tāmē uzskaitītās rindas.';
COMMENT ON COLUMN work_items.item_id IS 'Primārā atslēga darbu pozīcijai. Unikāls identifikators katrai rindai tabulā.';
COMMENT ON COLUMN work_items.subsection_id IS 'Ārējā atslēga uz work_subsections.subsection_id. Nosaka, kurā apakšsadaļā konkrētā pozīcija ietilpst.';
COMMENT ON COLUMN work_items.position_code IS 'Pozīcijas numurs no Excel varianta, piemēram 13A, 14P3 vai 17A.';
COMMENT ON COLUMN work_items.position_detail IS 'Papildu pozīcijas apzīmējums, piemēram K-0,3 vai K-1.5. Lauks var būt NULL, ja papildu koda nav.';
COMMENT ON COLUMN work_items.work_description IS 'Pilns darbu veida apraksts no Excel varianta. Lauks ir obligāts.';
COMMENT ON COLUMN work_items.unit_id IS 'Ārējā atslēga uz measurement_units.unit_id. Norāda, kādā mērvienībā tiek uzskaitīts daudzums.';
COMMENT ON COLUMN work_items.quantity IS 'Darbu daudzums skaitliskā formā. Izmantots tipa NUMERIC(12,2), lai saglabātu gan veselus skaitļus, gan decimāldaļas.';
COMMENT ON COLUMN work_items.price_ls IS 'Cena latos par vienību, ja tā ir zināma. Šajā variantā lielākoties ir NULL, jo sākotnējā Excel izdrukā cenas nav aizpildītas.';
COMMENT ON COLUMN work_items.sort_order IS 'Pozīcijas attēlošanas secība apakšsadaļas ietvaros. Izmantota gala rezultāta sakārtošanai.';
COMMENT ON COLUMN work_items.notes IS 'Papildu komentāri par konkrēto pozīciju, ja tādi būtu nepieciešami.';

INSERT INTO construction_objects (object_id, object_name, partner_name, notes) VALUES
    (1, 'Lielās ielas rekonstrukcija posmā no Jāņa Čakstes bulvāra līdz Dambja ielai, Jelgavā', NULL, NULL);

INSERT INTO measurement_units (unit_id, unit_code, unit_name, notes) VALUES
    (1, 'kan/km', 'Kabeļu kanalizācijas kilometrs', 'Vienība kabeļu kanalizācijas izbūves darbiem'),
    (2, 'gab.', 'Gabals', 'Skaitāma vienība'),
    (3, 'km', 'Kilometrs', 'Garuma vienība'),
    (4, 'uzmava', 'Uzmava', 'Optisko kabeļu uzmavas vienība'),
    (5, 'kabelis', 'Kabelis', 'Kabeļa vienība'),
    (6, 'metinājums', 'Metinājums', 'Optisko šķiedru savienojuma vienība'),
    (7, 'šķiedra', 'Šķiedra', 'Optiskās šķiedras vienība'),
    (8, 'doc.pakete', 'Dokumentu pakete', 'Dokumentācijas komplekta vienība');

INSERT INTO work_sections (section_id, object_id, section_code, section_name, sort_order, notes) VALUES
    (1, 1, 'SEC-01', 'KABEĻU KANALIZĀCIJA.', 1, 'Galvenā sadaļa par kabeļu kanalizācijas izbūvi un uzturēšanu'),
    (2, 1, 'SEC-02', 'OPTISKĀ KABEĻA IEGULDĪŠANAS UN MONTĀŽAS DARBI', 2, 'Galvenā sadaļa par optiskā kabeļa montāžas darbiem'),
    (3, 1, 'SEC-03', 'TELEKOMUNIKĀCIJU TĪKLA PROJEKTĒŠANA', 3, 'Galvenā sadaļa par projektēšanu un izpilddokumentāciju');

INSERT INTO work_subsections (subsection_id, section_id, subsection_code, subsection_name, sort_order, notes) VALUES
    (1, 1, 'SUB-01', 'Kabeļu kanalizācijas izbūve vai papildināšana', 1, 'Pozīcijas bez atsevišķa apakšvirsraksta Excel variantā'),
    (2, 1, 'SUB-02', 'Darbu komplekss kabeļu aku uzstādīšanai.', 2, 'Kabeļu aku uzstādīšanas darbu grupa'),
    (3, 1, 'SUB-03', 'Bojājumu novēršana kabeļu kanalizācijā', 3, 'Remontdarbu grupa'),
    (4, 2, 'SUB-04', 'Optisko kabeļu ieguldīšana', 1, 'Optisko kabeļu ieguldīšanas darbu grupa'),
    (5, 2, 'SUB-05', 'Uzmavas sagatavošana', 2, 'Optisko kabeļu uzmavu sagatavošanas grupa'),
    (6, 2, 'SUB-06', 'Optisko šķiedru metināšana', 3, 'Šķiedru metināšanas darbu grupa'),
    (7, 2, 'SUB-07', 'ODF uzstādīšana un montāža', 4, 'Optiskā sadales paneļa darbu grupa'),
    (8, 2, 'SUB-08', 'Mērījumi un dokumentācija', 5, 'Mērījumu un dokumentu sagatavošanas grupa'),
    (9, 3, 'SUB-09', 'Izpilddokumentācijas izgatavošana ar komunikāciju ģeogrāfisku piesaistīšanu', 1, 'Projektēšanas un izpilddokumentācijas grupa');

INSERT INTO work_items (item_id, subsection_id, position_code, position_detail, work_description, unit_id, quantity, price_ls, sort_order, notes) VALUES
    (1, 1, '13A', NULL, 'Kabeļu kanalizācijas celtniecība vai papildināšana, ja cauruļu skaits blokā: 1', 1, 0.42, NULL, 1, NULL),
    (2, 1, '13B', NULL, 'Kabeļu kanalizācijas celtniecība vai papildināšana, ja cauruļu skaits blokā: 2 -6', 1, 1.06, NULL, 2, NULL),
    (3, 2, '13H', 'K-0,3', 'Kabeļu akas PEH uzstādīšana', 2, 16.00, NULL, 1, NULL),
    (4, 2, '13H', 'K-0,2', 'Atzara 100/50 uzstādīšana', 2, 1.00, NULL, 2, NULL),
    (5, 2, '13H', 'K-1.5', 'Kabeļu akas KKC2 uzstādīšana uz esošās kanalizācijas', 2, 9.00, NULL, 3, NULL),
    (6, 2, '13H1', 'K-1.5', 'Kabeļu akas PEH uzstādīšana uz esošās kanalizācijas', 2, 2.00, NULL, 4, NULL),
    (7, 3, '13K', NULL, 'Kabeļu kanalizācijas aku lūku komplektu nomaiņa braucamā daļā un uz ietves', 2, 13.00, NULL, 1, NULL),
    (8, 4, '14A', NULL, 'Optiskā kabeļa ieguldīšana kabeļu kanalizācijā', 3, 3.60, NULL, 1, NULL),
    (9, 5, '14M2', NULL, 'Uzmavas uzstādīšana un 2 optisko kabeļu iestrāde uzmavā (FIST tipa uzmava)', 4, 10.00, NULL, 1, NULL),
    (10, 5, '14M4', NULL, 'Jauna optiskā kabeļa pievienošana esošajai uzmavai (FIST tipa uzmava)', 5, 19.00, NULL, 2, NULL),
    (11, 6, '14N1', NULL, 'Optiskā kabeļa šķiedru metināšana, montāžas kvalitātes kontrole pēc montāžas pabeigšanas (jaunieguļdīts kabelis)', 6, 192.00, NULL, 1, NULL),
    (12, 6, '14N2', NULL, 'Optisko šķiedru pārmērīšana esošā uzmavā vai uzmavu skapī', 6, 96.00, NULL, 2, NULL),
    (13, 7, '14O1', NULL, 'Optiskā sadales paneļa (ODF) uzstādīšana', 2, 4.00, NULL, 1, NULL),
    (14, 7, '14O3', NULL, 'Optiskā kabeļa montāža gala iekārtā (ODF) kabelis bez konektoriem', 7, 96.00, NULL, 2, NULL),
    (15, 8, '14P1', NULL, 'Pieņemšanas testēšana un profilaktiskie mērījumi', 7, 26.00, NULL, 1, NULL),
    (16, 8, '14P2', NULL, 'Optiskā kabeļa līnijas pases sagatavošana', 8, 2.00, NULL, 2, NULL),
    (17, 8, '14P3', NULL, 'Optiskā kabeļa līnijas pases korekcija pēc atzarojuma izbūves', 8, 1.00, NULL, 3, NULL),
    (18, 9, '17A', NULL, 'Telekomunikāciju tīklu izpilddokumentācijas izgatavošana saskaņā ar tehniskajām prasībām (vaļēja tranšeja)', 3, 0.93, NULL, 1, NULL);
