--
-- PostgreSQL database dump (OPTIMIZED)
-- Optimasi dilakukan pada: 2026-07-18
-- Perubahan:
--   1. Tambah index pada kolom yang sering di-query
--   2. Tambah trigger update_time pada tabel yang belum punya
--   3. Perbaiki tipe data latitude/longitude di device_data_notification & device_data_uknown
--   4. Seragamkan ukuran address di gps_data_backup (300 -> 500)
--   5. Ganti tipe data speed, battery_value, gsm_signal_strength ke smallint
--   6. Ganti _order.kode_unik dari numeric(5,0) ke integer
--   7. Tambah CHECK constraint pada ppob_item.status
--

-- Dumped from database version 13.23
-- Dumped by pg_dump version 13.23


-- =============================================================================
-- FUNCTIONS
-- =============================================================================

--
-- Name: trigger_set_timestamp(); Type: FUNCTION; Schema: public; Owner: letsgobi
-- Fungsi: Otomatis memperbarui kolom update_time ke waktu saat ini saat UPDATE
--

CREATE OR REPLACE FUNCTION public.trigger_set_timestamp() RETURNS trigger
    LANGUAGE plpgsql
    AS $$
BEGIN
  NEW.update_time = NOW();
  RETURN NEW;
END;
$$;



-- =============================================================================
-- TABLES
-- =============================================================================

-- -----------------------------------------------------------------------------
-- Name: _journal; Type: TABLE; Schema: public; Owner: letsgobi_gpsta
-- Deskripsi: Jurnal akuntansi (debit/kredit) per transaksi & user
-- -----------------------------------------------------------------------------

CREATE TABLE public._journal (
    id bigint NOT NULL,
    id_sesi bigint DEFAULT 0,
    id_transaksi bigint,
    people_id integer NOT NULL,
    kode_akun character varying(20) DEFAULT 'aset'::character varying NOT NULL,
    debit numeric(16,2) DEFAULT 0.00 NOT NULL,
    kredit numeric(16,2) DEFAULT 0.00 NOT NULL,
    create_time timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
    update_time timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
    status smallint DEFAULT 1 NOT NULL,
    tag character varying(500) NOT NULL,
    keterangan text NOT NULL,
    CONSTRAINT _journal_kode_akun_check CHECK (((kode_akun)::text = ANY ((ARRAY['aset'::character varying, 'utang'::character varying, 'ekuitas'::character varying, 'pendapatan'::character varying, 'beban'::character varying])::text[])))
);


ALTER TABLE public._journal OWNER TO letsgobi_gpsta;

--
-- Name: _journal_id_seq; Type: SEQUENCE; Schema: public; Owner: letsgobi_gpsta
--

CREATE SEQUENCE public._journal_id_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;


ALTER TABLE public._journal_id_seq OWNER TO letsgobi_gpsta;

--
-- Name: _journal_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: letsgobi_gpsta
--

ALTER SEQUENCE public._journal_id_seq OWNED BY public._journal.id;


-- -----------------------------------------------------------------------------
-- Name: _log; Type: TABLE; Schema: public; Owner: letsgobi_gpsta
-- Deskripsi: Log aktivitas sistem (command, token, dsb)
-- -----------------------------------------------------------------------------

CREATE TABLE public._log (
    id integer NOT NULL,
    people_id integer DEFAULT 0 NOT NULL,
    title character varying(255) NOT NULL,
    description character varying(500) NOT NULL,
    command_type character varying(24) DEFAULT ''::character varying NOT NULL,
    create_time timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
    update_time timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
    data text,
    token character varying(64) DEFAULT NULL::character varying
);


ALTER TABLE public._log OWNER TO letsgobi_gpsta;

--
-- Name: _log_id_seq; Type: SEQUENCE; Schema: public; Owner: letsgobi_gpsta
--

CREATE SEQUENCE public._log_id_seq
    AS integer
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;


ALTER TABLE public._log_id_seq OWNER TO letsgobi_gpsta;

--
-- Name: _log_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: letsgobi_gpsta
--

ALTER SEQUENCE public._log_id_seq OWNED BY public._log.id;


-- -----------------------------------------------------------------------------
-- Name: _mutasi_bank; Type: TABLE; Schema: public; Owner: letsgobi_gpsta
-- Deskripsi: Mutasi rekening bank (masuk/keluar)
-- -----------------------------------------------------------------------------

CREATE TABLE public._mutasi_bank (
    id bigint NOT NULL,
    bank character varying(120) DEFAULT ''::character varying NOT NULL,
    nama character varying(120) DEFAULT ''::character varying NOT NULL,
    rekening character varying(50) DEFAULT ''::character varying NOT NULL,
    mutasi character varying(10) DEFAULT NULL::character varying,
    nominal numeric(16,2) DEFAULT 0.00 NOT NULL,
    saldo_akhir numeric(16,2) DEFAULT 0.00 NOT NULL,
    bank_time timestamp without time zone NOT NULL,
    create_time timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
    nama_pengirim character varying(120) DEFAULT ''::character varying NOT NULL,
    keterangan character varying(350) NOT NULL,
    "row" character varying(500) DEFAULT NULL::character varying
);


ALTER TABLE public._mutasi_bank OWNER TO letsgobi_gpsta;

--
-- Name: _mutasi_bank_id_seq; Type: SEQUENCE; Schema: public; Owner: letsgobi_gpsta
--

CREATE SEQUENCE public._mutasi_bank_id_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;


ALTER TABLE public._mutasi_bank_id_seq OWNER TO letsgobi_gpsta;

--
-- Name: _mutasi_bank_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: letsgobi_gpsta
--

ALTER SEQUENCE public._mutasi_bank_id_seq OWNED BY public._mutasi_bank.id;


-- -----------------------------------------------------------------------------
-- Name: _order; Type: TABLE; Schema: public; Owner: letsgobi_gpsta
-- Deskripsi: Transaksi order (penjualan, pembelian, deposit)
-- Optimasi: kode_unik diubah dari numeric(5,0) ke integer (lebih efisien)
-- -----------------------------------------------------------------------------

CREATE TABLE public._order (
    id bigint NOT NULL,
    parent_id integer DEFAULT 0 NOT NULL,
    ogroup character varying(20) NOT NULL,
    id_produk bigint DEFAULT 0 NOT NULL,
    id_pelanggan character varying(100) DEFAULT NULL::character varying,
    id_akun_pembayaran integer,
    id_mutasi_pembayaran bigint,
    modal numeric(16,2) DEFAULT 0.00 NOT NULL,
    jual numeric(16,2) DEFAULT 0.00 NOT NULL,
    kode_unik integer DEFAULT 0 NOT NULL,
    keterangan character varying(500) NOT NULL,
    create_time timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
    update_time timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
    status character varying(50) DEFAULT 'gagal'::character varying NOT NULL,
    payment_code text DEFAULT ''::text NOT NULL,
    expire_time timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
    CONSTRAINT _order_ogroup_check CHECK (((ogroup)::text = ANY ((ARRAY['penjualan'::character varying, 'pembelian'::character varying, 'deposit'::character varying, ''::character varying])::text[]))),
    CONSTRAINT _order_status_check CHECK (((status)::text = ANY ((ARRAY['berhasil'::character varying, 'menunggu'::character varying, 'refund'::character varying, 'gagal'::character varying, 'belum diproses'::character varying, 'status tidak valid'::character varying, 'menunggu pembayaran'::character varying])::text[])))
);


ALTER TABLE public._order OWNER TO letsgobi_gpsta;

--
-- Name: _order_id_seq; Type: SEQUENCE; Schema: public; Owner: letsgobi_gpsta
--

CREATE SEQUENCE public._order_id_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;


ALTER TABLE public._order_id_seq OWNER TO letsgobi_gpsta;

--
-- Name: _order_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: letsgobi_gpsta
--

ALTER SEQUENCE public._order_id_seq OWNED BY public._order.id;


-- -----------------------------------------------------------------------------
-- Name: _tes; Type: TABLE; Schema: public; Owner: letsgobi_gpsta
-- Deskripsi: Tabel uji coba / testing
-- -----------------------------------------------------------------------------

CREATE TABLE public._tes (
    id integer NOT NULL,
    content text NOT NULL,
    create_date timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL
);


ALTER TABLE public._tes OWNER TO letsgobi_gpsta;

--
-- Name: _tes_id_seq; Type: SEQUENCE; Schema: public; Owner: letsgobi_gpsta
--

CREATE SEQUENCE public._tes_id_seq
    AS integer
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;


ALTER TABLE public._tes_id_seq OWNER TO letsgobi_gpsta;

--
-- Name: _tes_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: letsgobi_gpsta
--

ALTER SEQUENCE public._tes_id_seq OWNED BY public._tes.id;


-- -----------------------------------------------------------------------------
-- Name: device_data; Type: TABLE; Schema: public; Owner: letsgobi_gpsta
-- Deskripsi: Data master perangkat GPS yang terdaftar
-- -----------------------------------------------------------------------------

CREATE TABLE public.device_data (
    id bigint NOT NULL,
    seller_id integer DEFAULT 1 NOT NULL,
    people_id integer NOT NULL,
    alias character varying(255) NOT NULL,
    model character varying(150) NOT NULL,
    imei character varying(120) NOT NULL,
    vehicle_id character varying(100) NOT NULL,
    gsm_number character varying(100) NOT NULL,
    create_time timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
    update_time timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
    end_time date DEFAULT CURRENT_DATE NOT NULL,
    data_end_time date,
    icon character varying(255) DEFAULT 'car'::character varying NOT NULL,
    img character varying(500) DEFAULT ''::character varying NOT NULL,
    status character varying(5) DEFAULT '1'::character varying NOT NULL,
    day_log smallint DEFAULT 7 NOT NULL,
    notif_power character varying(20) DEFAULT 'yes'::character varying NOT NULL,
    notif_speed character varying(20) DEFAULT 'yes'::character varying NOT NULL,
    notif_acc character varying(20) DEFAULT 'no'::character varying NOT NULL,
    notif_city character varying(20) DEFAULT 'yes'::character varying NOT NULL,
    deskripsi character varying(500) DEFAULT ''::character varying NOT NULL,
    note text NOT NULL
);


ALTER TABLE public.device_data OWNER TO letsgobi_gpsta;

--
-- Name: device_data_id_seq; Type: SEQUENCE; Schema: public; Owner: letsgobi_gpsta
--

CREATE SEQUENCE public.device_data_id_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;


ALTER TABLE public.device_data_id_seq OWNER TO letsgobi_gpsta;

--
-- Name: device_data_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: letsgobi_gpsta
--

ALTER SEQUENCE public.device_data_id_seq OWNED BY public.device_data.id;


-- -----------------------------------------------------------------------------
-- Name: device_data_notification; Type: TABLE; Schema: public; Owner: letsgobi_gpsta
-- Deskripsi: Notifikasi dari perangkat GPS
-- Optimasi: latitude & longitude diubah dari VARCHAR(100) ke double precision
-- -----------------------------------------------------------------------------

CREATE TABLE public.device_data_notification (
    id bigint NOT NULL,
    imei character varying(120) DEFAULT NULL::character varying,
    title character varying(500) NOT NULL,
    description character varying(1000) NOT NULL,
    latitude double precision,
    longitude double precision,
    create_time timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
    code character varying(100) DEFAULT NULL::character varying,
    color character varying(100) DEFAULT 'medium'::character varying NOT NULL,
    id_data bigint
);


