DROP TABLE IF EXISTS periods;
DROP TABLE IF EXISTS reports;

CREATE TABLE "periods" (
    "id" Integer NOT NULL PRIMARY KEY AUTOINCREMENT,
    "report_id" Integer NOT NULL,
    "period_number" Integer NOT NULL,
    "start_time" DateTime NOT NULL,
    "end_time" DateTime NOT NULL,
    "is_daytime" Integer NOT NULL,
    "temperature" Integer NOT NULL,
    "temperature_unit" Text NOT NULL DEFAULT 'F',
    "precipitation_probability" Integer,
    "dewpoint_celsius" Numeric,
    "relative_humidity" Integer,
    "wind_speed" Text,
    "wind_direction" Text,
    "icon_url" Text,
    "short_forecast" Text,
    "detailed_forecast" Text,
    "created_at" DateTime,
    "updated_at" DateTime,
    CONSTRAINT "periods_reports_CASCADE_NO ACTION_report_id_id_0" FOREIGN KEY ( "report_id" ) REFERENCES "reports"( "id" )
        ON DELETE Cascade
 );

CREATE INDEX "periods_report_id_start_time_index" ON "periods"( "report_id", "start_time" );

CREATE TABLE "reports" (
    "id" Integer NOT NULL PRIMARY KEY AUTOINCREMENT,
    "type" Text NOT NULL,
    "reported_at" DateTime NOT NULL,
    "generated_at" DateTime NOT NULL,
    "latitude" Numeric NOT NULL,
    "longitude" Numeric NOT NULL,
    "elevation_meters" Numeric,
    "created_at" DateTime,
    "updated_at" DateTime,
CONSTRAINT "check ""type"" in ('hourly', 'weekly')" CHECK ("type" in ('hourly', 'weekly')) );

CREATE INDEX "reports_type_reported_at_index" ON "reports"( "type", "reported_at" );
CREATE UNIQUE INDEX "reports_type_reported_at_unique" ON "reports"( "type", "reported_at" );
