CREATE TABLE customers ( id uuid NOT NULL, email character varying NOT NULL, first_name character varying, last_name character varying, billing_address_id uuid, password_hash character varying, phone character varying, has_account boolean DEFAULT false NOT NULL, created_at timestamp with time zone DEFAULT now() NOT NULL, updated_at timestamp with time zone DEFAULT now() NOT NULL, deleted_at timestamp with time zone, metadata jsonb ); CREATE TABLE customer_groups ( id uuid NOT NULL, name character varying NOT NULL, created_at timestamp with time zone DEFAULT now() NOT NULL, updated_at timestamp with time zone DEFAULT now() NOT NULL, deleted_at timestamp with time zone, metadata jsonb ); CREATE TABLE customer_group_customers ( customer_group_id uuid NOT NULL, customer_id uuid NOT NULL ); ------------------------------------------ ------------------------------------------ ------------------------------------------ CREATE TYPE user_roles AS ENUM ( 'admin', 'member', 'developer' ); CREATE TABLE users ( id uuid NOT NULL, email character varying NOT NULL, first_name character varying, last_name character varying, password_hash character varying, api_token character varying, created_at timestamp with time zone DEFAULT now() NOT NULL, updated_at timestamp with time zone DEFAULT now() NOT NULL, deleted_at timestamp with time zone, metadata jsonb, role user_roles DEFAULT 'member'::user_roles ); CREATE TABLE addresses ( id uuid NOT NULL, customer_id uuid, company character varying, first_name character varying, last_name character varying, address_1 character varying, address_2 character varying, city character varying, country_code character varying, province character varying, postal_code character varying, phone character varying, created_at timestamp with time zone DEFAULT now() NOT NULL, updated_at timestamp with time zone DEFAULT now() NOT NULL, deleted_at timestamp with time zone, metadata jsonb );