Skip to content

The schema to use for migration cannot be configured. #5595

@issuefiler

Description

@issuefiler

Past Issues Searched

  • I have searched open and closed issues to make sure that the bug has not yet been reported

Issue is a Bug Report

  • This is a bug report and not a feature request, nor asking for self-hosted support

Using official Plausible Cloud hosting or self-hosting?

Self-hosting

Describe the bug

I cannot configure the schema to use for migration whatsoever. I have tried everything I can possibly imagine other than directly patching the source code. Plausible is persistently trying to refer to the public schema, which does not even exist in my database.

postgresql.conf

search_path = 'pg_temp'

PostgreSQL initialization script

# CREATE DATABASE database;
CREATE ROLE plausible WITH LOGIN PASSWORD
	'SCRAM-SHA-256$4096:W77u3MgIb7Y35iRDHBzmQw==$'
	'MRjoQaSf+n9y4FVEJE43bS8v8y7wAUuwVvhGX6yhfXQ=:'
	'N5NxvOu0YzqWSl+NZR71ZSM85H7QrGTzh9d87LvH64c=';
GRANT CONNECT ON DATABASE database TO plausible;
CREATE SCHEMA plausible AUTHORIZATION plausible;
ALTER ROLE plausible SET search_path TO plausible;
\connect database
CREATE EXTENSION citext SCHEMA plausible;
GRANT USAGE ON TYPE plausible.citext TO plausible;
GRANT CREATE, USAGE ON SCHEMA plausible TO plausible;

Extra .exs configuration (EXTRA_CONFIG_PATH)

import Config
config :plausible,
	Plausible.Repo,
	[
		migration_default_prefix: "plausible",
		show_sensitive_data_on_connection_error: true,
		after_connect: {
			Postgrex,
			:query!,
			["SET search_path TO plausible;", []]
		},
		parameters: [
			application_name: "Plausible",
			search_path: "plausible"
		]
	]

config :plausible, Oban, [repo: Plausible.Repo, prefix: "plausible"]

defmodule Plausible.Repo.Migrations.AddPrefixedObanJobsTable do
	use Ecto.Migration

	def up, do: Oban.Migrations.up(prefix: "plausible")
	def down, do: Oban.Migrations.down(prefix: "plausible")
end

Plausible container log

Loading plausible..
Starting dependencies..
Starting repos..
** (Postgrex.Error) ERROR 42501 (insufficient_privilege) permission denied for schema public
    (ecto_sql 3.12.1) lib/ecto/adapters/sql.ex:1096: Ecto.Adapters.SQL.raise_sql_call_error/1
    (elixir 1.18.3) lib/enum.ex:1714: Enum."-map/2-lists^map/1-1-"/2
    (ecto_sql 3.12.1) lib/ecto/adapters/sql.ex:1203: Ecto.Adapters.SQL.execute_ddl/4
    (ecto_sql 3.12.1) lib/ecto/migration/runner.ex:348: Ecto.Migration.Runner.log_and_execute_ddl/3
    (elixir 1.18.3) lib/enum.ex:1714: Enum."-map/2-lists^map/1-1-"/2
    (ecto_sql 3.12.1) lib/ecto/migration/runner.ex:311: Ecto.Migration.Runner.perform_operation/3
    (stdlib 6.2.2) timer.erl:595: :timer.tc/2

PostgreSQL container log

STATEMENT:  DO $$
	BEGIN
	IF NOT EXISTS (SELECT 1 FROM pg_type
	               WHERE typname = 'oban_job_state'
	                 AND typnamespace = 'public'::regnamespace::oid) THEN
	    CREATE TYPE "public".oban_job_state AS ENUM (
	      'available',
	      'scheduled',
	      'executing',
	      'retryable',
	      'completed',
	      'discarded'
	    );
	  END IF;
	END$$;

It turned out it was because the use of the public schema is hard-coded.

create_if_not_exists index(
:oban_jobs,
[:state, :queue, :priority, :scheduled_at, :id],
concurrently: true,
prefix: "public"
)
drop_if_exists index(
:oban_jobs,
[:queue, :state, :priority, :scheduled_at, :id],
prefix: "public"
)

