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
601 lines
18 KiB
SQL
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;
|
|
|
|
|