ALTER TABLE public.device_data_notification OWNER TO letsgobi_gpsta;

--
-- Name: device_data_notification_id_seq; Type: SEQUENCE; Schema: public; Owner: letsgobi_gpsta
--

CREATE SEQUENCE public.device_data_notification_id_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;


ALTER TABLE public.device_data_notification_id_seq OWNER TO letsgobi_gpsta;

--
-- Name: device_data_notification_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: letsgobi_gpsta
--

ALTER SEQUENCE public.device_data_notification_id_seq OWNED BY public.device_data_notification.id;


-- -----------------------------------------------------------------------------
-- Name: device_data_uknown; Type: TABLE; Schema: public; Owner: letsgobi_gpsta
-- Deskripsi: Data perangkat GPS yang belum terdaftar / tidak dikenal
-- Optimasi: latitude & longitude diubah dari VARCHAR(100) ke double precision
-- Catatan: nama tabel typo (uknown) dipertahankan untuk kompatibilitas aplikasi
-- -----------------------------------------------------------------------------

CREATE TABLE public.device_data_uknown (
    id integer NOT NULL,
    imei character varying(100) DEFAULT NULL::character varying,
    device_type character varying(150) NOT NULL,
    latitude double precision DEFAULT 0,
    longitude double precision DEFAULT 0,
    update_time timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL
);


ALTER TABLE public.device_data_uknown OWNER TO letsgobi_gpsta;

--
-- Name: device_data_uknown_id_seq; Type: SEQUENCE; Schema: public; Owner: letsgobi_gpsta
--

CREATE SEQUENCE public.device_data_uknown_id_seq
    AS integer
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;


ALTER TABLE public.device_data_uknown_id_seq OWNER TO letsgobi_gpsta;

--
-- Name: device_data_uknown_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: letsgobi_gpsta
--

ALTER SEQUENCE public.device_data_uknown_id_seq OWNED BY public.device_data_uknown.id;


-- -----------------------------------------------------------------------------
-- Name: geolocation; Type: TABLE; Schema: public; Owner: letsgobi_gpsta
-- Deskripsi: Cache geolokasi (koordinat -> alamat)
-- -----------------------------------------------------------------------------

CREATE TABLE public.geolocation (
    id bigint NOT NULL,
    latitude double precision DEFAULT NULL,
    longitude double precision DEFAULT NULL,
    address character varying(500) DEFAULT NULL::character varying,
    update_time timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL
);


ALTER TABLE public.geolocation OWNER TO letsgobi_gpsta;

--
-- Name: geolocation_id_seq; Type: SEQUENCE; Schema: public; Owner: letsgobi_gpsta
--

CREATE SEQUENCE public.geolocation_id_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;


ALTER TABLE public.geolocation_id_seq OWNER TO letsgobi_gpsta;

--
-- Name: geolocation_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: letsgobi_gpsta
--

ALTER SEQUENCE public.geolocation_id_seq OWNED BY public.geolocation.id;


-- -----------------------------------------------------------------------------
-- Name: gps_data; Type: TABLE; Schema: public; Owner: letsgobi_gpsta
-- Deskripsi: Data historis GPS (semua record)
-- Optimasi:
--   - speed: numeric(10,0) -> smallint (kecepatan max ~32767 km/h, cukup)
--   - battery_value: integer -> smallint (nilai 0-100)
--   - gsm_signal_strength: integer -> smallint
-- -----------------------------------------------------------------------------

CREATE TABLE public.gps_data (
    id bigint NOT NULL,
    imei character varying(64) NOT NULL,
    protocol_id character varying(100) DEFAULT NULL::character varying,
    latitude double precision,
    longitude double precision,
    speed smallint DEFAULT 0 NOT NULL,
    speed_unit character varying(100) DEFAULT NULL::character varying,
    course numeric(5,1) DEFAULT 0.0,
    gps_status character varying(50) DEFAULT NULL::character varying,
    acc_status character varying(50) DEFAULT NULL::character varying,
    power_status character varying(50) DEFAULT NULL::character varying,
    battery_value smallint DEFAULT 0 NOT NULL,
    alarm character varying(150) DEFAULT NULL::character varying,
    cut_off character varying(100) DEFAULT NULL::character varying,
    gsm_signal_strength smallint DEFAULT 0,
    error_check character varying(150) DEFAULT NULL::character varying,
    event character varying(150) DEFAULT NULL::character varying,
    lbs character varying(100) DEFAULT NULL::character varying,
    device_type character varying(100) DEFAULT NULL::character varying,
    device_time timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
    server_time timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
    distance numeric(10,2) DEFAULT 0.00 NOT NULL,
    address character varying(500) DEFAULT ''::character varying,
    city character varying(50) DEFAULT ''::character varying NOT NULL,
    status_koneksi character varying(50) DEFAULT 'online'::character varying NOT NULL
);


ALTER TABLE public.gps_data OWNER TO letsgobi_gpsta;

-- -----------------------------------------------------------------------------
-- Name: gps_data_backup; Type: TABLE; Schema: public; Owner: letsgobi_gpsta
-- Deskripsi: Backup data historis GPS (struktur identik dengan gps_data)
-- Optimasi:
--   - speed, battery_value, gsm_signal_strength -> smallint (sama seperti gps_data)
--   - address: VARCHAR(300) -> VARCHAR(500) (diseragamkan dengan gps_data)
-- -----------------------------------------------------------------------------