SELECT pg_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET xmloption = content;
SET client_min_messages = warning;
SET row_security = off;
--
-- Name: citext; Type: EXTENSION; Schema: -; Owner: -
--
CREATE EXTENSION IF NOT EXISTS citext WITH SCHEMA public;
--
-- Name: EXTENSION citext; Type: COMMENT; Schema: -; Owner: -
--
COMMENT ON EXTENSION citext IS 'data type for case-insensitive character strings';
--
-- Name: billing_interval; Type: TYPE; Schema: public; Owner: -
--
CREATE TYPE public.billing_interval AS ENUM (
'monthly',
'yearly'
);
--
-- Name: oban_job_state; Type: TYPE; Schema: public; Owner: -
--
CREATE TYPE public.oban_job_state AS ENUM (
'available',
'scheduled',
'executing',
'retryable',
'completed',
'discarded',
'cancelled'
);
--
-- Name: site_membership_role; Type: TYPE; Schema: public; Owner: -
--
CREATE TYPE public.site_membership_role AS ENUM (
'owner',
'admin',
'viewer'
);
--
-- Name: check_domain(); Type: FUNCTION; Schema: public; Owner: -
--
CREATE FUNCTION public.check_domain() RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
IF EXISTS (
SELECT 1 FROM sites
WHERE (NEW.domain = domain_changed_from AND NEW.id != id)
OR (OLD IS NULL AND NEW.domain_changed_from = domain)
) THEN
RAISE unique_violation USING CONSTRAINT = 'domain_change_disallowed';
END IF;
RETURN NEW;
END;
$$;
SET default_tablespace = '';
SET default_table_access_method = heap;
--
-- Name: api_keys; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.api_keys (
id bigint NOT NULL,
user_id bigint NOT NULL,
name character varying(255) NOT NULL,
key_prefix character varying(255) NOT NULL,
key_hash character varying(255) NOT NULL,
inserted_at timestamp(0) without time zone NOT NULL,
updated_at timestamp(0) without time zone NOT NULL,
scopes text[] NOT NULL,
hourly_request_limit integer DEFAULT 1000 NOT NULL
);
--
-- Name: api_keys_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.api_keys_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: api_keys_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.api_keys_id_seq OWNED BY public.api_keys.id;
--
-- Name: check_stats_emails; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.check_stats_emails (
id bigint NOT NULL,
user_id bigint NOT NULL,
"timestamp" timestamp(0) without time zone
);
--
-- Name: check_stats_emails_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.check_stats_emails_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: check_stats_emails_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.check_stats_emails_id_seq OWNED BY public.check_stats_emails.id;
--
-- Name: create_site_emails; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.create_site_emails (
id bigint NOT NULL,
user_id bigint NOT NULL,
"timestamp" timestamp(0) without time zone
);
--
-- Name: create_site_emails_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.create_site_emails_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: create_site_emails_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.create_site_emails_id_seq OWNED BY public.create_site_emails.id;
--
-- Name: email_activation_codes; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.email_activation_codes (
id bigint NOT NULL,
code text NOT NULL,
user_id bigint NOT NULL,
issued_at timestamp(0) without time zone NOT NULL
);
--
-- Name: email_activation_codes_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.email_activation_codes_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: email_activation_codes_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.email_activation_codes_id_seq OWNED BY public.email_activation_codes.id;
--
-- Name: email_verification_codes; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.email_verification_codes (
code integer NOT NULL,
user_id bigint,
issued_at timestamp(0) without time zone
);
--
-- Name: enterprise_plans; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.enterprise_plans (
id bigint NOT NULL,
user_id bigint NOT NULL,
paddle_plan_id character varying(255) NOT NULL,
billing_interval public.billing_interval NOT NULL,
monthly_pageview_limit integer NOT NULL,
hourly_api_request_limit integer NOT NULL,
inserted_at timestamp(0) without time zone NOT NULL,
updated_at timestamp(0) without time zone NOT NULL,
site_limit integer NOT NULL,
team_member_limit integer DEFAULT '-1'::integer NOT NULL,
features character varying(255)[] DEFAULT ARRAY['props'::character varying, 'stats_api'::character varying] NOT NULL
);
--
-- Name: enterprise_plans_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.enterprise_plans_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: enterprise_plans_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.enterprise_plans_id_seq OWNED BY public.enterprise_plans.id;
--
-- Name: feedback_emails; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.feedback_emails (
id bigint NOT NULL,
user_id bigint NOT NULL,
"timestamp" timestamp(0) without time zone NOT NULL
);
--
-- Name: feedback_emails_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.feedback_emails_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: feedback_emails_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.feedback_emails_id_seq OWNED BY public.feedback_emails.id;
--
-- Name: fun_with_flags_toggles; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.fun_with_flags_toggles (
id bigint NOT NULL,
flag_name character varying(255) NOT NULL,
gate_type character varying(255) NOT NULL,
target character varying(255) NOT NULL,
enabled boolean NOT NULL
);
--
-- Name: fun_with_flags_toggles_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.fun_with_flags_toggles_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: fun_with_flags_toggles_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.fun_with_flags_toggles_id_seq OWNED BY public.fun_with_flags_toggles.id;
--
-- Name: funnel_steps; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.funnel_steps (
id bigint NOT NULL,
goal_id bigint NOT NULL,
funnel_id bigint NOT NULL,
step_order integer NOT NULL,
inserted_at timestamp(0) without time zone NOT NULL,
updated_at timestamp(0) without time zone NOT NULL
);
--
-- Name: funnel_steps_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.funnel_steps_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: funnel_steps_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.funnel_steps_id_seq OWNED BY public.funnel_steps.id;
--
-- Name: funnels; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.funnels (
id bigint NOT NULL,
name character varying(255) NOT NULL,
site_id bigint NOT NULL,
inserted_at timestamp(0) without time zone NOT NULL,
updated_at timestamp(0) without time zone NOT NULL
);
--
-- Name: funnels_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.funnels_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: funnels_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.funnels_id_seq OWNED BY public.funnels.id;
--
-- Name: goals; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.goals (
id bigint NOT NULL,
event_name text,
page_path text,
inserted_at timestamp(0) without time zone NOT NULL,
updated_at timestamp(0) without time zone NOT NULL,
site_id bigint NOT NULL,
currency character varying(3),
display_name text NOT NULL
);
--
-- Name: goals_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.goals_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: goals_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.goals_id_seq OWNED BY public.goals.id;
--
-- Name: google_auth; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.google_auth (
id bigint NOT NULL,
user_id bigint NOT NULL,
email character varying(255) NOT NULL,
refresh_token text NOT NULL,
access_token text NOT NULL,
expires timestamp(0) without time zone NOT NULL,
inserted_at timestamp(0) without time zone NOT NULL,
updated_at timestamp(0) without time zone NOT NULL,
site_id bigint NOT NULL,
property text
);
--
-- Name: google_auth_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.google_auth_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: google_auth_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.google_auth_id_seq OWNED BY public.google_auth.id;
--
-- Name: intro_emails; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.intro_emails (
id bigint NOT NULL,
user_id bigint NOT NULL,
"timestamp" timestamp(0) without time zone
);
--
-- Name: intro_emails_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.intro_emails_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: intro_emails_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.intro_emails_id_seq OWNED BY public.intro_emails.id;
--
-- Name: invitations; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.invitations (
id bigint NOT NULL,
email public.citext NOT NULL,
site_id bigint NOT NULL,
inviter_id bigint NOT NULL,
role public.site_membership_role NOT NULL,
invitation_id character varying(255),
inserted_at timestamp(0) without time zone NOT NULL,
updated_at timestamp(0) without time zone NOT NULL
);
--
-- Name: invitations_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.invitations_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: invitations_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.invitations_id_seq OWNED BY public.invitations.id;
--
-- Name: monthly_reports; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.monthly_reports (
id bigint NOT NULL,
site_id bigint NOT NULL,
inserted_at timestamp(0) without time zone NOT NULL,
updated_at timestamp(0) without time zone NOT NULL,
recipients public.citext[] DEFAULT ARRAY[]::public.citext[] NOT NULL
);
--
-- Name: monthly_reports_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.monthly_reports_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: monthly_reports_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.monthly_reports_id_seq OWNED BY public.monthly_reports.id;
--
-- Name: oban_jobs; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.oban_jobs (
id bigint NOT NULL,
state public.oban_job_state DEFAULT 'available'::public.oban_job_state NOT NULL,
queue text DEFAULT 'default'::text NOT NULL,
worker text NOT NULL,
args jsonb DEFAULT '{}'::jsonb NOT NULL,
errors jsonb[] DEFAULT ARRAY[]::jsonb[] NOT NULL,
attempt integer DEFAULT 0 NOT NULL,
max_attempts integer DEFAULT 20 NOT NULL,
inserted_at timestamp without time zone DEFAULT timezone('UTC'::text, now()) NOT NULL,
scheduled_at timestamp without time zone DEFAULT timezone('UTC'::text, now()) NOT NULL,
attempted_at timestamp without time zone,
completed_at timestamp without time zone,
attempted_by text[],
discarded_at timestamp without time zone,
priority integer DEFAULT 0 NOT NULL,
tags character varying(255)[] DEFAULT ARRAY[]::character varying[],
meta jsonb DEFAULT '{}'::jsonb,
cancelled_at timestamp without time zone,
CONSTRAINT attempt_range CHECK (((attempt >= 0) AND (attempt <= max_attempts))),
CONSTRAINT positive_max_attempts CHECK ((max_attempts > 0)),
CONSTRAINT queue_length CHECK (((char_length(queue) > 0) AND (char_length(queue) < 128))),
CONSTRAINT worker_length CHECK (((char_length(worker) > 0) AND (char_length(worker) < 128)))
);
--
-- Name: TABLE oban_jobs; Type: COMMENT; Schema: public; Owner: -
--
COMMENT ON TABLE public.oban_jobs IS '12';
--
-- Name: oban_jobs_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.oban_jobs_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: oban_jobs_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.oban_jobs_id_seq OWNED BY public.oban_jobs.id;
--
-- Name: oban_peers; Type: TABLE; Schema: public; Owner: -
--
CREATE UNLOGGED TABLE public.oban_peers (
name text NOT NULL,
node text NOT NULL,
started_at timestamp without time zone NOT NULL,
expires_at timestamp without time zone NOT NULL
);
--
-- Name: plans; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.plans (
id bigint NOT NULL,
generation integer NOT NULL,
kind character varying(255) NOT NULL,
features character varying(255)[] NOT NULL,
monthly_pageview_limit integer NOT NULL,
site_limit integer NOT NULL,
team_member_limit integer NOT NULL,
volume character varying(255) NOT NULL,
monthly_cost numeric,
monthly_product_id character varying(255),
yearly_cost numeric,
yearly_product_id character varying(255),
data_retention_in_years integer
);
--
-- Name: plans_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.plans_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: plans_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.plans_id_seq OWNED BY public.plans.id;
--
-- Name: plugins_api_tokens; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.plugins_api_tokens (
id uuid NOT NULL,
site_id bigint NOT NULL,
token_hash bytea NOT NULL,
hint character varying(255) NOT NULL,
description character varying(255) NOT NULL,
inserted_at timestamp(0) without time zone NOT NULL,
updated_at timestamp(0) without time zone NOT NULL,
last_used_at timestamp(0) without time zone
);
--
-- Name: salts; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.salts (
id bigint NOT NULL,
salt bytea NOT NULL,
inserted_at timestamp(0) without time zone NOT NULL
);
--
-- Name: salts_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.salts_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: salts_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.salts_id_seq OWNED BY public.salts.id;
--
-- Name: schema_migrations; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.schema_migrations (
version bigint NOT NULL,
inserted_at timestamp(0) without time zone
);
--
-- Name: sent_accept_traffic_until_notifications; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.sent_accept_traffic_until_notifications (
id bigint NOT NULL,
user_id bigint NOT NULL,
sent_on date NOT NULL
);
--
-- Name: sent_accept_traffic_until_notifications_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.sent_accept_traffic_until_notifications_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: sent_accept_traffic_until_notifications_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.sent_accept_traffic_until_notifications_id_seq OWNED BY public.sent_accept_traffic_until_notifications.id;
--
-- Name: sent_monthly_reports; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.sent_monthly_reports (
id bigint NOT NULL,
site_id bigint NOT NULL,
year integer NOT NULL,
month integer NOT NULL,
"timestamp" timestamp(0) without time zone
);
--
-- Name: sent_monthly_reports_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.sent_monthly_reports_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: sent_monthly_reports_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.sent_monthly_reports_id_seq OWNED BY public.sent_monthly_reports.id;
--
-- Name: sent_renewal_notifications; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.sent_renewal_notifications (
id bigint NOT NULL,
user_id bigint NOT NULL,
"timestamp" timestamp(0) without time zone
);
--
-- Name: sent_renewal_notifications_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.sent_renewal_notifications_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: sent_renewal_notifications_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.sent_renewal_notifications_id_seq OWNED BY public.sent_renewal_notifications.id;
--
-- Name: sent_weekly_reports; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.sent_weekly_reports (
id bigint NOT NULL,
site_id bigint NOT NULL,
year integer,
week integer,
"timestamp" timestamp(0) without time zone
);
--
-- Name: sent_weekly_reports_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.sent_weekly_reports_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: sent_weekly_reports_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.sent_weekly_reports_id_seq OWNED BY public.sent_weekly_reports.id;
--
-- Name: setup_help_emails; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.setup_help_emails (
id bigint NOT NULL,
site_id bigint NOT NULL,
"timestamp" timestamp(0) without time zone
);
--
-- Name: setup_help_emails_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.setup_help_emails_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: setup_help_emails_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.setup_help_emails_id_seq OWNED BY public.setup_help_emails.id;
--
-- Name: setup_success_emails; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.setup_success_emails (
id bigint NOT NULL,
site_id bigint NOT NULL,
"timestamp" timestamp(0) without time zone
);
--
-- Name: setup_success_emails_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.setup_success_emails_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: setup_success_emails_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.setup_success_emails_id_seq OWNED BY public.setup_success_emails.id;
--
-- Name: shared_links; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.shared_links (
id bigint NOT NULL,
site_id bigint NOT NULL,
slug character varying(255) NOT NULL,
password_hash character varying(255),
inserted_at timestamp(0) without time zone NOT NULL,
updated_at timestamp(0) without time zone NOT NULL,
name character varying(255) NOT NULL
);
--
-- Name: shared_links_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.shared_links_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: shared_links_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.shared_links_id_seq OWNED BY public.shared_links.id;
--
-- Name: shield_rules_country; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.shield_rules_country (
id uuid NOT NULL,
site_id bigint NOT NULL,
country_code text NOT NULL,
action character varying(255) DEFAULT 'deny'::character varying NOT NULL,
added_by character varying(255),
inserted_at timestamp(0) without time zone NOT NULL,
updated_at timestamp(0) without time zone NOT NULL
);
--
-- Name: shield_rules_hostname; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.shield_rules_hostname (
id uuid NOT NULL,
site_id bigint NOT NULL,
hostname text NOT NULL,
hostname_pattern text NOT NULL,
action character varying(255) DEFAULT 'allow'::character varying NOT NULL,
added_by character varying(255),
inserted_at timestamp(0) without time zone NOT NULL,
updated_at timestamp(0) without time zone NOT NULL
);
--
-- Name: shield_rules_ip; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.shield_rules_ip (
id uuid NOT NULL,
site_id bigint NOT NULL,
inet inet,
action character varying(255) DEFAULT 'deny'::character varying NOT NULL,
description character varying(255),
added_by character varying(255),
inserted_at timestamp(0) without time zone NOT NULL,
updated_at timestamp(0) without time zone NOT NULL
);
--
-- Name: shield_rules_page; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.shield_rules_page (
id uuid NOT NULL,
site_id bigint NOT NULL,
page_path text NOT NULL,
page_path_pattern text NOT NULL,
action character varying(255) DEFAULT 'deny'::character varying NOT NULL,
added_by character varying(255),
inserted_at timestamp(0) without time zone NOT NULL,
updated_at timestamp(0) without time zone NOT NULL
);
--
-- Name: site_imports; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.site_imports (
id bigint NOT NULL,
start_date date NOT NULL,
end_date date NOT NULL,
source character varying(255) NOT NULL,
status character varying(255) NOT NULL,
site_id bigint NOT NULL,
imported_by_id bigint,
inserted_at timestamp(0) without time zone NOT NULL,
updated_at timestamp(0) without time zone NOT NULL,
legacy boolean DEFAULT true NOT NULL,
label character varying(255)
);
--
-- Name: site_imports_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.site_imports_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: site_imports_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.site_imports_id_seq OWNED BY public.site_imports.id;
--
-- Name: site_memberships; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.site_memberships (
id bigint NOT NULL,
site_id bigint NOT NULL,
user_id bigint NOT NULL,
inserted_at timestamp(0) without time zone NOT NULL,
updated_at timestamp(0) without time zone NOT NULL,
role public.site_membership_role DEFAULT 'owner'::public.site_membership_role NOT NULL
);
--
-- Name: site_memberships_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.site_memberships_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: site_memberships_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.site_memberships_id_seq OWNED BY public.site_memberships.id;
--
-- Name: site_user_preferences; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.site_user_preferences (
id bigint NOT NULL,
pinned_at timestamp(0) without time zone,
user_id bigint NOT NULL,
site_id bigint NOT NULL,
inserted_at timestamp(0) without time zone NOT NULL,
updated_at timestamp(0) without time zone NOT NULL
);
--
-- Name: site_user_preferences_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.site_user_preferences_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: site_user_preferences_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.site_user_preferences_id_seq OWNED BY public.site_user_preferences.id;
--
-- Name: sites; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.sites (
id bigint NOT NULL,
domain character varying(255) NOT NULL,
inserted_at timestamp(0) without time zone NOT NULL,
updated_at timestamp(0) without time zone NOT NULL,
timezone character varying(255) NOT NULL,
public boolean DEFAULT false NOT NULL,
locked boolean DEFAULT false NOT NULL,
has_stats boolean DEFAULT false NOT NULL,
imported_data jsonb,
stats_start_date date,
ingest_rate_limit_scale_seconds integer DEFAULT 60 NOT NULL,
ingest_rate_limit_threshold integer,
native_stats_start_at timestamp(0) without time zone DEFAULT now() NOT NULL,
domain_changed_from character varying(255),
domain_changed_at timestamp(0) without time zone,
allowed_event_props character varying(300)[],
conversions_enabled boolean DEFAULT true NOT NULL,
funnels_enabled boolean DEFAULT true NOT NULL,
props_enabled boolean DEFAULT true NOT NULL,
accept_traffic_until timestamp(0) without time zone,
installation_meta jsonb
);
--
-- Name: sites_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.sites_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: sites_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.sites_id_seq OWNED BY public.sites.id;
--
-- Name: spike_notifications; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.spike_notifications (
id bigint NOT NULL,
site_id bigint NOT NULL,
threshold integer NOT NULL,
last_sent timestamp(0) without time zone,
recipients public.citext[] DEFAULT ARRAY[]::public.citext[] NOT NULL,
inserted_at timestamp(0) without time zone NOT NULL,
updated_at timestamp(0) without time zone NOT NULL,
type character varying(255) DEFAULT 'spike'::character varying
);
--
-- Name: spike_notifications_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.spike_notifications_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: spike_notifications_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.spike_notifications_id_seq OWNED BY public.spike_notifications.id;
--
-- Name: subscriptions; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.subscriptions (
id bigint NOT NULL,
paddle_subscription_id character varying(255),
paddle_plan_id character varying(255) NOT NULL,
user_id bigint NOT NULL,
update_url text,
cancel_url text,
status character varying(255) NOT NULL,
next_bill_amount character varying(255) NOT NULL,
next_bill_date date,
inserted_at timestamp(0) without time zone NOT NULL,
updated_at timestamp(0) without time zone NOT NULL,
last_bill_date date,
currency_code character varying(255) NOT NULL
);
--
-- Name: subscriptions_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.subscriptions_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: subscriptions_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.subscriptions_id_seq OWNED BY public.subscriptions.id;
--
-- Name: totp_recovery_codes; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.totp_recovery_codes (
id bigint NOT NULL,
code_digest bytea NOT NULL,
user_id bigint NOT NULL,
inserted_at timestamp(0) without time zone NOT NULL
);
--
-- Name: totp_recovery_codes_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.totp_recovery_codes_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: totp_recovery_codes_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.totp_recovery_codes_id_seq OWNED BY public.totp_recovery_codes.id;
--
-- Name: user_sessions; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.user_sessions (
id bigint NOT NULL,
user_id bigint NOT NULL,
token bytea NOT NULL,
device character varying(255) NOT NULL,
last_used_at timestamp(0) without time zone NOT NULL,
timeout_at timestamp(0) without time zone NOT NULL,
inserted_at timestamp(0) without time zone NOT NULL
);
--
-- Name: user_sessions_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.user_sessions_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: user_sessions_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.user_sessions_id_seq OWNED BY public.user_sessions.id;
--
-- Name: users; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.users (
id bigint NOT NULL,
email public.citext NOT NULL,
inserted_at timestamp(0) without time zone NOT NULL,
updated_at timestamp(0) without time zone NOT NULL,
name character varying(255),
last_seen timestamp(0) without time zone DEFAULT now(),
password_hash character varying(255),
trial_expiry_date date,
email_verified boolean DEFAULT false NOT NULL,
theme character varying(255) DEFAULT 'system'::character varying,
grace_period jsonb,
previous_email public.citext,
totp_secret bytea,
totp_enabled boolean DEFAULT false NOT NULL,
totp_last_used_at timestamp(0) without time zone,
allow_next_upgrade_override boolean DEFAULT false NOT NULL,
totp_token character varying(255),
accept_traffic_until date,
notes text
);
--
-- Name: users_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.users_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: users_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.users_id_seq OWNED BY public.users.id;
--
-- Name: weekly_reports; Type: TABLE; Schema: public; Owner: -
--
CREATE TABLE public.weekly_reports (
id bigint NOT NULL,
site_id bigint NOT NULL,
inserted_at timestamp(0) without time zone NOT NULL,
updated_at timestamp(0) without time zone NOT NULL,
recipients public.citext[] DEFAULT ARRAY[]::public.citext[] NOT NULL
);
--
-- Name: weekly_reports_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--
CREATE SEQUENCE public.weekly_reports_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
--
-- Name: weekly_reports_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--
ALTER SEQUENCE public.weekly_reports_id_seq OWNED BY public.weekly_reports.id;
--
-- Name: api_keys id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.api_keys ALTER COLUMN id SET DEFAULT nextval('public.api_keys_id_seq'::regclass);
--
-- Name: check_stats_emails id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.check_stats_emails ALTER COLUMN id SET DEFAULT nextval('public.check_stats_emails_id_seq'::regclass);
--
-- Name: create_site_emails id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.create_site_emails ALTER COLUMN id SET DEFAULT nextval('public.create_site_emails_id_seq'::regclass);
--
-- Name: email_activation_codes id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.email_activation_codes ALTER COLUMN id SET DEFAULT nextval('public.email_activation_codes_id_seq'::regclass);
--
-- Name: enterprise_plans id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.enterprise_plans ALTER COLUMN id SET DEFAULT nextval('public.enterprise_plans_id_seq'::regclass);
--
-- Name: feedback_emails id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.feedback_emails ALTER COLUMN id SET DEFAULT nextval('public.feedback_emails_id_seq'::regclass);
--
-- Name: fun_with_flags_toggles id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.fun_with_flags_toggles ALTER COLUMN id SET DEFAULT nextval('public.fun_with_flags_toggles_id_seq'::regclass);
--
-- Name: funnel_steps id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.funnel_steps ALTER COLUMN id SET DEFAULT nextval('public.funnel_steps_id_seq'::regclass);
--
-- Name: funnels id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.funnels ALTER COLUMN id SET DEFAULT nextval('public.funnels_id_seq'::regclass);
--
-- Name: goals id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.goals ALTER COLUMN id SET DEFAULT nextval('public.goals_id_seq'::regclass);
--
-- Name: google_auth id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.google_auth ALTER COLUMN id SET DEFAULT nextval('public.google_auth_id_seq'::regclass);
--
-- Name: intro_emails id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.intro_emails ALTER COLUMN id SET DEFAULT nextval('public.intro_emails_id_seq'::regclass);
--
-- Name: invitations id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.invitations ALTER COLUMN id SET DEFAULT nextval('public.invitations_id_seq'::regclass);
--
-- Name: monthly_reports id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.monthly_reports ALTER COLUMN id SET DEFAULT nextval('public.monthly_reports_id_seq'::regclass);
--
-- Name: oban_jobs id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.oban_jobs ALTER COLUMN id SET DEFAULT nextval('public.oban_jobs_id_seq'::regclass);
--
-- Name: plans id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.plans ALTER COLUMN id SET DEFAULT nextval('public.plans_id_seq'::regclass);
--
-- Name: salts id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.salts ALTER COLUMN id SET DEFAULT nextval('public.salts_id_seq'::regclass);
--
-- Name: sent_accept_traffic_until_notifications id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.sent_accept_traffic_until_notifications ALTER COLUMN id SET DEFAULT nextval('public.sent_accept_traffic_until_notifications_id_seq'::regclass);
--
-- Name: sent_monthly_reports id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.sent_monthly_reports ALTER COLUMN id SET DEFAULT nextval('public.sent_monthly_reports_id_seq'::regclass);
--
-- Name: sent_renewal_notifications id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.sent_renewal_notifications ALTER COLUMN id SET DEFAULT nextval('public.sent_renewal_notifications_id_seq'::regclass);
--
-- Name: sent_weekly_reports id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.sent_weekly_reports ALTER COLUMN id SET DEFAULT nextval('public.sent_weekly_reports_id_seq'::regclass);
--
-- Name: setup_help_emails id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.setup_help_emails ALTER COLUMN id SET DEFAULT nextval('public.setup_help_emails_id_seq'::regclass);
--
-- Name: setup_success_emails id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.setup_success_emails ALTER COLUMN id SET DEFAULT nextval('public.setup_success_emails_id_seq'::regclass);
--
-- Name: shared_links id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.shared_links ALTER COLUMN id SET DEFAULT nextval('public.shared_links_id_seq'::regclass);
--
-- Name: site_imports id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.site_imports ALTER COLUMN id SET DEFAULT nextval('public.site_imports_id_seq'::regclass);
--
-- Name: site_memberships id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.site_memberships ALTER COLUMN id SET DEFAULT nextval('public.site_memberships_id_seq'::regclass);
--
-- Name: site_user_preferences id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.site_user_preferences ALTER COLUMN id SET DEFAULT nextval('public.site_user_preferences_id_seq'::regclass);
--
-- Name: sites id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.sites ALTER COLUMN id SET DEFAULT nextval('public.sites_id_seq'::regclass);
--
-- Name: spike_notifications id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.spike_notifications ALTER COLUMN id SET DEFAULT nextval('public.spike_notifications_id_seq'::regclass);
--
-- Name: subscriptions id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.subscriptions ALTER COLUMN id SET DEFAULT nextval('public.subscriptions_id_seq'::regclass);
--
-- Name: totp_recovery_codes id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.totp_recovery_codes ALTER COLUMN id SET DEFAULT nextval('public.totp_recovery_codes_id_seq'::regclass);
--
-- Name: user_sessions id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.user_sessions ALTER COLUMN id SET DEFAULT nextval('public.user_sessions_id_seq'::regclass);
--
-- Name: users id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.users ALTER COLUMN id SET DEFAULT nextval('public.users_id_seq'::regclass);
--
-- Name: weekly_reports id; Type: DEFAULT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.weekly_reports ALTER COLUMN id SET DEFAULT nextval('public.weekly_reports_id_seq'::regclass);
--
-- Name: api_keys api_keys_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.api_keys
ADD CONSTRAINT api_keys_pkey PRIMARY KEY (id);
--
-- Name: goals check_event_name_or_page_path; Type: CHECK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE public.goals
ADD CONSTRAINT check_event_name_or_page_path CHECK ((((event_name IS NOT NULL) AND (page_path IS NULL)) OR ((event_name IS NULL) AND (page_path IS NOT NULL)))) NOT VALID;
--
-- Name: check_stats_emails check_stats_emails_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.check_stats_emails
ADD CONSTRAINT check_stats_emails_pkey PRIMARY KEY (id);
--
-- Name: create_site_emails create_site_emails_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.create_site_emails
ADD CONSTRAINT create_site_emails_pkey PRIMARY KEY (id);
--
-- Name: email_activation_codes email_activation_codes_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.email_activation_codes
ADD CONSTRAINT email_activation_codes_pkey PRIMARY KEY (id);
--
-- Name: enterprise_plans enterprise_plans_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.enterprise_plans
ADD CONSTRAINT enterprise_plans_pkey PRIMARY KEY (id);
--
-- Name: feedback_emails feedback_emails_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.feedback_emails
ADD CONSTRAINT feedback_emails_pkey PRIMARY KEY (id);
--
-- Name: fun_with_flags_toggles fun_with_flags_toggles_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.fun_with_flags_toggles
ADD CONSTRAINT fun_with_flags_toggles_pkey PRIMARY KEY (id);
--
-- Name: funnel_steps funnel_steps_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.funnel_steps
ADD CONSTRAINT funnel_steps_pkey PRIMARY KEY (id);
--
-- Name: funnels funnels_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.funnels
ADD CONSTRAINT funnels_pkey PRIMARY KEY (id);
--
-- Name: goals goals_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.goals
ADD CONSTRAINT goals_pkey PRIMARY KEY (id);
--
-- Name: google_auth google_auth_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.google_auth
ADD CONSTRAINT google_auth_pkey PRIMARY KEY (id);
--
-- Name: intro_emails intro_emails_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.intro_emails
ADD CONSTRAINT intro_emails_pkey PRIMARY KEY (id);
--
-- Name: invitations invitations_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.invitations
ADD CONSTRAINT invitations_pkey PRIMARY KEY (id);
--
-- Name: monthly_reports monthly_reports_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.monthly_reports
ADD CONSTRAINT monthly_reports_pkey PRIMARY KEY (id);
--
-- Name: oban_jobs non_negative_priority; Type: CHECK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE public.oban_jobs
ADD CONSTRAINT non_negative_priority CHECK ((priority >= 0)) NOT VALID;
--
-- Name: oban_jobs oban_jobs_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.oban_jobs
ADD CONSTRAINT oban_jobs_pkey PRIMARY KEY (id);
--
-- Name: oban_peers oban_peers_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.oban_peers
ADD CONSTRAINT oban_peers_pkey PRIMARY KEY (name);
--
-- Name: plans plans_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.plans
ADD CONSTRAINT plans_pkey PRIMARY KEY (id);
--
-- Name: plugins_api_tokens plugins_api_tokens_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.plugins_api_tokens
ADD CONSTRAINT plugins_api_tokens_pkey PRIMARY KEY (id);
--
-- Name: salts salts_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.salts
ADD CONSTRAINT salts_pkey PRIMARY KEY (id);
--
-- Name: schema_migrations schema_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.schema_migrations
ADD CONSTRAINT schema_migrations_pkey PRIMARY KEY (version);
--
-- Name: sent_accept_traffic_until_notifications sent_accept_traffic_until_notifications_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.sent_accept_traffic_until_notifications
ADD CONSTRAINT sent_accept_traffic_until_notifications_pkey PRIMARY KEY (id);
--
-- Name: sent_monthly_reports sent_monthly_reports_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.sent_monthly_reports
ADD CONSTRAINT sent_monthly_reports_pkey PRIMARY KEY (id);
--
-- Name: sent_renewal_notifications sent_renewal_notifications_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.sent_renewal_notifications
ADD CONSTRAINT sent_renewal_notifications_pkey PRIMARY KEY (id);
--
-- Name: sent_weekly_reports sent_weekly_reports_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.sent_weekly_reports
ADD CONSTRAINT sent_weekly_reports_pkey PRIMARY KEY (id);
--
-- Name: setup_help_emails setup_help_emails_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.setup_help_emails
ADD CONSTRAINT setup_help_emails_pkey PRIMARY KEY (id);
--
-- Name: setup_success_emails setup_success_emails_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.setup_success_emails
ADD CONSTRAINT setup_success_emails_pkey PRIMARY KEY (id);
--
-- Name: shared_links shared_links_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.shared_links
ADD CONSTRAINT shared_links_pkey PRIMARY KEY (id);
--
-- Name: shield_rules_country shield_rules_country_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.shield_rules_country
ADD CONSTRAINT shield_rules_country_pkey PRIMARY KEY (id);
--
-- Name: shield_rules_hostname shield_rules_hostname_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.shield_rules_hostname
ADD CONSTRAINT shield_rules_hostname_pkey PRIMARY KEY (id);
--
-- Name: shield_rules_ip shield_rules_ip_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.shield_rules_ip
ADD CONSTRAINT shield_rules_ip_pkey PRIMARY KEY (id);
--
-- Name: shield_rules_page shield_rules_page_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.shield_rules_page
ADD CONSTRAINT shield_rules_page_pkey PRIMARY KEY (id);
--
-- Name: site_imports site_imports_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.site_imports
ADD CONSTRAINT site_imports_pkey PRIMARY KEY (id);
--
-- Name: site_memberships site_memberships_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.site_memberships
ADD CONSTRAINT site_memberships_pkey PRIMARY KEY (id);
--
-- Name: site_user_preferences site_user_preferences_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.site_user_preferences
ADD CONSTRAINT site_user_preferences_pkey PRIMARY KEY (id);
--
-- Name: sites sites_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.sites
ADD CONSTRAINT sites_pkey PRIMARY KEY (id);
--
-- Name: spike_notifications spike_notifications_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.spike_notifications
ADD CONSTRAINT spike_notifications_pkey PRIMARY KEY (id);
--
-- Name: subscriptions subscriptions_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.subscriptions
ADD CONSTRAINT subscriptions_pkey PRIMARY KEY (id);
--
-- Name: totp_recovery_codes totp_recovery_codes_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.totp_recovery_codes
ADD CONSTRAINT totp_recovery_codes_pkey PRIMARY KEY (id);
--
-- Name: user_sessions user_sessions_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.user_sessions
ADD CONSTRAINT user_sessions_pkey PRIMARY KEY (id);
--
-- Name: users users_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.users
ADD CONSTRAINT users_pkey PRIMARY KEY (id);
--
-- Name: weekly_reports weekly_reports_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.weekly_reports
ADD CONSTRAINT weekly_reports_pkey PRIMARY KEY (id);
--
-- Name: api_keys_key_hash_index; Type: INDEX; Schema: public; Owner: -
--
CREATE UNIQUE INDEX api_keys_key_hash_index ON public.api_keys USING btree (key_hash);
--
-- Name: api_keys_scopes_index; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX api_keys_scopes_index ON public.api_keys USING gin (scopes);
--
-- Name: email_activation_codes_user_id_index; Type: INDEX; Schema: public; Owner: -
--
CREATE UNIQUE INDEX email_activation_codes_user_id_index ON public.email_activation_codes USING btree (user_id);
--
-- Name: funnel_steps_goal_id_funnel_id_index; Type: INDEX; Schema: public; Owner: -
--
CREATE UNIQUE INDEX funnel_steps_goal_id_funnel_id_index ON public.funnel_steps USING btree (goal_id, funnel_id);
--
-- Name: funnels_name_site_id_index; Type: INDEX; Schema: public; Owner: -
--
CREATE UNIQUE INDEX funnels_name_site_id_index ON public.funnels USING btree (name, site_id);
--
-- Name: fwf_flag_name_gate_target_idx; Type: INDEX; Schema: public; Owner: -
--
CREATE UNIQUE INDEX fwf_flag_name_gate_target_idx ON public.fun_with_flags_toggles USING btree (flag_name, gate_type, target);
--
-- Name: goals_event_name_unique; Type: INDEX; Schema: public; Owner: -
--
CREATE UNIQUE INDEX goals_event_name_unique ON public.goals USING btree (site_id, event_name) WHERE (event_name IS NOT NULL);
--
-- Name: goals_page_path_unique; Type: INDEX; Schema: public; Owner: -
--
CREATE UNIQUE INDEX goals_page_path_unique ON public.goals USING btree (site_id, page_path) WHERE (page_path IS NOT NULL);
--
-- Name: goals_site_id_display_name_index; Type: INDEX; Schema: public; Owner: -
--
CREATE UNIQUE INDEX goals_site_id_display_name_index ON public.goals USING btree (site_id, display_name);
--
-- Name: google_auth_site_id_index; Type: INDEX; Schema: public; Owner: -
--
CREATE UNIQUE INDEX google_auth_site_id_index ON public.google_auth USING btree (site_id);
--
-- Name: invitations_invitation_id_index; Type: INDEX; Schema: public; Owner: -
--
CREATE UNIQUE INDEX invitations_invitation_id_index ON public.invitations USING btree (invitation_id);
--
-- Name: invitations_site_id_email_index; Type: INDEX; Schema: public; Owner: -
--
CREATE UNIQUE INDEX invitations_site_id_email_index ON public.invitations USING btree (site_id, email);
--
-- Name: monthly_reports_site_id_index; Type: INDEX; Schema: public; Owner: -
--
CREATE UNIQUE INDEX monthly_reports_site_id_index ON public.monthly_reports USING btree (site_id);
--
-- Name: oban_jobs_args_index; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX oban_jobs_args_index ON public.oban_jobs USING gin (args);
--
-- Name: oban_jobs_meta_index; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX oban_jobs_meta_index ON public.oban_jobs USING gin (meta);
--
-- Name: oban_jobs_state_queue_priority_scheduled_at_id_index; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX oban_jobs_state_queue_priority_scheduled_at_id_index ON public.oban_jobs USING btree (state, queue, priority, scheduled_at, id);
--
-- Name: plugins_api_tokens_site_id_token_hash_index; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX plugins_api_tokens_site_id_token_hash_index ON public.plugins_api_tokens USING btree (site_id, token_hash);
--
-- Name: sent_accept_traffic_until_notifications_user_id_sent_on_index; Type: INDEX; Schema: public; Owner: -
--
CREATE UNIQUE INDEX sent_accept_traffic_until_notifications_user_id_sent_on_index ON public.sent_accept_traffic_until_notifications USING btree (user_id, sent_on);
--
-- Name: shared_links_site_id_name_index; Type: INDEX; Schema: public; Owner: -
--
CREATE UNIQUE INDEX shared_links_site_id_name_index ON public.shared_links USING btree (site_id, name);
--
-- Name: shield_rules_country_site_id_country_code_index; Type: INDEX; Schema: public; Owner: -
--
CREATE UNIQUE INDEX shield_rules_country_site_id_country_code_index ON public.shield_rules_country USING btree (site_id, country_code);
--
-- Name: shield_rules_hostname_site_id_hostname_pattern_index; Type: INDEX; Schema: public; Owner: -
--
CREATE UNIQUE INDEX shield_rules_hostname_site_id_hostname_pattern_index ON public.shield_rules_hostname USING btree (site_id, hostname_pattern);
--
-- Name: shield_rules_ip_site_id_inet_index; Type: INDEX; Schema: public; Owner: -
--
CREATE UNIQUE INDEX shield_rules_ip_site_id_inet_index ON public.shield_rules_ip USING btree (site_id, inet);
--
-- Name: shield_rules_page_site_id_page_path_pattern_index; Type: INDEX; Schema: public; Owner: -
--
CREATE UNIQUE INDEX shield_rules_page_site_id_page_path_pattern_index ON public.shield_rules_page USING btree (site_id, page_path_pattern);
--
-- Name: site_imports_imported_by_id_index; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX site_imports_imported_by_id_index ON public.site_imports USING btree (imported_by_id);
--
-- Name: site_imports_site_id_start_date_index; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX site_imports_site_id_start_date_index ON public.site_imports USING btree (site_id, start_date);
--
-- Name: site_memberships_site_id_index; Type: INDEX; Schema: public; Owner: -
--
CREATE UNIQUE INDEX site_memberships_site_id_index ON public.site_memberships USING btree (site_id) WHERE (role = 'owner'::public.site_membership_role);
--
-- Name: site_memberships_site_id_user_id_index; Type: INDEX; Schema: public; Owner: -
--
CREATE UNIQUE INDEX site_memberships_site_id_user_id_index ON public.site_memberships USING btree (site_id, user_id);
--
-- Name: site_user_preferences_user_id_site_id_index; Type: INDEX; Schema: public; Owner: -
--
CREATE UNIQUE INDEX site_user_preferences_user_id_site_id_index ON public.site_user_preferences USING btree (user_id, site_id);
--
-- Name: sites_domain_changed_at_index; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX sites_domain_changed_at_index ON public.sites USING btree (domain_changed_at);
--
-- Name: sites_domain_changed_from_index; Type: INDEX; Schema: public; Owner: -
--
CREATE UNIQUE INDEX sites_domain_changed_from_index ON public.sites USING btree (domain_changed_from);
--
-- Name: sites_domain_index; Type: INDEX; Schema: public; Owner: -
--
CREATE UNIQUE INDEX sites_domain_index ON public.sites USING btree (domain);
--
-- Name: sites_updated_at_index; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX sites_updated_at_index ON public.sites USING btree (updated_at);
--
-- Name: spike_notifications_site_id_type_index; Type: INDEX; Schema: public; Owner: -
--
CREATE UNIQUE INDEX spike_notifications_site_id_type_index ON public.spike_notifications USING btree (site_id, type);
--
-- Name: subscriptions_paddle_subscription_id_index; Type: INDEX; Schema: public; Owner: -
--
CREATE UNIQUE INDEX subscriptions_paddle_subscription_id_index ON public.subscriptions USING btree (paddle_subscription_id);
--
-- Name: totp_recovery_codes_user_id_index; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX totp_recovery_codes_user_id_index ON public.totp_recovery_codes USING btree (user_id);
--
-- Name: user_sessions_timeout_at_index; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX user_sessions_timeout_at_index ON public.user_sessions USING btree (timeout_at);
--
-- Name: user_sessions_token_index; Type: INDEX; Schema: public; Owner: -
--
CREATE UNIQUE INDEX user_sessions_token_index ON public.user_sessions USING btree (token);
--
-- Name: user_sessions_user_id_index; Type: INDEX; Schema: public; Owner: -
--
CREATE INDEX user_sessions_user_id_index ON public.user_sessions USING btree (user_id);
--
-- Name: users_email_index; Type: INDEX; Schema: public; Owner: -
--
CREATE UNIQUE INDEX users_email_index ON public.users USING btree (email);
--
-- Name: weekly_reports_site_id_index; Type: INDEX; Schema: public; Owner: -
--
CREATE UNIQUE INDEX weekly_reports_site_id_index ON public.weekly_reports USING btree (site_id);
--
-- Name: sites check_domain_trigger; Type: TRIGGER; Schema: public; Owner: -
--
CREATE TRIGGER check_domain_trigger BEFORE INSERT OR UPDATE ON public.sites FOR EACH ROW EXECUTE FUNCTION public.check_domain();
--
-- Name: api_keys api_keys_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.api_keys
ADD CONSTRAINT api_keys_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- Name: check_stats_emails check_stats_emails_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.check_stats_emails
ADD CONSTRAINT check_stats_emails_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- Name: create_site_emails create_site_emails_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.create_site_emails
ADD CONSTRAINT create_site_emails_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- Name: email_activation_codes email_activation_codes_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.email_activation_codes
ADD CONSTRAINT email_activation_codes_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- Name: email_verification_codes email_verification_codes_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.email_verification_codes
ADD CONSTRAINT email_verification_codes_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- Name: enterprise_plans enterprise_plans_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.enterprise_plans
ADD CONSTRAINT enterprise_plans_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id);
--
-- Name: feedback_emails feedback_emails_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.feedback_emails
ADD CONSTRAINT feedback_emails_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- Name: funnel_steps funnel_steps_funnel_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.funnel_steps
ADD CONSTRAINT funnel_steps_funnel_id_fkey FOREIGN KEY (funnel_id) REFERENCES public.funnels(id) ON DELETE CASCADE;
--
-- Name: funnel_steps funnel_steps_goal_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.funnel_steps
ADD CONSTRAINT funnel_steps_goal_id_fkey FOREIGN KEY (goal_id) REFERENCES public.goals(id) ON DELETE CASCADE;
--
-- Name: funnels funnels_site_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.funnels
ADD CONSTRAINT funnels_site_id_fkey FOREIGN KEY (site_id) REFERENCES public.sites(id) ON DELETE CASCADE;
--
-- Name: goals goals_site_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.goals
ADD CONSTRAINT goals_site_id_fkey FOREIGN KEY (site_id) REFERENCES public.sites(id) ON DELETE CASCADE;
--
-- Name: google_auth google_auth_site_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.google_auth
ADD CONSTRAINT google_auth_site_id_fkey FOREIGN KEY (site_id) REFERENCES public.sites(id) ON DELETE CASCADE;
--
-- Name: google_auth google_auth_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.google_auth
ADD CONSTRAINT google_auth_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- Name: intro_emails intro_emails_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.intro_emails
ADD CONSTRAINT intro_emails_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- Name: invitations invitations_inviter_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.invitations
ADD CONSTRAINT invitations_inviter_id_fkey FOREIGN KEY (inviter_id) REFERENCES public.users(id);
--
-- Name: invitations invitations_site_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.invitations
ADD CONSTRAINT invitations_site_id_fkey FOREIGN KEY (site_id) REFERENCES public.sites(id) ON DELETE CASCADE;
--
-- Name: monthly_reports monthly_reports_site_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.monthly_reports
ADD CONSTRAINT monthly_reports_site_id_fkey FOREIGN KEY (site_id) REFERENCES public.sites(id) ON DELETE CASCADE;
--
-- Name: plugins_api_tokens plugins_api_tokens_site_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.plugins_api_tokens
ADD CONSTRAINT plugins_api_tokens_site_id_fkey FOREIGN KEY (site_id) REFERENCES public.sites(id) ON DELETE CASCADE;
--
-- Name: sent_accept_traffic_until_notifications sent_accept_traffic_until_notifications_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.sent_accept_traffic_until_notifications
ADD CONSTRAINT sent_accept_traffic_until_notifications_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- Name: sent_monthly_reports sent_monthly_reports_site_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.sent_monthly_reports
ADD CONSTRAINT sent_monthly_reports_site_id_fkey FOREIGN KEY (site_id) REFERENCES public.sites(id) ON DELETE CASCADE;
--
-- Name: sent_renewal_notifications sent_renewal_notifications_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.sent_renewal_notifications
ADD CONSTRAINT sent_renewal_notifications_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- Name: sent_weekly_reports sent_weekly_reports_site_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.sent_weekly_reports
ADD CONSTRAINT sent_weekly_reports_site_id_fkey FOREIGN KEY (site_id) REFERENCES public.sites(id) ON DELETE CASCADE;
--
-- Name: setup_help_emails setup_help_emails_site_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.setup_help_emails
ADD CONSTRAINT setup_help_emails_site_id_fkey FOREIGN KEY (site_id) REFERENCES public.sites(id) ON DELETE CASCADE;
--
-- Name: setup_success_emails setup_success_emails_site_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.setup_success_emails
ADD CONSTRAINT setup_success_emails_site_id_fkey FOREIGN KEY (site_id) REFERENCES public.sites(id) ON DELETE CASCADE;
--
-- Name: shared_links shared_links_site_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.shared_links
ADD CONSTRAINT shared_links_site_id_fkey FOREIGN KEY (site_id) REFERENCES public.sites(id) ON DELETE CASCADE;
--
-- Name: shield_rules_country shield_rules_country_site_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.shield_rules_country
ADD CONSTRAINT shield_rules_country_site_id_fkey FOREIGN KEY (site_id) REFERENCES public.sites(id) ON DELETE CASCADE;
--
-- Name: shield_rules_hostname shield_rules_hostname_site_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.shield_rules_hostname
ADD CONSTRAINT shield_rules_hostname_site_id_fkey FOREIGN KEY (site_id) REFERENCES public.sites(id) ON DELETE CASCADE;
--
-- Name: shield_rules_ip shield_rules_ip_site_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.shield_rules_ip
ADD CONSTRAINT shield_rules_ip_site_id_fkey FOREIGN KEY (site_id) REFERENCES public.sites(id) ON DELETE CASCADE;
--
-- Name: shield_rules_page shield_rules_page_site_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.shield_rules_page
ADD CONSTRAINT shield_rules_page_site_id_fkey FOREIGN KEY (site_id) REFERENCES public.sites(id) ON DELETE CASCADE;
--
-- Name: site_imports site_imports_imported_by_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.site_imports
ADD CONSTRAINT site_imports_imported_by_id_fkey FOREIGN KEY (imported_by_id) REFERENCES public.users(id) ON DELETE SET NULL;
--
-- Name: site_imports site_imports_site_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.site_imports
ADD CONSTRAINT site_imports_site_id_fkey FOREIGN KEY (site_id) REFERENCES public.sites(id) ON DELETE CASCADE;
--
-- Name: site_memberships site_memberships_site_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.site_memberships
ADD CONSTRAINT site_memberships_site_id_fkey FOREIGN KEY (site_id) REFERENCES public.sites(id) ON DELETE CASCADE;
--
-- Name: site_memberships site_memberships_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.site_memberships
ADD CONSTRAINT site_memberships_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- Name: site_user_preferences site_user_preferences_site_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.site_user_preferences
ADD CONSTRAINT site_user_preferences_site_id_fkey FOREIGN KEY (site_id) REFERENCES public.sites(id) ON DELETE CASCADE;
--
-- Name: site_user_preferences site_user_preferences_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.site_user_preferences
ADD CONSTRAINT site_user_preferences_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- Name: spike_notifications spike_notifications_site_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.spike_notifications
ADD CONSTRAINT spike_notifications_site_id_fkey FOREIGN KEY (site_id) REFERENCES public.sites(id) ON DELETE CASCADE;
--
-- Name: subscriptions subscriptions_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.subscriptions
ADD CONSTRAINT subscriptions_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- Name: totp_recovery_codes totp_recovery_codes_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.totp_recovery_codes
ADD CONSTRAINT totp_recovery_codes_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- Name: user_sessions user_sessions_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.user_sessions
ADD CONSTRAINT user_sessions_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
--
-- Name: weekly_reports weekly_reports_site_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.weekly_reports
ADD CONSTRAINT weekly_reports_site_id_fkey FOREIGN KEY (site_id) REFERENCES public.sites(id) ON DELETE CASCADE;
--
-- PostgreSQL database dump complete
--
INSERT INTO public."schema_migrations" (version) VALUES (20181201181549);
INSERT INTO public."schema_migrations" (version) VALUES (20181214201821);
INSERT INTO public."schema_migrations" (version) VALUES (20181215140923);
INSERT INTO public."schema_migrations" (version) VALUES (20190109173917);
INSERT INTO public."schema_migrations" (version) VALUES (20190117135714);
INSERT INTO public."schema_migrations" (version) VALUES (20190118154210);
INSERT INTO public."schema_migrations" (version) VALUES (20190126135857);
INSERT INTO public."schema_migrations" (version) VALUES (20190127213938);
INSERT INTO public."schema_migrations" (version) VALUES (20190205165931);
INSERT INTO public."schema_migrations" (version) VALUES (20190213224404);
INSERT INTO public."schema_migrations" (version) VALUES (20190219130809);
INSERT INTO public."schema_migrations" (version) VALUES (20190301122344);
INSERT INTO public."schema_migrations" (version) VALUES (20190324155606);
INSERT INTO public."schema_migrations" (version) VALUES (20190402145007);
INSERT INTO public."schema_migrations" (version) VALUES (20190402145357);
INSERT INTO public."schema_migrations" (version) VALUES (20190402172423);
INSERT INTO public."schema_migrations" (version) VALUES (20190410095248);
INSERT INTO public."schema_migrations" (version) VALUES (20190424162903);
INSERT INTO public."schema_migrations" (version) VALUES (20190430140411);
INSERT INTO public."schema_migrations" (version) VALUES (20190430152923);
INSERT INTO public."schema_migrations" (version) VALUES (20190516113517);
INSERT INTO public."schema_migrations" (version) VALUES (20190520144229);
INSERT INTO public."schema_migrations" (version) VALUES (20190523160838);
INSERT INTO public."schema_migrations" (version) VALUES (20190523171519);
INSERT INTO public."schema_migrations" (version) VALUES (20190618165016);
INSERT INTO public."schema_migrations" (version) VALUES (20190718160353);
INSERT INTO public."schema_migrations" (version) VALUES (20190723141824);
INSERT INTO public."schema_migrations" (version) VALUES (20190730014913);
INSERT INTO public."schema_migrations" (version) VALUES (20190730142200);
INSERT INTO public."schema_migrations" (version) VALUES (20190730144413);
INSERT INTO public."schema_migrations" (version) VALUES (20190809174105);
INSERT INTO public."schema_migrations" (version) VALUES (20190810145419);
INSERT INTO public."schema_migrations" (version) VALUES (20190820140747);
INSERT INTO public."schema_migrations" (version) VALUES (20190906111810);
INSERT INTO public."schema_migrations" (version) VALUES (20190907134114);
INSERT INTO public."schema_migrations" (version) VALUES (20190910120900);
INSERT INTO public."schema_migrations" (version) VALUES (20190911102027);
INSERT INTO public."schema_migrations" (version) VALUES (20191010031425);
INSERT INTO public."schema_migrations" (version) VALUES (20191015072730);
INSERT INTO public."schema_migrations" (version) VALUES (20191015073507);
INSERT INTO public."schema_migrations" (version) VALUES (20191024062200);
INSERT INTO public."schema_migrations" (version) VALUES (20191025055334);
INSERT INTO public."schema_migrations" (version) VALUES (20191031051340);
INSERT INTO public."schema_migrations" (version) VALUES (20191031063001);
INSERT INTO public."schema_migrations" (version) VALUES (20191118075359);
INSERT INTO public."schema_migrations" (version) VALUES (20191216064647);
INSERT INTO public."schema_migrations" (version) VALUES (20191218082207);
INSERT INTO public."schema_migrations" (version) VALUES (20191220042658);
INSERT INTO public."schema_migrations" (version) VALUES (20200106090739);
INSERT INTO public."schema_migrations" (version) VALUES (20200107095234);
INSERT INTO public."schema_migrations" (version) VALUES (20200113143927);
INSERT INTO public."schema_migrations" (version) VALUES (20200114131538);
INSERT INTO public."schema_migrations" (version) VALUES (20200120091134);
INSERT INTO public."schema_migrations" (version) VALUES (20200121091251);
INSERT INTO public."schema_migrations" (version) VALUES (20200122150130);
INSERT INTO public."schema_migrations" (version) VALUES (20200130123049);
INSERT INTO public."schema_migrations" (version) VALUES (20200204093801);
INSERT INTO public."schema_migrations" (version) VALUES (20200204133522);
INSERT INTO public."schema_migrations" (version) VALUES (20200210134612);
INSERT INTO public."schema_migrations" (version) VALUES (20200211080841);
INSERT INTO public."schema_migrations" (version) VALUES (20200211090126);
INSERT INTO public."schema_migrations" (version) VALUES (20200211133829);
INSERT INTO public."schema_migrations" (version) VALUES (20200219124314);
INSERT INTO public."schema_migrations" (version) VALUES (20200227092821);
INSERT INTO public."schema_migrations" (version) VALUES (20200302105632);
INSERT INTO public."schema_migrations" (version) VALUES (20200317093028);
INSERT INTO public."schema_migrations" (version) VALUES (20200317142459);
INSERT INTO public."schema_migrations" (version) VALUES (20200320100803);
INSERT INTO public."schema_migrations" (version) VALUES (20200323083536);
INSERT INTO public."schema_migrations" (version) VALUES (20200323084954);
INSERT INTO public."schema_migrations" (version) VALUES (20200324132431);
INSERT INTO public."schema_migrations" (version) VALUES (20200406115153);
INSERT INTO public."schema_migrations" (version) VALUES (20200408122329);
INSERT INTO public."schema_migrations" (version) VALUES (20200529071028);
INSERT INTO public."schema_migrations" (version) VALUES (20200605134616);
INSERT INTO public."schema_migrations" (version) VALUES (20200605142737);
INSERT INTO public."schema_migrations" (version) VALUES (20200619071221);
INSERT INTO public."schema_migrations" (version) VALUES (20201130083829);
INSERT INTO public."schema_migrations" (version) VALUES (20201208173543);
INSERT INTO public."schema_migrations" (version) VALUES (20201210085345);
INSERT INTO public."schema_migrations" (version) VALUES (20201214072008);
INSERT INTO public."schema_migrations" (version) VALUES (20201230085939);
INSERT INTO public."schema_migrations" (version) VALUES (20210115092331);
INSERT INTO public."schema_migrations" (version) VALUES (20210119093337);
INSERT INTO public."schema_migrations" (version) VALUES (20210128083453);
INSERT INTO public."schema_migrations" (version) VALUES (20210128084657);
INSERT INTO public."schema_migrations" (version) VALUES (20210209095257);
INSERT INTO public."schema_migrations" (version) VALUES (20210406073254);
INSERT INTO public."schema_migrations" (version) VALUES (20210409074413);
INSERT INTO public."schema_migrations" (version) VALUES (20210409082603);
INSERT INTO public."schema_migrations" (version) VALUES (20210420075623);
INSERT INTO public."schema_migrations" (version) VALUES (20210426075157);
INSERT INTO public."schema_migrations" (version) VALUES (20210513091653);
INSERT INTO public."schema_migrations" (version) VALUES (20210525085655);
INSERT INTO public."schema_migrations" (version) VALUES (20210531080158);
INSERT INTO public."schema_migrations" (version) VALUES (20210601090924);
INSERT INTO public."schema_migrations" (version) VALUES (20210604085943);
INSERT INTO public."schema_migrations" (version) VALUES (20210629124428);
INSERT INTO public."schema_migrations" (version) VALUES (20210726090211);
INSERT INTO public."schema_migrations" (version) VALUES (20210906102736);
INSERT INTO public."schema_migrations" (version) VALUES (20210908081119);
INSERT INTO public."schema_migrations" (version) VALUES (20211020093238);
INSERT INTO public."schema_migrations" (version) VALUES (20211022084427);
INSERT INTO public."schema_migrations" (version) VALUES (20211028122202);
INSERT INTO public."schema_migrations" (version) VALUES (20211110174617);
INSERT INTO public."schema_migrations" (version) VALUES (20211202094732);
INSERT INTO public."schema_migrations" (version) VALUES (20220405124819);
INSERT INTO public."schema_migrations" (version) VALUES (20220408071645);
INSERT INTO public."schema_migrations" (version) VALUES (20220408080058);
INSERT INTO public."schema_migrations" (version) VALUES (20220421074114);
INSERT INTO public."schema_migrations" (version) VALUES (20221109082503);
INSERT INTO public."schema_migrations" (version) VALUES (20221123104203);
INSERT INTO public."schema_migrations" (version) VALUES (20221228123226);
INSERT INTO public."schema_migrations" (version) VALUES (20230301095227);
INSERT INTO public."schema_migrations" (version) VALUES (20230328062644);
INSERT INTO public."schema_migrations" (version) VALUES (20230406110926);
INSERT INTO public."schema_migrations" (version) VALUES (20230410070312);
INSERT INTO public."schema_migrations" (version) VALUES (20230417092745);
INSERT INTO public."schema_migrations" (version) VALUES (20230417095029);
INSERT INTO public."schema_migrations" (version) VALUES (20230503094245);
INSERT INTO public."schema_migrations" (version) VALUES (20230516131041);
INSERT INTO public."schema_migrations" (version) VALUES (20230530161856);
INSERT INTO public."schema_migrations" (version) VALUES (20230724131709);
INSERT INTO public."schema_migrations" (version) VALUES (20230802081520);
INSERT INTO public."schema_migrations" (version) VALUES (20230914071244);
INSERT INTO public."schema_migrations" (version) VALUES (20230914071245);
INSERT INTO public."schema_migrations" (version) VALUES (20230925072840);
INSERT INTO public."schema_migrations" (version) VALUES (20231003081927);
INSERT INTO public."schema_migrations" (version) VALUES (20231010074900);
INSERT INTO public."schema_migrations" (version) VALUES (20231011101825);
INSERT INTO public."schema_migrations" (version) VALUES (20231018081657);
INSERT INTO public."schema_migrations" (version) VALUES (20231109090334);
INSERT INTO public."schema_migrations" (version) VALUES (20231115131025);
INSERT INTO public."schema_migrations" (version) VALUES (20231115140646);
INSERT INTO public."schema_migrations" (version) VALUES (20231121131602);
INSERT INTO public."schema_migrations" (version) VALUES (20231127132321);
INSERT INTO public."schema_migrations" (version) VALUES (20231129103158);
INSERT INTO public."schema_migrations" (version) VALUES (20231129161022);
INSERT INTO public."schema_migrations" (version) VALUES (20231204151831);
INSERT INTO public."schema_migrations" (version) VALUES (20231208125624);
INSERT INTO public."schema_migrations" (version) VALUES (20231211092344);
INSERT INTO public."schema_migrations" (version) VALUES (20231219083050);
INSERT INTO public."schema_migrations" (version) VALUES (20231220072829);
INSERT INTO public."schema_migrations" (version) VALUES (20231220101920);
INSERT INTO public."schema_migrations" (version) VALUES (20240103090304);
INSERT INTO public."schema_migrations" (version) VALUES (20240123085318);
INSERT INTO public."schema_migrations" (version) VALUES (20240123095646);
INSERT INTO public."schema_migrations" (version) VALUES (20240123144308);
INSERT INTO public."schema_migrations" (version) VALUES (20240129102900);
INSERT INTO public."schema_migrations" (version) VALUES (20240129113531);
INSERT INTO public."schema_migrations" (version) VALUES (20240214114158);
INSERT INTO public."schema_migrations" (version) VALUES (20240220144655);
INSERT INTO public."schema_migrations" (version) VALUES (20240221122626);
INSERT INTO public."schema_migrations" (version) VALUES (20240307083402);
INSERT INTO public."schema_migrations" (version) VALUES (20240319094940);
INSERT INTO public."schema_migrations" (version) VALUES (20240407104659);
INSERT INTO public."schema_migrations" (version) VALUES (20240528115149);
INSERT INTO public."schema_migrations" (version) VALUES (20240702055817);
INSERT INTO public."schema_migrations" (version) VALUES (20240708120453);
INSERT INTO public."schema_migrations" (version) VALUES (20240722143005);
INSERT INTO public."schema_migrations" (version) VALUES (20240801052902);
INSERT INTO public."schema_migrations" (version) VALUES (20240801052903);
INSERT INTO public."schema_migrations" (version) VALUES (20240809100853);
INSERT INTO public."schema_migrations" (version) VALUES (20240821033217);
INSERT INTO public."schema_migrations" (version) VALUES (20240822095245);
INSERT INTO public."schema_migrations" (version) VALUES (20240924085157);

Expected behavior

The schema to use on migration/querying has to be configurable.

Screenshots

No response

Environment

The Docker image `ghcr.io/plausible/community-edition:v3.0.1`

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions