-- =======================
-- TITLES
-- =======================
CREATE TABLE IF NOT EXISTS titles (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    name TEXT NOT NULL,                  -- e.g., "Senior Software Engineer"
    code TEXT UNIQUE,                    -- e.g., "senior-software-engineer"
    description TEXT,                    -- optional: extra details
    created_at TIMESTAMP WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP
    );

-- Trigger for updated_at
CREATE TRIGGER trg_titles_updated_at
    BEFORE UPDATE ON titles
    FOR EACH ROW
    EXECUTE FUNCTION set_updated_at();

-- Perwira Tinggi (High-ranking Officers)
INSERT INTO titles (name, code, description) VALUES
     ('Jenderal', 'jenderal', 'Pangkat tertinggi di TNI AD'),
     ('Letnan Jenderal', 'letnan-jenderal', 'Pangkat tinggi di bawah Jenderal'),
     ('Mayor Jenderal', 'mayor-jenderal', 'Pangkat tinggi di bawah Letnan Jenderal'),
     ('Brigadir Jenderal', 'brigadir-jenderal', 'Pangkat tinggi di bawah Mayor Jenderal');

-- Perwira Menengah (Middle-ranking Officers)
INSERT INTO titles (name, code, description) VALUES
     ('Kolonel', 'kolonel', 'Pangkat perwira menengah tertinggi'),
     ('Letnan Kolonel', 'letnan-kolonel', 'Pangkat perwira menengah di bawah Kolonel'),
     ('Mayor', 'mayor', 'Pangkat perwira menengah di bawah Letnan Kolonel');

-- Perwira Pertama (Junior Officers)
INSERT INTO titles (name, code, description) VALUES
     ('Kapten', 'kapten', 'Pangkat perwira pertama tertinggi'),
     ('Letnan Satu', 'letnan-satu', 'Pangkat perwira pertama di bawah Kapten'),
     ('Letnan Dua', 'letnan-dua', 'Pangkat perwira pertama di bawah Letnan Satu');

-- Bintara Tinggi (Senior NCOs)
INSERT INTO titles (name, code, description) VALUES
     ('Pembantu Letnan Satu', 'pembantu-letnan-satu', 'Pangkat bintara tinggi tertinggi'),
     ('Pembantu Letnan Dua', 'pembantu-letnan-dua', 'Pangkat bintara tinggi di bawah Pelda');

-- Bintara (NCOs)
INSERT INTO titles (name, code, description) VALUES
     ('Sersan Mayor', 'sersan-mayor', 'Pangkat bintara di bawah Pelda'),
     ('Sersan Kepala', 'sersan-kepala', 'Pangkat bintara di bawah Serma'),
     ('Sersan Satu', 'sersan-satu', 'Pangkat bintara di bawah Serka'),
     ('Sersan Dua', 'sersan-dua', 'Pangkat bintara di bawah Sertu');

-- Tamtama Tinggi (Senior Enlisted)
INSERT INTO titles (name, code, description) VALUES
     ('Kopral Kepala', 'kopral-kepala', 'Pangkat tamtama tinggi tertinggi'),
     ('Kopral Satu', 'kopral-satu', 'Pangkat tamtama tinggi di bawah Kopka'),
     ('Kopral Dua', 'kopral-dua', 'Pangkat tamtama tinggi di bawah Koptu');

-- Tamtama (Enlisted)
INSERT INTO titles (name, code, description) VALUES
    ('Prajurit Kepala', 'prajurit-kepala', 'Pangkat tamtama di bawah Kopda'),
    ('Prajurit Satu', 'prajurit-satu', 'Pangkat tamtama di bawah Prada'),
    ('Prajurit Dua', 'prajurit-dua', 'Pangkat tamtama terendah');
