CREATE TABLE "learn_resources" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "track" text NOT NULL, "title" text NOT NULL, "summary" text, "url" text NOT NULL, "provider" text NOT NULL, "external_id" text NOT NULL, "visibility" text DEFAULT 'members' NOT NULL, "duration_seconds" integer, "sort_order" integer DEFAULT 100 NOT NULL, "published_at" timestamp with time zone DEFAULT now() NOT NULL, "added_by_user_id" uuid, "archived_at" timestamp with time zone, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL, CONSTRAINT "learn_resources_track_provider_external_key" UNIQUE("track","provider","external_id"), CONSTRAINT "learn_resources_track_check" CHECK ("learn_resources"."track" IN ('supply', 'demand', 'platform')), CONSTRAINT "learn_resources_visibility_check" CHECK ("learn_resources"."visibility" IN ('members', 'code')), CONSTRAINT "learn_resources_provider_check" CHECK ("learn_resources"."provider" IN ('cap', 'loom', 'youtube_nocookie')), CONSTRAINT "learn_resources_code_is_platform_only_check" CHECK ("learn_resources"."visibility" <> 'code' OR "learn_resources"."track" = 'platform'), CONSTRAINT "learn_resources_duration_check" CHECK ("learn_resources"."duration_seconds" IS NULL OR "learn_resources"."duration_seconds" > 0) ); --> statement-breakpoint ALTER TABLE "platform_settings" ADD COLUMN "learn_access_code" text DEFAULT 'carlthefog' NOT NULL;--> statement-breakpoint ALTER TABLE "platform_settings" ADD COLUMN "learn_access_code_updated_at" timestamp with time zone;--> statement-breakpoint ALTER TABLE "learn_resources" ADD CONSTRAINT "learn_resources_added_by_user_id_users_id_fk" FOREIGN KEY ("added_by_user_id") REFERENCES "public"."users"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint CREATE INDEX "learn_resources_track_order_idx" ON "learn_resources" USING btree ("track","sort_order");--> statement-breakpoint CREATE INDEX "learn_resources_visibility_idx" ON "learn_resources" USING btree ("visibility","track");