-- AUTOGENERATED BY gopkg.in/spacemonkeygo/dbx.v1 -- DO NOT EDIT CREATE TABLE accounting_rollups ( id INTEGER NOT NULL, node_id BLOB NOT NULL, start_time TIMESTAMP NOT NULL, put_total INTEGER NOT NULL, get_total INTEGER NOT NULL, get_audit_total INTEGER NOT NULL, get_repair_total INTEGER NOT NULL, put_repair_total INTEGER NOT NULL, at_rest_total REAL NOT NULL, PRIMARY KEY ( id ) ); CREATE TABLE accounting_timestamps ( name TEXT NOT NULL, value TIMESTAMP NOT NULL, PRIMARY KEY ( name ) ); CREATE TABLE bucket_bandwidth_rollups ( bucket_name BLOB NOT NULL, project_id BLOB NOT NULL, interval_start TIMESTAMP NOT NULL, interval_seconds INTEGER NOT NULL, action INTEGER NOT NULL, inline INTEGER NOT NULL, allocated INTEGER NOT NULL, settled INTEGER NOT NULL, PRIMARY KEY ( bucket_name, project_id, interval_start, action ) ); CREATE TABLE bucket_storage_tallies ( bucket_name BLOB NOT NULL, project_id BLOB NOT NULL, interval_start TIMESTAMP NOT NULL, inline INTEGER NOT NULL, remote INTEGER NOT NULL, remote_segments_count INTEGER NOT NULL, inline_segments_count INTEGER NOT NULL, object_count INTEGER NOT NULL, metadata_size INTEGER NOT NULL, PRIMARY KEY ( bucket_name, project_id, interval_start ) ); CREATE TABLE bucket_usages ( id BLOB NOT NULL, bucket_id BLOB NOT NULL, rollup_end_time TIMESTAMP NOT NULL, remote_stored_data INTEGER NOT NULL, inline_stored_data INTEGER NOT NULL, remote_segments INTEGER NOT NULL, inline_segments INTEGER NOT NULL, objects INTEGER NOT NULL, metadata_size INTEGER NOT NULL, repair_egress INTEGER NOT NULL, get_egress INTEGER NOT NULL, audit_egress INTEGER NOT NULL, PRIMARY KEY ( id ) ); CREATE TABLE injuredsegments ( path BLOB NOT NULL, data BLOB NOT NULL, attempted TIMESTAMP, PRIMARY KEY ( path ) ); CREATE TABLE irreparabledbs ( segmentpath BLOB NOT NULL, segmentdetail BLOB NOT NULL, pieces_lost_count INTEGER NOT NULL, seg_damaged_unix_sec INTEGER NOT NULL, repair_attempt_count INTEGER NOT NULL, PRIMARY KEY ( segmentpath ) ); CREATE TABLE nodes ( id BLOB NOT NULL, address TEXT NOT NULL, last_net TEXT NOT NULL, protocol INTEGER NOT NULL, type INTEGER NOT NULL, email TEXT NOT NULL, wallet TEXT NOT NULL, free_bandwidth INTEGER NOT NULL, free_disk INTEGER NOT NULL, major INTEGER NOT NULL, minor INTEGER NOT NULL, patch INTEGER NOT NULL, hash TEXT NOT NULL, timestamp TIMESTAMP NOT NULL, release INTEGER NOT NULL, latency_90 INTEGER NOT NULL, audit_success_count INTEGER NOT NULL, total_audit_count INTEGER NOT NULL, uptime_success_count INTEGER NOT NULL, total_uptime_count INTEGER NOT NULL, created_at TIMESTAMP NOT NULL, updated_at TIMESTAMP NOT NULL, last_contact_success TIMESTAMP NOT NULL, last_contact_failure TIMESTAMP NOT NULL, contained INTEGER NOT NULL, disqualified TIMESTAMP, audit_reputation_alpha REAL NOT NULL, audit_reputation_beta REAL NOT NULL, uptime_reputation_alpha REAL NOT NULL, uptime_reputation_beta REAL NOT NULL, PRIMARY KEY ( id ) ); CREATE TABLE offers ( id INTEGER NOT NULL, name TEXT NOT NULL, description TEXT NOT NULL, award_credit_in_cents INTEGER NOT NULL, invitee_credit_in_cents INTEGER NOT NULL, award_credit_duration_days INTEGER, invitee_credit_duration_days INTEGER, redeemable_cap INTEGER, expires_at TIMESTAMP NOT NULL, created_at TIMESTAMP NOT NULL, status INTEGER NOT NULL, type INTEGER NOT NULL, PRIMARY KEY ( id ) ); CREATE TABLE pending_audits ( node_id BLOB NOT NULL, piece_id BLOB NOT NULL, stripe_index INTEGER NOT NULL, share_size INTEGER NOT NULL, expected_share_hash BLOB NOT NULL, reverify_count INTEGER NOT NULL, path BLOB NOT NULL, PRIMARY KEY ( node_id ) ); CREATE TABLE projects ( id BLOB NOT NULL, name TEXT NOT NULL, description TEXT NOT NULL, usage_limit INTEGER NOT NULL, partner_id BLOB, owner_id BLOB NOT NULL, created_at TIMESTAMP NOT NULL, PRIMARY KEY ( id ) ); CREATE TABLE registration_tokens ( secret BLOB NOT NULL, owner_id BLOB, project_limit INTEGER NOT NULL, created_at TIMESTAMP NOT NULL, PRIMARY KEY ( secret ), UNIQUE ( owner_id ) ); CREATE TABLE reset_password_tokens ( secret BLOB NOT NULL, owner_id BLOB NOT NULL, created_at TIMESTAMP NOT NULL, PRIMARY KEY ( secret ), UNIQUE ( owner_id ) ); CREATE TABLE serial_numbers ( id INTEGER NOT NULL, serial_number BLOB NOT NULL, bucket_id BLOB NOT NULL, expires_at TIMESTAMP NOT NULL, PRIMARY KEY ( id ) ); CREATE TABLE storagenode_bandwidth_rollups ( storagenode_id BLOB NOT NULL, interval_start TIMESTAMP NOT NULL, interval_seconds INTEGER NOT NULL, action INTEGER NOT NULL, allocated INTEGER NOT NULL, settled INTEGER NOT NULL, PRIMARY KEY ( storagenode_id, interval_start, action ) ); CREATE TABLE storagenode_storage_tallies ( id INTEGER NOT NULL, node_id BLOB NOT NULL, interval_end_time TIMESTAMP NOT NULL, data_total REAL NOT NULL, PRIMARY KEY ( id ) ); CREATE TABLE users ( id BLOB NOT NULL, email TEXT NOT NULL, full_name TEXT NOT NULL, short_name TEXT, password_hash BLOB NOT NULL, status INTEGER NOT NULL, partner_id BLOB, created_at TIMESTAMP NOT NULL, PRIMARY KEY ( id ) ); CREATE TABLE value_attributions ( project_id BLOB NOT NULL, bucket_name BLOB NOT NULL, partner_id BLOB NOT NULL, last_updated TIMESTAMP NOT NULL, PRIMARY KEY ( project_id, bucket_name ) ); CREATE TABLE api_keys ( id BLOB NOT NULL, project_id BLOB NOT NULL REFERENCES projects( id ) ON DELETE CASCADE, head BLOB NOT NULL, name TEXT NOT NULL, secret BLOB NOT NULL, partner_id BLOB, created_at TIMESTAMP NOT NULL, PRIMARY KEY ( id ), UNIQUE ( head ), UNIQUE ( name, project_id ) ); CREATE TABLE bucket_metainfos ( id BLOB NOT NULL, project_id BLOB NOT NULL REFERENCES projects( id ), name BLOB NOT NULL, partner_id BLOB, path_cipher INTEGER NOT NULL, created_at TIMESTAMP NOT NULL, default_segment_size INTEGER NOT NULL, default_encryption_cipher_suite INTEGER NOT NULL, default_encryption_block_size INTEGER NOT NULL, default_redundancy_algorithm INTEGER NOT NULL, default_redundancy_share_size INTEGER NOT NULL, default_redundancy_required_shares INTEGER NOT NULL, default_redundancy_repair_shares INTEGER NOT NULL, default_redundancy_optimal_shares INTEGER NOT NULL, default_redundancy_total_shares INTEGER NOT NULL, PRIMARY KEY ( id ), UNIQUE ( name, project_id ) ); CREATE TABLE project_invoice_stamps ( project_id BLOB NOT NULL REFERENCES projects( id ) ON DELETE CASCADE, invoice_id BLOB NOT NULL, start_date TIMESTAMP NOT NULL, end_date TIMESTAMP NOT NULL, created_at TIMESTAMP NOT NULL, PRIMARY KEY ( project_id, start_date, end_date ), UNIQUE ( invoice_id ) ); CREATE TABLE project_members ( member_id BLOB NOT NULL REFERENCES users( id ) ON DELETE CASCADE, project_id BLOB NOT NULL REFERENCES projects( id ) ON DELETE CASCADE, created_at TIMESTAMP NOT NULL, PRIMARY KEY ( member_id, project_id ) ); CREATE TABLE used_serials ( serial_number_id INTEGER NOT NULL REFERENCES serial_numbers( id ) ON DELETE CASCADE, storage_node_id BLOB NOT NULL, PRIMARY KEY ( serial_number_id, storage_node_id ) ); CREATE TABLE user_credits ( id INTEGER NOT NULL, user_id BLOB NOT NULL REFERENCES users( id ) ON DELETE CASCADE, offer_id INTEGER NOT NULL REFERENCES offers( id ), referred_by BLOB REFERENCES users( id ) ON DELETE SET NULL, type TEXT NOT NULL, credits_earned_in_cents INTEGER NOT NULL, credits_used_in_cents INTEGER NOT NULL, expires_at TIMESTAMP NOT NULL, created_at TIMESTAMP NOT NULL, PRIMARY KEY ( id ) ); CREATE TABLE user_payments ( user_id BLOB NOT NULL REFERENCES users( id ) ON DELETE CASCADE, customer_id BLOB NOT NULL, created_at TIMESTAMP NOT NULL, PRIMARY KEY ( user_id ), UNIQUE ( customer_id ) ); CREATE TABLE project_payments ( id BLOB NOT NULL, project_id BLOB NOT NULL REFERENCES projects( id ) ON DELETE CASCADE, payer_id BLOB NOT NULL REFERENCES user_payments( user_id ) ON DELETE CASCADE, payment_method_id BLOB NOT NULL, is_default INTEGER NOT NULL, created_at TIMESTAMP NOT NULL, PRIMARY KEY ( id ) ); CREATE INDEX bucket_name_project_id_interval_start_interval_seconds ON bucket_bandwidth_rollups ( bucket_name, project_id, interval_start, interval_seconds ); CREATE UNIQUE INDEX bucket_id_rollup ON bucket_usages ( bucket_id, rollup_end_time ); CREATE INDEX injuredsegments_attempted_index ON injuredsegments ( attempted ); CREATE INDEX node_last_ip ON nodes ( last_net ); CREATE UNIQUE INDEX serial_number ON serial_numbers ( serial_number ); CREATE INDEX serial_numbers_expires_at_index ON serial_numbers ( expires_at ); CREATE INDEX storagenode_id_interval_start_interval_seconds ON storagenode_bandwidth_rollups ( storagenode_id, interval_start, interval_seconds );