Add service pricing and ecosystem license tracking to Ethos artists
cgen-e42e33def43e40dab4363bf7c157e173
This commit is contained in:
parent
7e041f87a4
commit
b8d093842e
1 changed files with 68 additions and 0 deletions
68
supabase/migrations/20250211_add_ethos_artist_services.sql
Normal file
68
supabase/migrations/20250211_add_ethos_artist_services.sql
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
-- Add service pricing and licensing fields to ethos_artist_profiles
|
||||
|
||||
-- Add new columns for service pricing
|
||||
ALTER TABLE public.ethos_artist_profiles
|
||||
ADD COLUMN IF NOT EXISTS price_list jsonb DEFAULT '{
|
||||
"track_custom": null,
|
||||
"sfx_pack": null,
|
||||
"full_score": null,
|
||||
"day_rate": null,
|
||||
"contact_for_quote": false
|
||||
}'::jsonb;
|
||||
|
||||
-- Add ecosystem license acceptance tracking
|
||||
ALTER TABLE public.ethos_artist_profiles
|
||||
ADD COLUMN IF NOT EXISTS ecosystem_license_accepted boolean NOT NULL DEFAULT false;
|
||||
|
||||
ALTER TABLE public.ethos_artist_profiles
|
||||
ADD COLUMN IF NOT EXISTS ecosystem_license_accepted_at timestamptz;
|
||||
|
||||
-- Create index for faster queries on for_hire status
|
||||
CREATE INDEX IF NOT EXISTS idx_ethos_artist_for_hire ON public.ethos_artist_profiles(for_hire)
|
||||
WHERE for_hire = true;
|
||||
|
||||
-- Create index for ecosystem license acceptance tracking
|
||||
CREATE INDEX IF NOT EXISTS idx_ethos_artist_license_accepted ON public.ethos_artist_profiles(ecosystem_license_accepted)
|
||||
WHERE ecosystem_license_accepted = true;
|
||||
|
||||
-- Add table to track ecosystem license agreements per artist per track
|
||||
CREATE TABLE IF NOT EXISTS public.ethos_ecosystem_licenses (
|
||||
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
track_id uuid NOT NULL REFERENCES public.ethos_tracks(id) ON DELETE CASCADE,
|
||||
artist_id uuid NOT NULL REFERENCES public.user_profiles(id) ON DELETE CASCADE,
|
||||
accepted_at timestamptz NOT NULL DEFAULT now(),
|
||||
agreement_version text NOT NULL DEFAULT '1.0', -- Track KND-008 version
|
||||
agreement_text_hash text, -- Hash of agreement text for audit
|
||||
created_at timestamptz NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_ethos_ecosystem_licenses_artist_id ON public.ethos_ecosystem_licenses(artist_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_ethos_ecosystem_licenses_track_id ON public.ethos_ecosystem_licenses(track_id);
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS idx_ethos_ecosystem_licenses_unique ON public.ethos_ecosystem_licenses(track_id, artist_id);
|
||||
|
||||
-- Enable RLS on ecosystem licenses table
|
||||
ALTER TABLE public.ethos_ecosystem_licenses ENABLE ROW LEVEL SECURITY;
|
||||
|
||||
-- RLS Policies: ethos_ecosystem_licenses
|
||||
CREATE POLICY "Artists can view their own ecosystem licenses" ON public.ethos_ecosystem_licenses
|
||||
FOR SELECT USING (auth.uid() = artist_id);
|
||||
|
||||
CREATE POLICY "Admins can view all ecosystem licenses" ON public.ethos_ecosystem_licenses
|
||||
FOR SELECT USING (
|
||||
EXISTS(
|
||||
SELECT 1 FROM public.user_profiles
|
||||
WHERE id = auth.uid() AND is_admin = true
|
||||
)
|
||||
);
|
||||
|
||||
CREATE POLICY "Artists can create ecosystem license records" ON public.ethos_ecosystem_licenses
|
||||
FOR INSERT WITH CHECK (auth.uid() = artist_id);
|
||||
|
||||
-- Add comments for documentation
|
||||
COMMENT ON COLUMN public.ethos_artist_profiles.price_list IS 'JSON object with pricing: {track_custom: 500, sfx_pack: 150, full_score: 2000, day_rate: 1500, contact_for_quote: false}';
|
||||
|
||||
COMMENT ON COLUMN public.ethos_artist_profiles.ecosystem_license_accepted IS 'Whether artist has accepted the KND-008 Ecosystem License agreement';
|
||||
|
||||
COMMENT ON COLUMN public.ethos_artist_profiles.ecosystem_license_accepted_at IS 'Timestamp when artist accepted the Ecosystem License';
|
||||
|
||||
COMMENT ON TABLE public.ethos_ecosystem_licenses IS 'Tracks individual ecosystem license acceptances per track for audit and compliance';
|
||||
Loading…
Reference in a new issue