Files
upstream-atomic-crm/supabase/migrations/20240730075029_init_db.sql
upstream-mirror 93ecc1a6f8
Some checks failed
✅ Check / 🔬 ESLint (push) Failing after 21s
✅ Check / 🏷️ Typecheck (push) Failing after 11s
✅ Check / 🔎 Test (push) Failing after 11s
✅ Check / e2e-test (push) Failing after 11s
✅ Check / 🔨 Build (push) Failing after 11s
🚀 Deploy / 🚀 Deploy (doc) (push) Failing after 12s
🚀 Deploy / 🚀 Deploy (demo) (push) Failing after 12s
🚀 Deploy / 🚀 Deploy (supabase) (push) Failing after 18s
snapshot of https://github.com/marmelab/atomic-crm.git (main, 2026-09-18; blobs > 131072B omitted)
2026-09-18 01:48:50 +05:00

601 lines
18 KiB
SQL

create table "public"."companies" (
"id" bigint generated by default as identity not null,
"created_at" timestamp with time zone not null default now(),
"name" text not null,
"sector" text,
"size" smallint,
"linkedin_url" text,
"website" text,
"phone_number" text,
"address" text,
"zipcode" text,
"city" text,
"stateAbbr" text,
"sales_id" bigint,
"context_links" json,
"country" text,
"description" text,
"revenue" text,
"tax_identifier" text,
"logo" jsonb
);
alter table "public"."companies" enable row level security;
create table "public"."contactNotes" (
"id" bigint generated by default as identity not null,
"contact_id" bigint not null,
"text" text,
"date" timestamp with time zone default now(),
"sales_id" bigint,
"status" text,
"attachments" jsonb[]
);
alter table "public"."contactNotes" enable row level security;
create table "public"."contacts" (
"id" bigint generated by default as identity not null,
"first_name" text,
"last_name" text,
"gender" text,
"title" text,
"email" text,
"phone_1_number" text,
"phone_1_type" text,
"phone_2_number" text,
"phone_2_type" text,
"background" text,
"acquisition" text,
"avatar" jsonb,
"first_seen" timestamp with time zone,
"last_seen" timestamp with time zone,
"has_newsletter" boolean,
"status" text,
"tags" bigint[],
"company_id" bigint,
"sales_id" bigint,
"linkedin_url" text
);
alter table "public"."contacts" enable row level security;
create table "public"."dealNotes" (
"id" bigint generated by default as identity not null,
"deal_id" bigint not null,
"type" text,
"text" text,
"date" timestamp with time zone default now(),
"sales_id" bigint,
"attachments" jsonb[]
);
alter table "public"."dealNotes" enable row level security;
create table "public"."deals" (
"id" bigint generated by default as identity not null,
"name" text not null,
"company_id" bigint,
"contact_ids" bigint[],
"category" text,
"stage" text not null,
"description" text,
"amount" bigint,
"created_at" timestamp with time zone not null default now(),
"updated_at" timestamp with time zone not null default now(),
"archived_at" timestamp with time zone default null,
"expected_closing_date" timestamp with time zone default null,
"sales_id" bigint,
"index" smallint
);
alter table "public"."deals" enable row level security;
create table "public"."sales" (
"id" bigint generated by default as identity not null,
"first_name" text not null,
"last_name" text not null,
"email" text not null,
"administrator" boolean not null,
"user_id" uuid not null,
"avatar" jsonb,
"disabled" boolean not null default FALSE
);
alter table "public"."sales" enable row level security;
create table "public"."tags" (
"id" bigint generated by default as identity not null,
"name" text not null,
"color" text not null
);
alter table "public"."tags" enable row level security;
create table "public"."tasks" (
"id" bigint generated by default as identity not null,
"contact_id" bigint not null,
"type" text,
"text" text,
"due_date" timestamp with time zone not null,
"done_date" timestamp with time zone
);
alter table "public"."tasks" enable row level security;
CREATE UNIQUE INDEX companies_pkey ON public.companies USING btree (id);
CREATE UNIQUE INDEX "contactNotes_pkey" ON public."contactNotes" USING btree (id);
CREATE UNIQUE INDEX contacts_pkey ON public.contacts USING btree (id);
CREATE UNIQUE INDEX "dealNotes_pkey" ON public."dealNotes" USING btree (id);
CREATE UNIQUE INDEX deals_pkey ON public.deals USING btree (id);
CREATE UNIQUE INDEX sales_pkey ON public.sales USING btree (id);
CREATE UNIQUE INDEX tags_pkey ON public.tags USING btree (id);
CREATE UNIQUE INDEX tasks_pkey ON public.tasks USING btree (id);
alter table "public"."companies" add constraint "companies_pkey" PRIMARY KEY using index "companies_pkey";
alter table "public"."contactNotes" add constraint "contactNotes_pkey" PRIMARY KEY using index "contactNotes_pkey";
alter table "public"."contacts" add constraint "contacts_pkey" PRIMARY KEY using index "contacts_pkey";
alter table "public"."dealNotes" add constraint "dealNotes_pkey" PRIMARY KEY using index "dealNotes_pkey";
alter table "public"."deals" add constraint "deals_pkey" PRIMARY KEY using index "deals_pkey";
alter table "public"."sales" add constraint "sales_pkey" PRIMARY KEY using index "sales_pkey";
alter table "public"."tags" add constraint "tags_pkey" PRIMARY KEY using index "tags_pkey";
alter table "public"."tasks" add constraint "tasks_pkey" PRIMARY KEY using index "tasks_pkey";
alter table "public"."companies" add constraint "companies_sales_id_fkey" FOREIGN KEY (sales_id) REFERENCES sales(id) not valid;
alter table "public"."companies" validate constraint "companies_sales_id_fkey";
alter table "public"."contactNotes" add constraint "contactNotes_contact_id_fkey" FOREIGN KEY (contact_id) REFERENCES contacts(id) ON UPDATE CASCADE ON DELETE CASCADE not valid;
alter table "public"."contactNotes" validate constraint "contactNotes_contact_id_fkey";
alter table "public"."contactNotes" add constraint "contactNotes_sales_id_fkey" FOREIGN KEY (sales_id) REFERENCES sales(id) ON UPDATE CASCADE ON DELETE CASCADE not valid;
alter table "public"."contactNotes" validate constraint "contactNotes_sales_id_fkey";
alter table "public"."contacts" add constraint "contacts_company_id_fkey" FOREIGN KEY (company_id) REFERENCES companies(id) ON UPDATE CASCADE ON DELETE CASCADE not valid;
alter table "public"."contacts" validate constraint "contacts_company_id_fkey";
alter table "public"."contacts" add constraint "contacts_sales_id_fkey" FOREIGN KEY (sales_id) REFERENCES sales(id) not valid;
alter table "public"."contacts" validate constraint "contacts_sales_id_fkey";
alter table "public"."dealNotes" add constraint "dealNotes_deal_id_fkey" FOREIGN KEY (deal_id) REFERENCES deals(id) ON UPDATE CASCADE ON DELETE CASCADE not valid;
alter table "public"."dealNotes" validate constraint "dealNotes_deal_id_fkey";
alter table "public"."dealNotes" add constraint "dealNotes_sales_id_fkey" FOREIGN KEY (sales_id) REFERENCES sales(id) not valid;
alter table "public"."dealNotes" validate constraint "dealNotes_sales_id_fkey";
alter table "public"."deals" add constraint "deals_company_id_fkey" FOREIGN KEY (company_id) REFERENCES companies(id) ON UPDATE CASCADE ON DELETE CASCADE not valid;
alter table "public"."deals" validate constraint "deals_company_id_fkey";
alter table "public"."deals" add constraint "deals_sales_id_fkey" FOREIGN KEY (sales_id) REFERENCES sales(id) not valid;
alter table "public"."deals" validate constraint "deals_sales_id_fkey";
alter table "public"."sales" add constraint "sales_user_id_fkey" FOREIGN KEY (user_id) REFERENCES auth.users(id) not valid;
alter table "public"."sales" validate constraint "sales_user_id_fkey";
alter table "public"."tasks" add constraint "tasks_contact_id_fkey" FOREIGN KEY (contact_id) REFERENCES contacts(id) ON UPDATE CASCADE ON DELETE CASCADE not valid;
alter table "public"."tasks" validate constraint "tasks_contact_id_fkey";
set check_function_bodies = off;
grant delete on table "public"."companies" to "authenticated";
grant insert on table "public"."companies" to "authenticated";
grant select on table "public"."companies" to "authenticated";
grant update on table "public"."companies" to "authenticated";
grant delete on table "public"."companies" to "service_role";
grant insert on table "public"."companies" to "service_role";
grant references on table "public"."companies" to "service_role";
grant select on table "public"."companies" to "service_role";
grant trigger on table "public"."companies" to "service_role";
grant truncate on table "public"."companies" to "service_role";
grant update on table "public"."companies" to "service_role";
grant delete on table "public"."contactNotes" to "authenticated";
grant insert on table "public"."contactNotes" to "authenticated";
grant select on table "public"."contactNotes" to "authenticated";
grant update on table "public"."contactNotes" to "authenticated";
grant delete on table "public"."contactNotes" to "service_role";
grant insert on table "public"."contactNotes" to "service_role";
grant references on table "public"."contactNotes" to "service_role";
grant select on table "public"."contactNotes" to "service_role";
grant trigger on table "public"."contactNotes" to "service_role";
grant truncate on table "public"."contactNotes" to "service_role";
grant update on table "public"."contactNotes" to "service_role";
grant delete on table "public"."contacts" to "authenticated";
grant insert on table "public"."contacts" to "authenticated";
grant select on table "public"."contacts" to "authenticated";
grant update on table "public"."contacts" to "authenticated";
grant delete on table "public"."contacts" to "service_role";
grant insert on table "public"."contacts" to "service_role";
grant references on table "public"."contacts" to "service_role";
grant select on table "public"."contacts" to "service_role";
grant trigger on table "public"."contacts" to "service_role";
grant truncate on table "public"."contacts" to "service_role";
grant update on table "public"."contacts" to "service_role";
grant delete on table "public"."dealNotes" to "authenticated";
grant insert on table "public"."dealNotes" to "authenticated";
grant select on table "public"."dealNotes" to "authenticated";
grant update on table "public"."dealNotes" to "authenticated";
grant delete on table "public"."dealNotes" to "service_role";
grant insert on table "public"."dealNotes" to "service_role";
grant references on table "public"."dealNotes" to "service_role";
grant select on table "public"."dealNotes" to "service_role";
grant trigger on table "public"."dealNotes" to "service_role";
grant truncate on table "public"."dealNotes" to "service_role";
grant update on table "public"."dealNotes" to "service_role";
grant delete on table "public"."deals" to "authenticated";
grant insert on table "public"."deals" to "authenticated";
grant select on table "public"."deals" to "authenticated";
grant update on table "public"."deals" to "authenticated";
grant delete on table "public"."deals" to "service_role";
grant insert on table "public"."deals" to "service_role";
grant references on table "public"."deals" to "service_role";
grant select on table "public"."deals" to "service_role";
grant trigger on table "public"."deals" to "service_role";
grant truncate on table "public"."deals" to "service_role";
grant update on table "public"."deals" to "service_role";
grant delete on table "public"."sales" to "authenticated";
grant insert on table "public"."sales" to "authenticated";
grant select on table "public"."sales" to "authenticated";
grant update on table "public"."sales" to "authenticated";
grant delete on table "public"."sales" to "service_role";
grant insert on table "public"."sales" to "service_role";
grant references on table "public"."sales" to "service_role";
grant select on table "public"."sales" to "service_role";
grant trigger on table "public"."sales" to "service_role";
grant truncate on table "public"."sales" to "service_role";
grant update on table "public"."sales" to "service_role";
grant delete on table "public"."tags" to "authenticated";
grant insert on table "public"."tags" to "authenticated";
grant select on table "public"."tags" to "authenticated";
grant update on table "public"."tags" to "authenticated";
grant delete on table "public"."tags" to "service_role";
grant insert on table "public"."tags" to "service_role";
grant references on table "public"."tags" to "service_role";
grant select on table "public"."tags" to "service_role";
grant trigger on table "public"."tags" to "service_role";
grant truncate on table "public"."tags" to "service_role";
grant update on table "public"."tags" to "service_role";
grant delete on table "public"."tasks" to "authenticated";
grant insert on table "public"."tasks" to "authenticated";
grant select on table "public"."tasks" to "authenticated";
grant update on table "public"."tasks" to "authenticated";
grant delete on table "public"."tasks" to "service_role";
grant insert on table "public"."tasks" to "service_role";
grant references on table "public"."tasks" to "service_role";
grant select on table "public"."tasks" to "service_role";
grant trigger on table "public"."tasks" to "service_role";
grant truncate on table "public"."tasks" to "service_role";
grant update on table "public"."tasks" to "service_role";
create policy "Enable insert for authenticated users only"
on "public"."companies"
as permissive
for insert
to authenticated
with check (true);
create policy "Enable read access for authenticated users"
on "public"."companies"
as permissive
for select
to authenticated
using (true);
create policy "Enable update for authenticated users only"
on "public"."companies"
as permissive
for update
to authenticated
using (true)
with check (true);
create policy "Enable insert for authenticated users only"
on "public"."contactNotes"
as permissive
for insert
to authenticated
with check (true);
create policy "Enable read access for authenticated users"
on "public"."contactNotes"
as permissive
for select
to authenticated
using (true);
create policy "Enable insert for authenticated users only"
on "public"."contacts"
as permissive
for insert
to authenticated
with check (true);
create policy "Enable read access for authenticated users"
on "public"."contacts"
as permissive
for select
to authenticated
using (true);
create policy "Enable update for authenticated users only"
on "public"."contacts"
as permissive
for update
to authenticated
using (true)
with check (true);
create policy "Enable insert for authenticated users only"
on "public"."dealNotes"
as permissive
for insert
to authenticated
with check (true);
create policy "Enable read access for authenticated users"
on "public"."dealNotes"
as permissive
for select
to authenticated
using (true);
create policy "Enable insert for authenticated users only"
on "public"."deals"
as permissive
for insert
to authenticated
with check (true);
create policy "Enable read access for authenticated users"
on "public"."deals"
as permissive
for select
to authenticated
using (true);
create policy "Enable update for authenticated users only"
on "public"."deals"
as permissive
for update
to authenticated
using (true)
with check (true);
create policy "Enable insert for authenticated users only"
on "public"."sales"
as permissive
for insert
to authenticated
with check (true);
create policy "Enable update for authenticated users only"
on "public"."sales"
as permissive
for update
to authenticated
using (true)
with check (true);
create policy "Enable read access for authenticated users"
on "public"."sales"
as permissive
for select
to authenticated
using (true);
create policy "Enable insert for authenticated users only"
on "public"."tags"
as permissive
for insert
to authenticated
with check (true);
create policy "Enable read access for authenticated users"
on "public"."tags"
as permissive
for select
to authenticated
using (true);
create policy "Enable insert for authenticated users only"
on "public"."tasks"
as permissive
for insert
to authenticated
with check (true);
create policy "Enable read access for authenticated users"
on "public"."tasks"
as permissive
for select
to authenticated
using (true);
create policy "Company Delete Policy"
on "public"."companies"
as permissive
for delete
to authenticated
using (true);
create policy "Contact Notes Delete Policy"
on "public"."contactNotes"
as permissive
for delete
to authenticated
using (true);
create policy "Contact Notes Update policy"
on "public"."contactNotes"
as permissive
for update
to authenticated
using (true);
create policy "Contact Delete Policy"
on "public"."contacts"
as permissive
for delete
to authenticated
using (true);
create policy "Deal Notes Delete Policy"
on "public"."dealNotes"
as permissive
for delete
to authenticated
using (true);
create policy "Deal Notes Update Policy"
on "public"."dealNotes"
as permissive
for update
to authenticated
using (true);
create policy "Deals Delete Policy"
on "public"."deals"
as permissive
for delete
to authenticated
using (true);
create policy "Task Delete Policy"
on "public"."tasks"
as permissive
for delete
to authenticated
using (true);
create policy "Task Update Policy"
on "public"."tasks"
as permissive
for update
to authenticated
using (true);
-- Use Postgres to create a bucket.
insert into storage.buckets
(id, name, public)
values
('attachments', 'attachments', true);
CREATE POLICY "Attachments 1mt4rzk_0" ON storage.objects FOR SELECT TO authenticated USING (bucket_id = 'attachments');
CREATE POLICY "Attachments 1mt4rzk_1" ON storage.objects FOR INSERT TO authenticated WITH CHECK (bucket_id = 'attachments');
CREATE POLICY "Attachments 1mt4rzk_3" ON storage.objects FOR DELETE TO authenticated USING (bucket_id = 'attachments');
-- Use Postgres to create views for companies.
create view "public"."companies_summary"
with (security_invoker=on)
as
select
c.*,
count(distinct d.id) as nb_deals,
count(distinct co.id) as nb_contacts
from
"public"."companies" c
left join
"public"."deals" d on c.id = d.company_id
left join
"public"."contacts" co on c.id = co.company_id
group by
c.id;
-- Use Postgres to create views for contacts.
create view "public"."contacts_summary"
with (security_invoker=on)
as
select
co.*,
c.name as company_name,
count(distinct t.id) as nb_tasks
from
"public"."contacts" co
left join
"public"."tasks" t on co.id = t.contact_id
left join
"public"."companies" c on co.company_id = c.id
group by
co.id, c.name;