create type sensor_type as enum (
    'temperature',
    'humidity',
    'carbon_dioxide',
    'pressure',
    'proximity',
    'light'
    );

create table sensors
(
    sensor_id         varchar(255) primary key,

    sensor_type       sensor_type not null,
    sampling_interval int         not null default 3600,

    threshold_above   float       not null default 100,
    threshold_below   float       not null default 0,

    created_at        timestamp   not null default now(),
    updated_at        timestamp   not null default now()
);

create index idx_sensors_sensor_id on sensors (sensor_id);

create table registry
(
    sensor_id  varchar(255)       not null references sensors (sensor_id),

    value      float     not null,
    created_at timestamp not null default now()
)
    with (
        timescaledb.hypertable,
        timescaledb.partition_column = 'created_at',
        timescaledb.segmentby = 'sensor_id'
        );

insert into sensors (sensor_id, sensor_type, sampling_interval, threshold_above, threshold_below)
values
    ('temp-001', 'temperature', 10, 100, 0),
    ('hum-001', 'humidity', 15, 80, 20),
    ('co2-001', 'carbon_dioxide', 20, 1000, 400),
    ('pres-001', 'pressure', 30, 1050, 950),
    ('prox-001', 'proximity', 5, 200, 0),
    ('light-001', 'light', 10, 10000, 0);