- Added VisionApiClient class to interact with the vision system API. - Defined interfaces for system status, machine status, camera status, recordings, and storage stats. - Implemented methods for health checks, system status retrieval, camera control, and storage management. - Introduced utility functions for formatting bytes, durations, and uptime. test: Create manual verification script for Vision API functionality - Added a test script to verify utility functions and API endpoints. - Included tests for health check, system status, cameras, machines, and storage stats. feat: Create experiment repetitions system migration - Added experiment_repetitions table to manage experiment repetitions with scheduling. - Implemented triggers and functions for validation and timestamp management. - Established row-level security policies for user access control. feat: Introduce phase-specific draft management system migration - Created experiment_phase_drafts and experiment_phase_data tables for managing phase-specific drafts and measurements. - Added pecan_diameter_measurements table for individual diameter measurements. - Implemented row-level security policies for user access control. fix: Adjust draft constraints to allow multiple drafts while preventing multiple submitted drafts - Modified constraints on experiment_phase_drafts to allow multiple drafts in 'draft' or 'withdrawn' status. - Ensured only one 'submitted' draft per user per phase per repetition.
18 lines
889 B
SQL
18 lines
889 B
SQL
-- Fix Draft Constraints Migration
|
|
-- Allows multiple drafts per phase while preventing multiple submitted drafts
|
|
|
|
-- Drop the overly restrictive constraint
|
|
ALTER TABLE public.experiment_phase_drafts
|
|
DROP CONSTRAINT IF EXISTS unique_user_phase_repetition_draft;
|
|
|
|
-- Add a proper constraint that only prevents multiple submitted drafts
|
|
-- Users can have multiple drafts in 'draft' or 'withdrawn' status, but only one 'submitted' per phase
|
|
ALTER TABLE public.experiment_phase_drafts
|
|
ADD CONSTRAINT unique_submitted_draft_per_user_phase
|
|
EXCLUDE (user_id WITH =, repetition_id WITH =, phase_name WITH =)
|
|
WHERE (status = 'submitted');
|
|
|
|
-- Add comment explaining the constraint
|
|
COMMENT ON CONSTRAINT unique_submitted_draft_per_user_phase ON public.experiment_phase_drafts
|
|
IS 'Ensures only one submitted draft per user per phase per repetition, but allows multiple draft/withdrawn entries';
|