<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    /**
     * Run the migrations.
     */
    public function up(): void
    {
        $sql = <<<'SQL'
            CREATE TABLE shifts (
                id              BIGINT GENERATED always AS IDENTITY PRIMARY KEY,

                block_id        BIGINT NOT NULL,
                plant_id        BIGINT NOT NULL,
                name            TEXT NOT NULL,

                start_time      TIME NOT NULL,
                duration        NUMERIC(4, 2) NOT NULL,
                end_time        TIME NOT NULL, --GENERATED ALWAYS AS (start_time + (duration * INTERVAL '1 hour')) STORED,

                created_at      TIMESTAMP NOT NULL DEFAULT NOW(),
                updated_at      TIMESTAMP NOT NULL DEFAULT NOW(),
                deleted_at      TIMESTAMP,

                UNIQUE (name, block_id, plant_id),
                FOREIGN KEY (block_id) REFERENCES blocks (id),
                FOREIGN KEY (plant_id) REFERENCES plants (id)
            );
        SQL;

        DB::statement($sql);
    }

    /**
     * Reverse the migrations.
     */
    public function down(): void
    {
        Schema::dropIfExists('shifts');
    }
};
