CREATE TYPE "public"."scenario_variable_name" AS ENUM('siteCount', 'deliveriesPerWeek', 'instructionalWeeks');--> statement-breakpoint
CREATE TYPE "public"."exception_consequence" AS ENUM('price_delta', 'withdrawal', 'unquantified');--> statement-breakpoint
CREATE TYPE "public"."unpriced_reason" AS ENUM('shape_unsupported', 'input_missing', 'line_incomplete', 'withdrawal_conditioned');--> statement-breakpoint
CREATE TABLE "scenario_variable" (
	"scenario_id" uuid NOT NULL,
	"name" "scenario_variable_name" NOT NULL,
	"value" numeric(14, 3) NOT NULL,
	CONSTRAINT "scenario_variable_scenario_id_name_pk" PRIMARY KEY("scenario_id","name")
);
--> statement-breakpoint
ALTER TABLE "scenario_variable" ENABLE ROW LEVEL SECURITY;--> statement-breakpoint
ALTER TABLE "derived_cost" ALTER COLUMN "amount" DROP NOT NULL;--> statement-breakpoint
ALTER TABLE "evaluation_scenario" ADD COLUMN "monthly_weights" integer[];--> statement-breakpoint
ALTER TABLE "price_line" ADD COLUMN "required" boolean DEFAULT true NOT NULL;--> statement-breakpoint
ALTER TABLE "derived_cost" ADD COLUMN "reason" "unpriced_reason";--> statement-breakpoint
ALTER TABLE "derived_cost" ADD COLUMN "amount_if_declined" numeric(16, 2);--> statement-breakpoint
ALTER TABLE "derived_cost" ADD COLUMN "reason_if_declined" "unpriced_reason";--> statement-breakpoint
ALTER TABLE "derived_cost" ADD COLUMN "breakdown" jsonb NOT NULL;--> statement-breakpoint
ALTER TABLE "derived_cost" ADD COLUMN "evaluator_version" integer NOT NULL;--> statement-breakpoint
ALTER TABLE "derived_cost" ADD COLUMN "inputs_hash" text NOT NULL;--> statement-breakpoint
ALTER TABLE "derived_cost" ADD COLUMN "voided_by_amendment_id" uuid;--> statement-breakpoint
ALTER TABLE "exception" ADD COLUMN "target_section" text;--> statement-breakpoint
ALTER TABLE "exception" ADD COLUMN "labelled" boolean NOT NULL;--> statement-breakpoint
ALTER TABLE "exception" ADD COLUMN "consequence" "exception_consequence" NOT NULL;--> statement-breakpoint
ALTER TABLE "exception" ADD COLUMN "amount_if_declined" numeric(14, 2);--> statement-breakpoint
ALTER TABLE "price_quote" ADD COLUMN "attachment_document_id" uuid;--> statement-breakpoint
ALTER TABLE "scenario_variable" ADD CONSTRAINT "scenario_variable_scenario_id_evaluation_scenario_id_fk" FOREIGN KEY ("scenario_id") REFERENCES "public"."evaluation_scenario"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
ALTER TABLE "price_quote" ADD CONSTRAINT "price_quote_attachment_document_id_response_document_id_fk" FOREIGN KEY ("attachment_document_id") REFERENCES "public"."response_document"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
CREATE POLICY "scenario_variable_read" ON "scenario_variable" AS PERMISSIVE FOR SELECT TO public USING (class_released(release_level_for_solicitation(
      (SELECT solicitation_id FROM evaluation_scenario WHERE id = scenario_id)
    ), 'scenario_quantity'));