mirror of
https://github.com/kennethreitz-archive/www.gittip.com.git
synced 2026-06-05 23:30:19 +00:00
150 lines
6.9 KiB
SQL
150 lines
6.9 KiB
SQL
-------------------------------------------------------------------------------
|
|
-- million trillion trillion
|
|
-- | trillion trillion
|
|
-- | | trillion
|
|
-- | | | billion
|
|
-- | | | | million
|
|
-- | | | | | thousand
|
|
-- | | | | | |
|
|
-- numeric(35,2) maxes out at $999,999,999,999,999,999,999,999,999,999,999.00.
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
-- Create the initial structure.
|
|
|
|
CREATE EXTENSION hstore;
|
|
|
|
CREATE TABLE participants
|
|
( id text PRIMARY KEY
|
|
, statement text DEFAULT ''
|
|
|
|
, stripe_customer_id text DEFAULT NULL
|
|
, last_bill_result text DEFAULT NULL
|
|
|
|
, session_token text UNIQUE DEFAULT NULL
|
|
, session_expires timestamp with time zone DEFAULT CURRENT_TIMESTAMP
|
|
|
|
, ctime timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
, claimed_time timestamp with time zone DEFAULT NULL
|
|
, is_admin boolean NOT NULL DEFAULT FALSE
|
|
, shares_giving boolean NOT NULL DEFAULT TRUE
|
|
|
|
-- If this isn't NULL then it means one participant was folded into another
|
|
-- and all requests for this participant should be redirected to the other.
|
|
, redirect text DEFAULT NULL REFERENCES participants
|
|
|
|
-- The participants balance is expected to be receipts - disbursements. It is
|
|
-- stored here as an optimization and sanity check.
|
|
, balance numeric(35,2) DEFAULT 0.0
|
|
, pending numeric(35,2) DEFAULT NULL
|
|
);
|
|
|
|
CREATE TABLE social_network_users
|
|
( id serial PRIMARY KEY
|
|
, network text NOT NULL
|
|
, user_id text NOT NULL
|
|
, user_info hstore
|
|
, is_locked boolean NOT NULL DEFAULT FALSE
|
|
, participant_id text DEFAULT NULL REFERENCES participants ON DELETE RESTRICT
|
|
, UNIQUE(network, user_id)
|
|
);
|
|
|
|
-- tips -- all times a participant elects to tip another
|
|
CREATE TABLE tips
|
|
( id serial PRIMARY KEY
|
|
, ctime timestamp with time zone NOT NULL
|
|
, mtime timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
, tipper text NOT NULL REFERENCES participants ON DELETE RESTRICT
|
|
, tippee text NOT NULL REFERENCES participants ON DELETE RESTRICT
|
|
, amount numeric(35,2) NOT NULL
|
|
);
|
|
|
|
-- transfers -- balance transfers from one user to another
|
|
CREATE TABLE transfers
|
|
( id serial PRIMARY KEY
|
|
, timestamp timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
, tipper text NOT NULL REFERENCES participants ON DELETE RESTRICT
|
|
, tippee text NOT NULL REFERENCES participants ON DELETE RESTRICT
|
|
, amount numeric(35,2) NOT NULL
|
|
);
|
|
|
|
-- paydays -- payday events, stats about them
|
|
CREATE TABLE paydays
|
|
( id serial PRIMARY KEY
|
|
, ts_start timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
, ts_end timestamp with time zone UNIQUE NOT NULL DEFAULT '1970-01-01T00:00:00+00'::timestamptz
|
|
, nparticipants bigint DEFAULT 0
|
|
, ntippers bigint DEFAULT 0
|
|
, ntips bigint DEFAULT 0
|
|
, ntransfers bigint DEFAULT 0
|
|
, transfer_volume numeric(35,2) DEFAULT 0.00
|
|
, ncc_failing bigint DEFAULT 0
|
|
, ncc_missing bigint DEFAULT 0
|
|
, nexchanges bigint DEFAULT 0
|
|
, exchange_volume numeric(35,2) DEFAULT 0.00
|
|
, exchange_fees_volume numeric(35,2) DEFAULT 0.00
|
|
);
|
|
|
|
-- exchanges -- when a participant moves cash between Gittip and their bank
|
|
CREATE TABLE exchanges
|
|
( id serial PRIMARY KEY
|
|
, timestamp timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
, amount numeric(35,2) NOT NULL
|
|
, fee numeric(35,2) NOT NULL
|
|
, participant_id text NOT NULL REFERENCES participants ON DELETE RESTRICT
|
|
);
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
-- https://github.com/whit537/www.gittip.com/issues/128
|
|
|
|
ALTER TABLE participants ADD COLUMN anonymous bool NOT NULL DEFAULT FALSE;
|
|
ALTER TABLE participants DROP COLUMN shares_giving;
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
-- https://github.com/whit537/www.gittip.com/issues/110
|
|
|
|
ALTER TABLE participants ADD COLUMN goal numeric(35,2) DEFAULT NULL;
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
-- https://github.com/whit537/www.gittip.com/issues/78
|
|
|
|
ALTER TABLE participants ADD COLUMN balanced_account_uri text DEFAULT NULL;
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
-- https://github.com/whit537/www.gittip.com/issues/161
|
|
|
|
ALTER TABLE participants ADD CONSTRAINT min_balance CHECK(balance >= 0);
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
-- https://github.com/whit537/www.gittip.com/issues/35
|
|
|
|
ALTER TABLE participants ALTER COLUMN statement SET NOT NULL;
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
-- https://github.com/whit537/www.gittip.com/issues/22
|
|
|
|
-- aggregate of the exchanges for paying out
|
|
CREATE TABLE settlements
|
|
(
|
|
id serial PRIMARY KEY
|
|
, timestamp timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
, amount_in_cents integer NOT NULL
|
|
, participant_id text NOT NULL REFERENCES participants ON DELETE RESTRICT
|
|
, settled timestamp with time zone
|
|
);
|
|
|
|
-- we have a balanced_destination_uri if the user has a specific bank account
|
|
-- to pay out to
|
|
ALTER TABLE participants ADD COLUMN balanced_destination_uri text DEFAULT NULL;
|
|
ALTER TABLE participants ADD COLUMN last_ach_result text DEFAULT NULL;
|
|
|
|
-- when we pay out we mark the date the credit was created as settled so we
|
|
-- know what not to settle again.
|
|
ALTER TABLE exchanges ADD COLUMN settlement_id INT REFERENCES settlements(id);
|