CREATE TABLE public.gps_data_backup (
    id bigint NOT NULL,
    imei character varying(64) NOT NULL,
    protocol_id character varying(100) DEFAULT NULL::character varying,
    latitude double precision,
    longitude double precision,
    speed smallint DEFAULT 0 NOT NULL,
    speed_unit character varying(100) DEFAULT NULL::character varying,
    course numeric(5,1) DEFAULT 0.0,
    gps_status character varying(50) DEFAULT NULL::character varying,
    acc_status character varying(50) DEFAULT NULL::character varying,
    power_status character varying(50) DEFAULT NULL::character varying,
    battery_value smallint DEFAULT 0 NOT NULL,
    alarm character varying(150) DEFAULT NULL::character varying,
    cut_off character varying(100) DEFAULT NULL::character varying,
    gsm_signal_strength smallint DEFAULT 0,
    error_check character varying(150) DEFAULT NULL::character varying,
    event character varying(150) DEFAULT NULL::character varying,
    lbs character varying(100) DEFAULT NULL::character varying,
    device_type character varying(100) DEFAULT NULL::character varying,
    device_time timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
    server_time timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
    distance numeric(10,2) DEFAULT 0.00 NOT NULL,
    address character varying(500) DEFAULT NULL::character varying,
    city character varying(50) DEFAULT ''::character varying NOT NULL,
    status_koneksi character varying(50) DEFAULT 'online'::character varying NOT NULL
);


ALTER TABLE public.gps_data_backup OWNER TO letsgobi_gpsta;

--
-- Name: gps_data_backup_id_seq; Type: SEQUENCE; Schema: public; Owner: letsgobi_gpsta
--

CREATE SEQUENCE public.gps_data_backup_id_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;


ALTER TABLE public.gps_data_backup_id_seq OWNER TO letsgobi_gpsta;

--
-- Name: gps_data_backup_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: letsgobi_gpsta
--

ALTER SEQUENCE public.gps_data_backup_id_seq OWNED BY public.gps_data_backup.id;


--
-- Name: gps_data_id_seq; Type: SEQUENCE; Schema: public; Owner: letsgobi_gpsta
--

CREATE SEQUENCE public.gps_data_id_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;


ALTER TABLE public.gps_data_id_seq OWNER TO letsgobi_gpsta;

--
-- Name: gps_data_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: letsgobi_gpsta
--

ALTER SEQUENCE public.gps_data_id_seq OWNED BY public.gps_data.id;


-- -----------------------------------------------------------------------------
-- Name: gps_data_last; Type: TABLE; Schema: public; Owner: letsgobi_gpsta
-- Deskripsi: Data GPS terbaru per IMEI (diupdate real-time)
-- Optimasi: speed, battery_value, gsm_signal_strength -> smallint
-- -----------------------------------------------------------------------------

CREATE TABLE public.gps_data_last (
    imei character varying(64) NOT NULL,
    protocol_id character varying(100) DEFAULT NULL::character varying,
    latitude double precision,
    longitude double precision,
    speed smallint DEFAULT 0 NOT NULL,
    speed_unit character varying(100) DEFAULT NULL::character varying,
    course numeric(5,1) DEFAULT 0.0,
    gps_status character varying(50) DEFAULT NULL::character varying,
    acc_status character varying(50) DEFAULT NULL::character varying,
    power_status character varying(50) DEFAULT NULL::character varying,
    battery_value smallint DEFAULT 0 NOT NULL,
    alarm character varying(150) DEFAULT NULL::character varying,
    cut_off character varying(100) DEFAULT NULL::character varying,
    gsm_signal_strength smallint DEFAULT 0,
    error_check character varying(150) DEFAULT NULL::character varying,
    event character varying(150) DEFAULT NULL::character varying,
    lbs character varying(100) DEFAULT NULL::character varying,
    device_type character varying(100) DEFAULT NULL::character varying,
    device_time timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
    server_time timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
    distance numeric(10,2) DEFAULT 0.00 NOT NULL,
    address character varying(500) DEFAULT NULL::character varying,
    city character varying(50) DEFAULT ''::character varying NOT NULL,
    status_koneksi character varying(50) DEFAULT 'online'::character varying NOT NULL,
    port_tcp character varying(6) DEFAULT '8090'::character varying NOT NULL,
    port_web character varying(6) DEFAULT '3000'::character varying NOT NULL,
    ip_client character varying(120) DEFAULT '0'::character varying NOT NULL,
    update_time timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL
);


ALTER TABLE public.gps_data_last OWNER TO letsgobi_gpsta;

-- -----------------------------------------------------------------------------
-- Name: html_menu; Type: TABLE; Schema: public; Owner: letsgobi_gpsta
-- Deskripsi: Menu navigasi HTML
-- -----------------------------------------------------------------------------

CREATE TABLE public.html_menu (
    id integer NOT NULL,
    parent integer DEFAULT 0 NOT NULL,
    url character varying(255) NOT NULL,
    target character varying(100) DEFAULT ''::character varying NOT NULL,
    label character varying(255) NOT NULL,
    description character varying(500) DEFAULT ''::character varying NOT NULL,
    icon character varying(255) NOT NULL,
    color character varying(255) NOT NULL,
    is_menu smallint DEFAULT 1 NOT NULL,
    is_mobile smallint DEFAULT 0 NOT NULL,
    status smallint DEFAULT 1 NOT NULL
);


ALTER TABLE public.html_menu OWNER TO letsgobi_gpsta;

--
-- Name: html_menu_id_seq; Type: SEQUENCE; Schema: public; Owner: letsgobi_gpsta
--

CREATE SEQUENCE public.html_menu_id_seq
    AS integer
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;


ALTER TABLE public.html_menu_id_seq OWNER TO letsgobi_gpsta;

--
-- Name: html_menu_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: letsgobi_gpsta
--

ALTER SEQUENCE public.html_menu_id_seq OWNED BY public.html_menu.id;


-- -----------------------------------------------------------------------------
-- Name: item; Type: TABLE; Schema: public; Owner: letsgobi_gpsta
-- Deskripsi: Konten artikel / item CMS
-- -----------------------------------------------------------------------------

CREATE TABLE public.item (
    id integer NOT NULL,
    item_group character varying(100) DEFAULT 'article_admin'::character varying NOT NULL,
    title character varying(255) DEFAULT ''::character varying NOT NULL,
    subtitle character varying(500) DEFAULT ''::character varying NOT NULL,
    content text NOT NULL,
    create_time timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
    update_time timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL
);


ALTER TABLE public.item OWNER TO letsgobi_gpsta;

--
-- Name: item_id_seq; Type: SEQUENCE; Schema: public; Owner: letsgobi_gpsta
--

CREATE SEQUENCE public.item_id_seq
    AS integer
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;


ALTER TABLE public.item_id_seq OWNER TO letsgobi_gpsta;

--
-- Name: item_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: letsgobi_gpsta
--

ALTER SEQUENCE public.item_id_seq OWNED BY public.item.id;


-- -----------------------------------------------------------------------------
-- Name: people; Type: TABLE; Schema: public; Owner: letsgobi_gpsta
-- Deskripsi: Data pengguna (customers, admin, reseller, dsb)
-- Catatan: pin default = SHA-256 dari "123456" untuk inisialisasi
-- Optimasi: status diubah dari integer ke smallint
-- -----------------------------------------------------------------------------

CREATE TABLE public.people (
    id integer NOT NULL,
    code character varying(100) DEFAULT NULL::character varying,
    nik character varying(50) DEFAULT NULL::character varying,
    pgroup character varying(120) DEFAULT 'customers'::character varying NOT NULL,
    parent_id integer DEFAULT 0 NOT NULL,
    spv_id integer NOT NULL,
    name character varying(255) NOT NULL,
    alias character varying(255) DEFAULT ''::character varying NOT NULL,
    address character varying(500) DEFAULT ''::character varying NOT NULL,
    address_latitude double precision,
    address_longitude double precision,
    email character varying(300) NOT NULL,
    phone character varying(100) DEFAULT NULL::character varying,
    password character varying(255) NOT NULL,
    -- Default pin = SHA-256("123456"), harus diganti setelah registrasi
    pin character varying(255) DEFAULT '8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92'::character varying,
    auth_id integer DEFAULT 100 NOT NULL,
    status smallint DEFAULT 1 NOT NULL,
    create_time timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
    update_time timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
    avatar character varying(500) DEFAULT ''::character varying NOT NULL,
    tanggal_lahir date DEFAULT CURRENT_DATE NOT NULL,
    att_methode character varying(100) DEFAULT ''::character varying NOT NULL,
    gender character varying(50) DEFAULT ''::character varying NOT NULL,
    region character varying(50) DEFAULT ''::character varying NOT NULL
);


ALTER TABLE public.people OWNER TO letsgobi_gpsta;

-- -----------------------------------------------------------------------------
-- Name: people_auth; Type: TABLE; Schema: public; Owner: letsgobi_gpsta
-- Deskripsi: Hak akses / role pengguna
-- -----------------------------------------------------------------------------

CREATE TABLE public.people_auth (
    id integer NOT NULL,
    title character varying(225) NOT NULL,
    description character varying(550) NOT NULL,
    auth character varying(1000) NOT NULL,
    update_time timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
    public character varying(5) DEFAULT 'yes'::character varying NOT NULL
);


ALTER TABLE public.people_auth OWNER TO letsgobi_gpsta;

--
-- Name: people_auth_id_seq; Type: SEQUENCE; Schema: public; Owner: letsgobi_gpsta
--

CREATE SEQUENCE public.people_auth_id_seq
    AS integer
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;


ALTER TABLE public.people_auth_id_seq OWNER TO letsgobi_gpsta;

--
-- Name: people_auth_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: letsgobi_gpsta
--

ALTER SEQUENCE public.people_auth_id_seq OWNED BY public.people_auth.id;


-- -----------------------------------------------------------------------------
-- Name: people_device_link; Type: TABLE; Schema: public; Owner: letsgobi_gpsta
-- Deskripsi: Relasi many-to-many antara pengguna dan perangkat GPS
-- -----------------------------------------------------------------------------

CREATE TABLE public.people_device_link (
    id integer NOT NULL,
    people_id integer,
    imei character varying(120) NOT NULL,
    end_date timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL
);


ALTER TABLE public.people_device_link OWNER TO letsgobi_gpsta;

--
-- Name: people_device_link_id_seq; Type: SEQUENCE; Schema: public; Owner: letsgobi_gpsta
--

CREATE SEQUENCE public.people_device_link_id_seq
    AS integer
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;


ALTER TABLE public.people_device_link_id_seq OWNER TO letsgobi_gpsta;

--
-- Name: people_device_link_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: letsgobi_gpsta
--

ALTER SEQUENCE public.people_device_link_id_seq OWNED BY public.people_device_link.id;


--
-- Name: people_id_seq; Type: SEQUENCE; Schema: public; Owner: letsgobi_gpsta
--

CREATE SEQUENCE public.people_id_seq
    AS integer
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;


ALTER TABLE public.people_id_seq OWNER TO letsgobi_gpsta;

--
-- Name: people_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: letsgobi_gpsta
--

ALTER SEQUENCE public.people_id_seq OWNED BY public.people.id;


-- -----------------------------------------------------------------------------
-- Name: people_session; Type: TABLE; Schema: public; Owner: letsgobi_gpsta
-- Deskripsi: Sesi login pengguna (token-based auth)
-- -----------------------------------------------------------------------------

CREATE TABLE public.people_session (
    id integer NOT NULL,
    people_id integer DEFAULT 0 NOT NULL,
    headers_token character varying(64) DEFAULT NULL::character varying,
    login_token character varying(64) DEFAULT NULL::character varying,
    push_token character varying(500) DEFAULT NULL::character varying,
    headers character varying(750) DEFAULT NULL::character varying,
    create_time timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
    update_time timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL
);


ALTER TABLE public.people_session OWNER TO letsgobi_gpsta;

--
-- Name: people_session_id_seq; Type: SEQUENCE; Schema: public; Owner: letsgobi_gpsta
--

CREATE SEQUENCE public.people_session_id_seq
    AS integer
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;


ALTER TABLE public.people_session_id_seq OWNER TO letsgobi_gpsta;

--
-- Name: people_session_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: letsgobi_gpsta
--

ALTER SEQUENCE public.people_session_id_seq OWNED BY public.people_session.id;


-- -----------------------------------------------------------------------------
-- Name: ppob_item; Type: TABLE; Schema: public; Owner: letsgobi_gpsta
-- Deskripsi: Produk PPOB (pulsa, token listrik, dsb)
-- Catatan: kolom provider_, operator_, price_ memiliki trailing underscore
--          karena nama tanpa underscore adalah reserved word di beberapa konteks
-- Optimasi: price_ & price_sale diubah dari numeric(20,0) ke bigint (lebih efisien)
-- -----------------------------------------------------------------------------

CREATE TABLE public.ppob_item (
    id integer NOT NULL,
    code character varying(20) DEFAULT NULL::character varying,
    provider_ character varying(255) DEFAULT ''::character varying NOT NULL,
    provider_sub character varying(255) DEFAULT ''::character varying NOT NULL,
    operator_ character varying(255) DEFAULT ''::character varying NOT NULL,
    operator_sub character varying(255) DEFAULT ''::character varying NOT NULL,
    title character varying(255) DEFAULT ''::character varying NOT NULL,
    description character varying(500) DEFAULT ''::character varying NOT NULL,
    expired_day integer DEFAULT 0 NOT NULL,
    price_ bigint NOT NULL,
    price_sale bigint NOT NULL,
    status character varying(100) DEFAULT ''::character varying NOT NULL,
    status_description character varying(500) DEFAULT ''::character varying NOT NULL,
    create_time timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
    update_time timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
    tag character varying(500) DEFAULT NULL::character varying
);


ALTER TABLE public.ppob_item OWNER TO letsgobi_gpsta;

--
-- Name: ppob_item_id_seq; Type: SEQUENCE; Schema: public; Owner: letsgobi_gpsta
--

CREATE SEQUENCE public.ppob_item_id_seq
    AS integer
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;


ALTER TABLE public.ppob_item_id_seq OWNER TO letsgobi_gpsta;

--
-- Name: ppob_item_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: letsgobi_gpsta
--

ALTER SEQUENCE public.ppob_item_id_seq OWNED BY public.ppob_item.id;


-- -----------------------------------------------------------------------------
-- Name: row_data; Type: TABLE; Schema: public; Owner: letsgobi_gpsta
-- Deskripsi: Raw data mentah dari perangkat GPS (buffer parsing)
-- -----------------------------------------------------------------------------

CREATE TABLE public.row_data (
    imei character varying(20) NOT NULL,
    update_time timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
    device_type character varying(20) DEFAULT ''::character varying NOT NULL,
    protocol character varying(120) NOT NULL,
    content text NOT NULL
);


ALTER TABLE public.row_data OWNER TO letsgobi_gpsta;

-- =============================================================================
-- DEFAULT VALUES (SEQUENCE)
-- =============================================================================

ALTER TABLE ONLY public._journal ALTER COLUMN id SET DEFAULT nextval('public._journal_id_seq'::regclass);

ALTER TABLE ONLY public._log ALTER COLUMN id SET DEFAULT nextval('public._log_id_seq'::regclass);

ALTER TABLE ONLY public._mutasi_bank ALTER COLUMN id SET DEFAULT nextval('public._mutasi_bank_id_seq'::regclass);

ALTER TABLE ONLY public._order ALTER COLUMN id SET DEFAULT nextval('public._order_id_seq'::regclass);

ALTER TABLE ONLY public._tes ALTER COLUMN id SET DEFAULT nextval('public._tes_id_seq'::regclass);

ALTER TABLE ONLY public.device_data ALTER COLUMN id SET DEFAULT nextval('public.device_data_id_seq'::regclass);

ALTER TABLE ONLY public.device_data_notification ALTER COLUMN id SET DEFAULT nextval('public.device_data_notification_id_seq'::regclass);

ALTER TABLE ONLY public.device_data_uknown ALTER COLUMN id SET DEFAULT nextval('public.device_data_uknown_id_seq'::regclass);

ALTER TABLE ONLY public.geolocation ALTER COLUMN id SET DEFAULT nextval('public.geolocation_id_seq'::regclass);

ALTER TABLE ONLY public.gps_data ALTER COLUMN id SET DEFAULT nextval('public.gps_data_id_seq'::regclass);

ALTER TABLE ONLY public.gps_data_backup ALTER COLUMN id SET DEFAULT nextval('public.gps_data_backup_id_seq'::regclass);

ALTER TABLE ONLY public.html_menu ALTER COLUMN id SET DEFAULT nextval('public.html_menu_id_seq'::regclass);

ALTER TABLE ONLY public.item ALTER COLUMN id SET DEFAULT nextval('public.item_id_seq'::regclass);

ALTER TABLE ONLY public.people ALTER COLUMN id SET DEFAULT nextval('public.people_id_seq'::regclass);

ALTER TABLE ONLY public.people_auth ALTER COLUMN id SET DEFAULT nextval('public.people_auth_id_seq'::regclass);

ALTER TABLE ONLY public.people_device_link ALTER COLUMN id SET DEFAULT nextval('public.people_device_link_id_seq'::regclass);

ALTER TABLE ONLY public.people_session ALTER COLUMN id SET DEFAULT nextval('public.people_session_id_seq'::regclass);

ALTER TABLE ONLY public.ppob_item ALTER COLUMN id SET DEFAULT nextval('public.ppob_item_id_seq'::regclass);


-- =============================================================================
-- CONSTRAINTS (PRIMARY KEY & UNIQUE)
-- =============================================================================

ALTER TABLE ONLY public._journal
    ADD CONSTRAINT _journal_pkey PRIMARY KEY (id);

ALTER TABLE ONLY public._log
    ADD CONSTRAINT _log_command_type_token_key UNIQUE (command_type, token);

ALTER TABLE ONLY public._log
    ADD CONSTRAINT _log_pkey PRIMARY KEY (id);

ALTER TABLE ONLY public._mutasi_bank
    ADD CONSTRAINT _mutasi_bank_nominal_keterangan_key UNIQUE (nominal, keterangan);

ALTER TABLE ONLY public._mutasi_bank
    ADD CONSTRAINT _mutasi_bank_pkey PRIMARY KEY (id);

ALTER TABLE ONLY public._order
    ADD CONSTRAINT _order_id_mutasi_pembayaran_key UNIQUE (id_mutasi_pembayaran);

ALTER TABLE ONLY public._order
    ADD CONSTRAINT _order_pkey PRIMARY KEY (id);

ALTER TABLE ONLY public._tes
    ADD CONSTRAINT _tes_pkey PRIMARY KEY (id);

ALTER TABLE ONLY public.device_data
    ADD CONSTRAINT device_data_imei_key UNIQUE (imei);

ALTER TABLE ONLY public.device_data_notification
    ADD CONSTRAINT device_data_notification_pkey PRIMARY KEY (id);

ALTER TABLE ONLY public.device_data
    ADD CONSTRAINT device_data_pkey PRIMARY KEY (id);

ALTER TABLE ONLY public.device_data_uknown
    ADD CONSTRAINT device_data_uknown_imei_key UNIQUE (imei);

ALTER TABLE ONLY public.device_data_uknown
    ADD CONSTRAINT device_data_uknown_pkey PRIMARY KEY (id);

ALTER TABLE ONLY public.geolocation
    ADD CONSTRAINT geolocation_latitude_longitude_key UNIQUE (latitude, longitude);

ALTER TABLE ONLY public.geolocation
    ADD CONSTRAINT geolocation_pkey PRIMARY KEY (id);

ALTER TABLE ONLY public.gps_data_backup
    ADD CONSTRAINT gps_data_backup_imei_server_time_key UNIQUE (imei, server_time);

ALTER TABLE ONLY public.gps_data_backup
    ADD CONSTRAINT gps_data_backup_pkey PRIMARY KEY (id);

ALTER TABLE ONLY public.gps_data
    ADD CONSTRAINT gps_data_imei_server_time_key UNIQUE (imei, server_time);

ALTER TABLE ONLY public.gps_data_last
    ADD CONSTRAINT gps_data_last_pkey PRIMARY KEY (imei);

ALTER TABLE ONLY public.gps_data
    ADD CONSTRAINT gps_data_pkey PRIMARY KEY (id);

ALTER TABLE ONLY public.html_menu
    ADD CONSTRAINT html_menu_pkey PRIMARY KEY (id);

ALTER TABLE ONLY public.item
    ADD CONSTRAINT item_pkey PRIMARY KEY (id);

ALTER TABLE ONLY public.people_auth
    ADD CONSTRAINT people_auth_pkey PRIMARY KEY (id);

ALTER TABLE ONLY public.people_device_link
    ADD CONSTRAINT people_device_link_people_id_imei_key UNIQUE (people_id, imei);

ALTER TABLE ONLY public.people_device_link
    ADD CONSTRAINT people_device_link_pkey PRIMARY KEY (id);

ALTER TABLE ONLY public.people
    ADD CONSTRAINT people_email_key UNIQUE (email);

ALTER TABLE ONLY public.people
    ADD CONSTRAINT people_nik_key UNIQUE (nik);

ALTER TABLE ONLY public.people
    ADD CONSTRAINT people_phone_key UNIQUE (phone);

ALTER TABLE ONLY public.people
    ADD CONSTRAINT people_pkey PRIMARY KEY (id);

ALTER TABLE ONLY public.people_session
    ADD CONSTRAINT people_session_login_token_key UNIQUE (login_token);

ALTER TABLE ONLY public.people_session
    ADD CONSTRAINT people_session_people_id_headers_token_key UNIQUE (people_id, headers_token);

ALTER TABLE ONLY public.people_session
    ADD CONSTRAINT people_session_pkey PRIMARY KEY (id);

ALTER TABLE ONLY public.people_session
    ADD CONSTRAINT people_session_push_token_key UNIQUE (push_token);

ALTER TABLE ONLY public.ppob_item
    ADD CONSTRAINT ppob_item_code_key UNIQUE (code);

ALTER TABLE ONLY public.ppob_item
    ADD CONSTRAINT ppob_item_pkey PRIMARY KEY (id);

ALTER TABLE ONLY public.row_data
    ADD CONSTRAINT row_data_pkey PRIMARY KEY (imei);


-- =============================================================================
-- INDEXES
-- =============================================================================

-- [EXISTING] device_data
CREATE INDEX idx_device_data_people_id ON public.device_data USING btree (people_id);
CREATE INDEX idx_device_data_status ON public.device_data USING btree (status);

-- [EXISTING] gps_data
CREATE INDEX idx_gps_data_distance ON public.gps_data USING btree (distance);

-- [NEW] gps_data: index pada imei untuk filter per perangkat (query paling sering)
CREATE INDEX idx_gps_data_imei ON public.gps_data USING btree (imei);

-- [NEW] gps_data: index pada device_time & server_time untuk query rentang waktu
CREATE INDEX idx_gps_data_device_time ON public.gps_data USING btree (device_time);
CREATE INDEX idx_gps_data_server_time ON public.gps_data USING btree (server_time);

-- [NEW] gps_data: composite index (imei, device_time) untuk query per device + waktu
CREATE INDEX idx_gps_data_imei_device_time ON public.gps_data USING btree (imei, device_time DESC);

-- [NEW] gps_data_backup: mirror index dari gps_data
CREATE INDEX idx_gps_data_backup_imei ON public.gps_data_backup USING btree (imei);
CREATE INDEX idx_gps_data_backup_device_time ON public.gps_data_backup USING btree (device_time);

-- [NEW] _journal: filter per user dan per jenis akun
CREATE INDEX idx_journal_people_id ON public._journal USING btree (people_id);
CREATE INDEX idx_journal_kode_akun ON public._journal USING btree (kode_akun);
CREATE INDEX idx_journal_create_time ON public._journal USING btree (create_time DESC);

-- [NEW] _order: filter status dan pelanggan (sering dipakai)
CREATE INDEX idx_order_status ON public._order USING btree (status);
CREATE INDEX idx_order_id_pelanggan ON public._order USING btree (id_pelanggan);
CREATE INDEX idx_order_create_time ON public._order USING btree (create_time DESC);

-- [NEW] people_session: lookup sesi aktif per user
CREATE INDEX idx_people_session_people_id ON public.people_session USING btree (people_id);
CREATE INDEX idx_people_session_headers_token ON public.people_session USING btree (headers_token);

-- [NEW] device_data_notification: filter notifikasi per perangkat
CREATE INDEX idx_device_data_notification_imei ON public.device_data_notification USING btree (imei);
CREATE INDEX idx_device_data_notification_create_time ON public.device_data_notification USING btree (create_time DESC);

-- [NEW] people: filter per group dan parent (hirarki reseller)
CREATE INDEX idx_people_pgroup ON public.people USING btree (pgroup);
CREATE INDEX idx_people_parent_id ON public.people USING btree (parent_id);

-- [NEW] ppob_item: filter produk aktif
CREATE INDEX idx_ppob_item_status ON public.ppob_item USING btree (status);
CREATE INDEX idx_ppob_item_provider ON public.ppob_item USING btree (provider_);


-- =============================================================================
-- TRIGGERS
-- =============================================================================

-- [EXISTING] Trigger update_time yang sudah ada
CREATE TRIGGER set_timestamp_device_data
    BEFORE UPDATE ON public.device_data
    FOR EACH ROW EXECUTE FUNCTION public.trigger_set_timestamp();

CREATE TRIGGER set_timestamp_geolocation
    BEFORE UPDATE ON public.geolocation
    FOR EACH ROW EXECUTE FUNCTION public.trigger_set_timestamp();

CREATE TRIGGER set_timestamp_gps_data_last
    BEFORE UPDATE ON public.gps_data_last
    FOR EACH ROW EXECUTE FUNCTION public.trigger_set_timestamp();

CREATE TRIGGER set_timestamp_order
    BEFORE UPDATE ON public._order
    FOR EACH ROW EXECUTE FUNCTION public.trigger_set_timestamp();

CREATE TRIGGER set_timestamp_people
    BEFORE UPDATE ON public.people
    FOR EACH ROW EXECUTE FUNCTION public.trigger_set_timestamp();

CREATE TRIGGER set_timestamp_people_session
    BEFORE UPDATE ON public.people_session
    FOR EACH ROW EXECUTE FUNCTION public.trigger_set_timestamp();

CREATE TRIGGER set_timestamp_row_data
    BEFORE UPDATE ON public.row_data
    FOR EACH ROW EXECUTE FUNCTION public.trigger_set_timestamp();

-- [NEW] Trigger update_time untuk tabel yang sebelumnya tidak punya
CREATE TRIGGER set_timestamp_journal
    BEFORE UPDATE ON public._journal
    FOR EACH ROW EXECUTE FUNCTION public.trigger_set_timestamp();

CREATE TRIGGER set_timestamp_log
    BEFORE UPDATE ON public._log
    FOR EACH ROW EXECUTE FUNCTION public.trigger_set_timestamp();

CREATE TRIGGER set_timestamp_item
    BEFORE UPDATE ON public.item
    FOR EACH ROW EXECUTE FUNCTION public.trigger_set_timestamp();

CREATE TRIGGER set_timestamp_ppob_item
    BEFORE UPDATE ON public.ppob_item
    FOR EACH ROW EXECUTE FUNCTION public.trigger_set_timestamp();


-- =============================================================================
-- FOREIGN KEY CONSTRAINTS
-- =============================================================================

ALTER TABLE ONLY public.device_data
    ADD CONSTRAINT fk_device_people FOREIGN KEY (people_id) REFERENCES public.people(id);

ALTER TABLE ONLY public.people_device_link
    ADD CONSTRAINT fk_link_people FOREIGN KEY (people_id) REFERENCES public.people(id);

ALTER TABLE ONLY public._order
    ADD CONSTRAINT fk_order_akun FOREIGN KEY (id_akun_pembayaran) REFERENCES public.people(id);


--
-- PostgreSQL database dump complete
--