2018-12-05 09:35:50 +00:00
|
|
|
// dbx.v1 golang satellitedb.dbx .
|
|
|
|
|
2019-06-05 17:06:14 +01:00
|
|
|
//--- Value Attribution ---//
|
|
|
|
model value_attribution (
|
2019-06-13 13:28:55 +01:00
|
|
|
key project_id bucket_name
|
2019-06-05 17:06:14 +01:00
|
|
|
|
2019-06-13 13:28:55 +01:00
|
|
|
field project_id blob
|
|
|
|
field bucket_name blob
|
2019-06-05 17:06:14 +01:00
|
|
|
field partner_id blob
|
2019-06-18 14:06:33 +01:00
|
|
|
field last_updated utimestamp ( autoinsert, autoupdate )
|
|
|
|
)
|
|
|
|
|
|
|
|
create value_attribution ()
|
2019-07-10 21:29:26 +01:00
|
|
|
delete value_attribution (
|
2019-06-19 13:02:37 +01:00
|
|
|
where value_attribution.project_id = ?
|
|
|
|
where value_attribution.bucket_name = ?
|
|
|
|
)
|
2019-06-18 14:06:33 +01:00
|
|
|
|
|
|
|
read one (
|
|
|
|
select value_attribution
|
2019-06-19 13:02:37 +01:00
|
|
|
where value_attribution.project_id = ?
|
2019-06-19 13:50:50 +01:00
|
|
|
where value_attribution.bucket_name = ?
|
2019-06-05 17:06:14 +01:00
|
|
|
)
|
|
|
|
|
2019-05-16 15:11:15 +01:00
|
|
|
//--- containment ---//
|
|
|
|
model pending_audits (
|
|
|
|
key node_id
|
|
|
|
|
|
|
|
field node_id blob
|
|
|
|
field piece_id blob
|
|
|
|
field stripe_index int64
|
|
|
|
field share_size int64
|
|
|
|
field expected_share_hash blob
|
|
|
|
field reverify_count int64 ( updatable )
|
2019-07-18 19:08:15 +01:00
|
|
|
field path blob
|
2019-05-16 15:11:15 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
create pending_audits ( )
|
|
|
|
update pending_audits ( where pending_audits.node_id = ? )
|
|
|
|
delete pending_audits ( where pending_audits.node_id = ? )
|
|
|
|
read one (
|
|
|
|
select pending_audits
|
|
|
|
where pending_audits.node_id = ?
|
|
|
|
)
|
|
|
|
|
2019-03-15 20:21:52 +00:00
|
|
|
//--- irreparableDB ---//
|
2018-12-14 14:27:21 +00:00
|
|
|
|
2018-12-10 19:08:45 +00:00
|
|
|
model irreparabledb (
|
|
|
|
key segmentpath
|
|
|
|
|
2018-12-27 21:21:50 +00:00
|
|
|
field segmentpath blob
|
|
|
|
field segmentdetail blob ( updatable )
|
|
|
|
field pieces_lost_count int64 ( updatable )
|
|
|
|
field seg_damaged_unix_sec int64 ( updatable )
|
|
|
|
field repair_attempt_count int64 ( updatable )
|
2018-12-10 19:08:45 +00:00
|
|
|
)
|
|
|
|
|
2019-09-12 18:31:50 +01:00
|
|
|
create irreparabledb ( noreturn )
|
|
|
|
update irreparabledb (
|
|
|
|
where irreparabledb.segmentpath = ?
|
|
|
|
noreturn
|
|
|
|
)
|
2018-12-10 19:08:45 +00:00
|
|
|
delete irreparabledb ( where irreparabledb.segmentpath = ? )
|
2018-12-27 21:21:50 +00:00
|
|
|
|
2018-12-10 19:08:45 +00:00
|
|
|
read one (
|
2018-12-27 21:21:50 +00:00
|
|
|
select irreparabledb
|
|
|
|
where irreparabledb.segmentpath = ?
|
2018-12-14 14:27:21 +00:00
|
|
|
)
|
|
|
|
|
2019-04-10 07:04:24 +01:00
|
|
|
read limitoffset (
|
|
|
|
select irreparabledb
|
2019-07-18 17:21:21 +01:00
|
|
|
where irreparabledb.segmentpath > ?
|
2019-04-10 07:04:24 +01:00
|
|
|
orderby asc irreparabledb.segmentpath
|
2019-03-15 20:21:52 +00:00
|
|
|
)
|
|
|
|
|
2018-12-14 14:27:21 +00:00
|
|
|
//--- accounting ---//
|
|
|
|
|
2018-12-18 17:18:42 +00:00
|
|
|
// accounting_timestamps just allows us to save the last time/thing that happened
|
|
|
|
model accounting_timestamps (
|
2018-12-27 21:21:50 +00:00
|
|
|
key name
|
2018-12-14 14:27:21 +00:00
|
|
|
|
2018-12-27 21:21:50 +00:00
|
|
|
field name text
|
|
|
|
field value timestamp ( updatable )
|
2018-12-14 14:27:21 +00:00
|
|
|
)
|
2018-12-27 21:21:50 +00:00
|
|
|
|
2019-09-12 18:31:50 +01:00
|
|
|
create accounting_timestamps ( noreturn )
|
|
|
|
update accounting_timestamps (
|
|
|
|
where accounting_timestamps.name = ?
|
|
|
|
noreturn
|
|
|
|
)
|
2018-12-27 21:21:50 +00:00
|
|
|
|
2018-12-14 14:27:21 +00:00
|
|
|
read scalar (
|
2018-12-27 21:21:50 +00:00
|
|
|
select accounting_timestamps.value
|
|
|
|
where accounting_timestamps.name = ?
|
2018-12-14 14:27:21 +00:00
|
|
|
)
|
|
|
|
|
2018-12-18 17:18:42 +00:00
|
|
|
model accounting_rollup (
|
2018-12-27 21:21:50 +00:00
|
|
|
key id
|
|
|
|
|
2019-01-16 19:30:33 +00:00
|
|
|
field id serial64
|
|
|
|
field node_id blob
|
|
|
|
field start_time timestamp
|
|
|
|
field put_total int64
|
|
|
|
field get_total int64
|
|
|
|
field get_audit_total int64
|
2019-04-10 07:04:24 +01:00
|
|
|
field get_repair_total int64
|
2019-01-16 19:30:33 +00:00
|
|
|
field put_repair_total int64
|
|
|
|
field at_rest_total float64
|
2018-12-14 14:27:21 +00:00
|
|
|
)
|
|
|
|
|
2019-09-12 18:31:50 +01:00
|
|
|
create accounting_rollup ( noreturn )
|
2018-12-18 17:18:42 +00:00
|
|
|
delete accounting_rollup ( where accounting_rollup.id = ? )
|
2018-12-27 21:21:50 +00:00
|
|
|
|
2018-12-14 14:27:21 +00:00
|
|
|
read one (
|
2018-12-27 21:21:50 +00:00
|
|
|
select accounting_rollup
|
|
|
|
where accounting_rollup.id = ?
|
2018-12-14 14:27:21 +00:00
|
|
|
)
|
2018-12-27 21:21:50 +00:00
|
|
|
|
2018-12-14 14:27:21 +00:00
|
|
|
read all (
|
2018-12-27 21:21:50 +00:00
|
|
|
select accounting_rollup
|
2019-01-16 19:30:33 +00:00
|
|
|
where accounting_rollup.start_time >= ?
|
2018-12-14 14:27:21 +00:00
|
|
|
)
|
|
|
|
|
2019-12-30 17:10:24 +00:00
|
|
|
//--- overlay cache ---//
|
2018-12-18 17:18:42 +00:00
|
|
|
|
2018-12-14 20:17:30 +00:00
|
|
|
model node (
|
|
|
|
key id
|
|
|
|
|
2019-06-18 10:14:31 +01:00
|
|
|
index (
|
2019-05-22 21:06:27 +01:00
|
|
|
name node_last_ip
|
2019-06-24 16:33:18 +01:00
|
|
|
fields last_net
|
2019-05-22 21:06:27 +01:00
|
|
|
)
|
|
|
|
|
2019-03-29 08:53:43 +00:00
|
|
|
field id blob
|
|
|
|
field address text ( updatable ) // TODO: use compressed format
|
2019-06-24 16:33:18 +01:00
|
|
|
field last_net text ( updatable )
|
2019-03-29 08:53:43 +00:00
|
|
|
field protocol int ( updatable )
|
|
|
|
field type int ( updatable )
|
|
|
|
field email text ( updatable )
|
|
|
|
field wallet text ( updatable ) // TODO: use compressed format
|
|
|
|
field free_bandwidth int64 ( updatable )
|
|
|
|
field free_disk int64 ( updatable )
|
2019-08-19 11:58:13 +01:00
|
|
|
field piece_count int64 ( autoinsert, updatable )
|
2019-03-29 08:53:43 +00:00
|
|
|
|
2019-04-10 07:04:24 +01:00
|
|
|
field major int64 ( updatable )
|
|
|
|
field minor int64 ( updatable )
|
|
|
|
field patch int64 ( updatable )
|
|
|
|
field hash text ( updatable )
|
|
|
|
field timestamp timestamp ( updatable )
|
|
|
|
field release bool ( updatable )
|
|
|
|
|
2019-03-29 08:53:43 +00:00
|
|
|
field latency_90 int64 ( updatable )
|
|
|
|
field audit_success_count int64 ( updatable )
|
|
|
|
field total_audit_count int64 ( updatable )
|
2018-12-27 21:21:50 +00:00
|
|
|
field uptime_success_count int64 ( updatable )
|
|
|
|
field total_uptime_count int64 ( updatable )
|
2018-12-14 20:17:30 +00:00
|
|
|
|
2019-03-29 08:53:43 +00:00
|
|
|
field created_at timestamp ( autoinsert )
|
|
|
|
field updated_at timestamp ( autoinsert, autoupdate )
|
2019-04-01 19:42:06 +01:00
|
|
|
field last_contact_success timestamp ( updatable )
|
|
|
|
field last_contact_failure timestamp ( updatable )
|
2019-05-16 15:11:15 +01:00
|
|
|
|
|
|
|
field contained bool ( updatable )
|
2019-06-18 10:14:31 +01:00
|
|
|
field disqualified timestamp ( updatable, nullable )
|
2019-06-18 14:45:02 +01:00
|
|
|
|
|
|
|
field audit_reputation_alpha float64 ( updatable )
|
|
|
|
field audit_reputation_beta float64 ( updatable )
|
|
|
|
field uptime_reputation_alpha float64 ( updatable )
|
|
|
|
field uptime_reputation_beta float64 ( updatable )
|
2019-09-13 17:57:32 +01:00
|
|
|
|
2019-09-25 18:12:44 +01:00
|
|
|
field exit_initiated_at utimestamp ( updatable, nullable )
|
|
|
|
field exit_loop_completed_at utimestamp ( updatable, nullable )
|
|
|
|
field exit_finished_at utimestamp ( updatable, nullable )
|
2019-10-17 16:01:39 +01:00
|
|
|
field exit_success bool ( updatable )
|
2018-12-14 20:17:30 +00:00
|
|
|
)
|
|
|
|
|
2019-09-12 18:31:50 +01:00
|
|
|
create node ( noreturn )
|
2018-12-14 20:17:30 +00:00
|
|
|
update node ( where node.id = ? )
|
2019-09-12 18:31:50 +01:00
|
|
|
update node (
|
|
|
|
where node.id = ?
|
|
|
|
noreturn
|
|
|
|
)
|
2018-12-14 20:17:30 +00:00
|
|
|
delete node ( where node.id = ? )
|
2018-12-27 21:21:50 +00:00
|
|
|
|
2019-03-19 00:15:27 +00:00
|
|
|
// "Get" query; fails if node not found
|
2018-12-14 20:17:30 +00:00
|
|
|
read one (
|
2018-12-27 21:21:50 +00:00
|
|
|
select node
|
|
|
|
where node.id = ?
|
2018-12-14 20:17:30 +00:00
|
|
|
)
|
2018-12-17 20:14:16 +00:00
|
|
|
|
2019-01-17 18:34:13 +00:00
|
|
|
read all (
|
|
|
|
select node.id
|
|
|
|
)
|
|
|
|
|
2018-12-17 20:14:16 +00:00
|
|
|
read limitoffset (
|
2019-03-29 08:53:43 +00:00
|
|
|
select node
|
|
|
|
where node.id >= ?
|
|
|
|
orderby asc node.id
|
2018-12-17 20:14:16 +00:00
|
|
|
)
|
|
|
|
|
2019-07-12 15:35:48 +01:00
|
|
|
read limitoffset (
|
|
|
|
select node.id node.last_net node.address node.protocol
|
|
|
|
where node.id >= ?
|
|
|
|
where node.disqualified = null
|
|
|
|
orderby asc node.id
|
|
|
|
)
|
|
|
|
|
2019-08-27 13:37:42 +01:00
|
|
|
read all (
|
|
|
|
select node.id node.piece_count
|
|
|
|
where node.piece_count != 0
|
|
|
|
)
|
|
|
|
|
2019-12-30 17:10:24 +00:00
|
|
|
read limitoffset (
|
2020-01-06 20:06:05 +00:00
|
|
|
select node.id node.address node.last_contact_success node.last_contact_failure
|
2019-12-30 17:10:24 +00:00
|
|
|
where node.last_contact_success < node.last_contact_failure
|
|
|
|
where node.disqualified = null
|
|
|
|
orderby asc node.last_contact_failure
|
|
|
|
)
|
|
|
|
|
2020-01-02 20:41:18 +00:00
|
|
|
read all (
|
|
|
|
select node.id node.address node.last_contact_success node.last_contact_failure
|
|
|
|
where node.last_contact_success < ?
|
|
|
|
where node.last_contact_success > node.last_contact_failure
|
|
|
|
where node.disqualified = null
|
|
|
|
orderby asc node.last_contact_success
|
|
|
|
)
|
|
|
|
|
2018-12-21 15:11:19 +00:00
|
|
|
//--- repairqueue ---//
|
|
|
|
|
|
|
|
model injuredsegment (
|
2019-04-16 19:14:09 +01:00
|
|
|
key path
|
2018-12-27 21:21:50 +00:00
|
|
|
|
2019-07-11 18:26:07 +01:00
|
|
|
field path blob
|
2019-04-16 19:14:09 +01:00
|
|
|
field data blob
|
|
|
|
field attempted utimestamp (updatable, nullable)
|
2019-07-12 18:35:20 +01:00
|
|
|
|
|
|
|
index (
|
|
|
|
fields attempted
|
|
|
|
)
|
2018-12-21 15:11:19 +00:00
|
|
|
)
|
2018-12-27 21:21:50 +00:00
|
|
|
|
2019-01-16 20:23:28 +00:00
|
|
|
//--- satellite console ---//
|
|
|
|
|
|
|
|
model user (
|
|
|
|
key id
|
|
|
|
|
2019-01-30 15:04:40 +00:00
|
|
|
field id blob
|
2019-06-06 17:07:14 +01:00
|
|
|
field email text ( updatable )
|
2019-09-10 15:00:33 +01:00
|
|
|
field normalized_email text ( updatable )
|
2019-03-27 12:33:32 +00:00
|
|
|
field full_name text ( updatable )
|
|
|
|
field short_name text ( updatable, nullable )
|
2019-01-30 15:04:40 +00:00
|
|
|
field password_hash blob ( updatable )
|
|
|
|
|
2019-02-11 10:33:56 +00:00
|
|
|
field status int ( updatable, autoinsert )
|
2019-07-12 18:59:19 +01:00
|
|
|
field partner_id blob ( nullable )
|
2019-01-30 15:04:40 +00:00
|
|
|
field created_at timestamp ( autoinsert )
|
2019-01-16 20:23:28 +00:00
|
|
|
)
|
2019-06-06 17:07:14 +01:00
|
|
|
|
|
|
|
create user ( )
|
|
|
|
update user ( where user.id = ? )
|
|
|
|
delete user ( where user.id = ? )
|
|
|
|
|
2019-01-16 20:23:28 +00:00
|
|
|
read one (
|
|
|
|
select user
|
2019-09-10 15:00:33 +01:00
|
|
|
where user.normalized_email = ?
|
2019-02-11 10:33:56 +00:00
|
|
|
where user.status != 0
|
2019-01-16 20:23:28 +00:00
|
|
|
)
|
|
|
|
read one (
|
|
|
|
select user
|
|
|
|
where user.id = ?
|
|
|
|
)
|
|
|
|
|
|
|
|
model project (
|
|
|
|
key id
|
|
|
|
|
|
|
|
field id blob
|
|
|
|
|
|
|
|
field name text
|
|
|
|
field description text ( updatable )
|
2019-12-10 16:12:49 +00:00
|
|
|
field usage_limit int64 ( updatable )
|
2020-01-17 15:01:36 +00:00
|
|
|
field rate_limit int ( nullable, updatable )
|
2019-07-12 18:59:19 +01:00
|
|
|
field partner_id blob ( nullable )
|
2019-08-07 13:28:13 +01:00
|
|
|
field owner_id blob
|
2019-01-16 20:23:28 +00:00
|
|
|
|
|
|
|
field created_at timestamp ( autoinsert )
|
|
|
|
)
|
2019-06-06 17:07:14 +01:00
|
|
|
|
|
|
|
create project ( )
|
|
|
|
update project ( where project.id = ? )
|
|
|
|
delete project ( where project.id = ? )
|
|
|
|
|
2019-01-16 20:23:28 +00:00
|
|
|
read one (
|
|
|
|
select project
|
|
|
|
where project.id = ?
|
|
|
|
)
|
2019-12-10 16:12:49 +00:00
|
|
|
read one (
|
|
|
|
select project.usage_limit
|
|
|
|
where project.id = ?
|
|
|
|
)
|
2019-06-06 17:07:14 +01:00
|
|
|
read all (
|
|
|
|
select project
|
|
|
|
)
|
|
|
|
read all (
|
|
|
|
select project
|
|
|
|
where project.created_at < ?
|
|
|
|
orderby asc project.created_at
|
|
|
|
)
|
2019-11-15 14:27:44 +00:00
|
|
|
read all (
|
|
|
|
select project
|
|
|
|
where project.owner_id = ?
|
|
|
|
orderby asc project.created_at
|
|
|
|
)
|
2019-01-16 20:23:28 +00:00
|
|
|
read all (
|
|
|
|
select project
|
|
|
|
join project.id = project_member.project_id
|
|
|
|
where project_member.member_id = ?
|
|
|
|
orderby asc project.name
|
|
|
|
)
|
|
|
|
|
2019-11-05 13:16:02 +00:00
|
|
|
read limitoffset (
|
|
|
|
select project
|
|
|
|
where project.created_at < ?
|
|
|
|
orderby asc project.created_at
|
|
|
|
)
|
|
|
|
|
2019-06-06 17:07:14 +01:00
|
|
|
model project_invoice_stamp (
|
|
|
|
key project_id start_date end_date
|
|
|
|
unique invoice_id
|
|
|
|
|
|
|
|
field project_id project.id cascade
|
|
|
|
field invoice_id blob
|
|
|
|
|
|
|
|
field start_date timestamp
|
|
|
|
field end_date timestamp
|
|
|
|
|
|
|
|
field created_at timestamp
|
|
|
|
)
|
|
|
|
|
|
|
|
create project_invoice_stamp ( )
|
|
|
|
|
|
|
|
read one (
|
|
|
|
select project_invoice_stamp
|
|
|
|
where project_invoice_stamp.project_id = ?
|
|
|
|
where project_invoice_stamp.start_date = ?
|
|
|
|
)
|
|
|
|
// pagination ?
|
|
|
|
read all (
|
|
|
|
select project_invoice_stamp
|
|
|
|
where project_invoice_stamp.project_id = ?
|
|
|
|
orderby desc project_invoice_stamp.start_date
|
|
|
|
)
|
2019-01-16 20:23:28 +00:00
|
|
|
|
|
|
|
model project_member (
|
|
|
|
key member_id project_id
|
|
|
|
|
|
|
|
field member_id user.id cascade
|
|
|
|
field project_id project.id cascade
|
|
|
|
|
|
|
|
field created_at timestamp ( autoinsert )
|
|
|
|
)
|
|
|
|
|
2019-06-06 17:07:14 +01:00
|
|
|
create project_member ( )
|
|
|
|
delete project_member (
|
|
|
|
where project_member.member_id = ?
|
|
|
|
where project_member.project_id = ?
|
|
|
|
)
|
|
|
|
|
2019-01-16 20:23:28 +00:00
|
|
|
read all (
|
|
|
|
select project_member
|
|
|
|
where project_member.member_id = ?
|
|
|
|
)
|
|
|
|
read limitoffset (
|
|
|
|
select project_member
|
|
|
|
where project_member.project_id = ?
|
|
|
|
)
|
|
|
|
|
|
|
|
model api_key (
|
2019-03-06 15:54:48 +00:00
|
|
|
key id
|
2019-05-24 17:51:27 +01:00
|
|
|
unique head
|
2019-01-16 20:23:28 +00:00
|
|
|
unique name project_id
|
|
|
|
|
2019-03-06 15:54:48 +00:00
|
|
|
field id blob
|
|
|
|
field project_id project.id cascade
|
2019-05-24 17:51:27 +01:00
|
|
|
field head blob
|
2019-03-06 15:54:48 +00:00
|
|
|
field name text (updatable)
|
2019-05-24 17:51:27 +01:00
|
|
|
field secret blob
|
2019-07-12 18:59:19 +01:00
|
|
|
field partner_id blob (nullable)
|
2019-03-06 15:54:48 +00:00
|
|
|
field created_at timestamp (autoinsert)
|
2019-01-16 20:23:28 +00:00
|
|
|
)
|
|
|
|
|
2019-09-12 18:31:50 +01:00
|
|
|
create api_key ( )
|
2019-12-17 20:07:54 +00:00
|
|
|
update api_key (
|
2019-09-12 18:31:50 +01:00
|
|
|
where api_key.id = ?
|
|
|
|
noreturn
|
|
|
|
)
|
2019-01-16 20:23:28 +00:00
|
|
|
delete api_key ( where api_key.id = ? )
|
|
|
|
|
|
|
|
read one (
|
|
|
|
select api_key
|
|
|
|
where api_key.id = ?
|
|
|
|
)
|
|
|
|
read one (
|
|
|
|
select api_key
|
2019-05-24 17:51:27 +01:00
|
|
|
where api_key.head = ?
|
2019-01-16 20:23:28 +00:00
|
|
|
)
|
2019-10-10 14:28:35 +01:00
|
|
|
read one (
|
|
|
|
select api_key
|
|
|
|
where api_key.name = ?
|
|
|
|
where api_key.project_id = ?
|
|
|
|
)
|
2019-01-16 20:23:28 +00:00
|
|
|
read all (
|
|
|
|
select api_key
|
|
|
|
where api_key.project_id = ?
|
|
|
|
orderby asc api_key.name
|
2019-02-07 19:22:49 +00:00
|
|
|
)
|
|
|
|
|
2019-03-22 18:54:22 +00:00
|
|
|
//--- tracking serial numbers ---//
|
|
|
|
|
|
|
|
model serial_number (
|
|
|
|
key id
|
2019-03-26 10:34:30 +00:00
|
|
|
index (
|
|
|
|
name serial_number
|
|
|
|
fields serial_number
|
|
|
|
unique
|
|
|
|
)
|
2019-03-22 18:54:22 +00:00
|
|
|
|
|
|
|
field id serial
|
|
|
|
field serial_number blob
|
|
|
|
|
|
|
|
field bucket_id blob
|
|
|
|
field expires_at utimestamp
|
|
|
|
|
|
|
|
index (
|
|
|
|
fields expires_at
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
model used_serial (
|
2019-03-26 10:34:30 +00:00
|
|
|
key serial_number_id storage_node_id
|
2019-03-22 18:54:22 +00:00
|
|
|
|
|
|
|
field serial_number_id serial_number.id cascade
|
|
|
|
field storage_node_id blob
|
|
|
|
)
|
|
|
|
|
|
|
|
// inserting a new serial number
|
2019-09-12 18:31:50 +01:00
|
|
|
create serial_number ( noreturn )
|
2019-03-22 18:54:22 +00:00
|
|
|
|
|
|
|
// finding out information about the serial number
|
|
|
|
read scalar (
|
|
|
|
select serial_number
|
|
|
|
where serial_number.serial_number = ?
|
|
|
|
)
|
|
|
|
|
|
|
|
// deleting expired serial numbers
|
|
|
|
delete serial_number (
|
|
|
|
where serial_number.expires_at <= ?
|
|
|
|
)
|
|
|
|
|
|
|
|
// for preventing duplicate serial numbers
|
2019-09-12 18:31:50 +01:00
|
|
|
create used_serial ( noreturn )
|
2019-03-22 18:54:22 +00:00
|
|
|
|
2020-01-15 21:45:17 +00:00
|
|
|
model reported_serial (
|
|
|
|
// all of our access patterns care about if the serial is expired or not so we
|
|
|
|
// should put expires_at first in the primary key to get efficient scans. but,
|
|
|
|
// we also want to have rocksdb prefix compression to apply as much as possible
|
|
|
|
// to reduce data size for numerous benefits. so, we ceil the expires_at field
|
|
|
|
// to the next day so that we only have to store each storage node id only once
|
|
|
|
// per day. the other fields follow the same logic.
|
|
|
|
|
|
|
|
key expires_at storage_node_id bucket_id action serial_number
|
|
|
|
|
2020-01-16 18:02:15 +00:00
|
|
|
field expires_at timestamp // ceil'd to the next day
|
|
|
|
field storage_node_id blob // involved node id
|
|
|
|
field bucket_id blob // involved project id and bucket name
|
|
|
|
field action uint // action (get, put, audit, etc. see protobuf)
|
|
|
|
field serial_number blob // identifies order (required for uniqueness)
|
2020-01-15 21:45:17 +00:00
|
|
|
|
|
|
|
field settled uint64
|
2020-01-16 18:02:15 +00:00
|
|
|
field observed_at timestamp
|
2020-01-15 21:45:17 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
create reported_serial ( noreturn, replace )
|
|
|
|
read paged ( select reported_serial, where reported_serial.expires_at <= ? )
|
|
|
|
delete reported_serial ( where reported_serial.expires_at <= ? )
|
|
|
|
|
2019-03-28 02:46:49 +00:00
|
|
|
// --- bucket accounting tables --- //
|
2019-03-22 18:54:22 +00:00
|
|
|
|
|
|
|
model bucket_bandwidth_rollup (
|
2019-04-02 19:21:18 +01:00
|
|
|
key bucket_name project_id interval_start action
|
2019-03-22 18:54:22 +00:00
|
|
|
|
2019-04-02 19:21:18 +01:00
|
|
|
field bucket_name blob
|
|
|
|
field project_id blob
|
|
|
|
|
2019-03-22 18:54:22 +00:00
|
|
|
field interval_start utimestamp
|
|
|
|
field interval_seconds uint
|
|
|
|
field action uint
|
|
|
|
|
2019-04-01 21:14:58 +01:00
|
|
|
field inline uint64 ( updatable )
|
|
|
|
field allocated uint64 ( updatable )
|
|
|
|
field settled uint64 ( updatable )
|
|
|
|
)
|
|
|
|
|
|
|
|
read scalar (
|
|
|
|
select bucket_bandwidth_rollup
|
2019-04-02 19:21:18 +01:00
|
|
|
where bucket_bandwidth_rollup.bucket_name = ?
|
|
|
|
where bucket_bandwidth_rollup.project_id = ?
|
2019-04-01 21:14:58 +01:00
|
|
|
where bucket_bandwidth_rollup.interval_start = ?
|
|
|
|
where bucket_bandwidth_rollup.action = ?
|
2019-03-22 18:54:22 +00:00
|
|
|
)
|
|
|
|
|
2019-03-28 02:46:49 +00:00
|
|
|
model bucket_storage_tally (
|
2019-04-02 19:21:18 +01:00
|
|
|
key bucket_name project_id interval_start
|
|
|
|
|
|
|
|
field bucket_name blob
|
|
|
|
field project_id blob
|
2019-03-22 18:54:22 +00:00
|
|
|
|
|
|
|
field interval_start utimestamp
|
|
|
|
|
|
|
|
field inline uint64
|
|
|
|
field remote uint64
|
2019-04-10 07:04:24 +01:00
|
|
|
|
2019-03-28 02:46:49 +00:00
|
|
|
field remote_segments_count uint
|
|
|
|
field inline_segments_count uint
|
|
|
|
field object_count uint
|
|
|
|
|
|
|
|
field metadata_size uint64
|
2019-03-22 18:54:22 +00:00
|
|
|
)
|
|
|
|
|
2019-09-12 18:31:50 +01:00
|
|
|
create bucket_storage_tally ( noreturn )
|
2019-04-02 19:21:18 +01:00
|
|
|
|
|
|
|
read first (
|
|
|
|
select bucket_storage_tally
|
|
|
|
where bucket_storage_tally.project_id = ?
|
|
|
|
orderby desc bucket_storage_tally.interval_start
|
|
|
|
)
|
2019-04-01 14:42:17 +01:00
|
|
|
|
2019-09-12 18:31:50 +01:00
|
|
|
read all (
|
|
|
|
select bucket_storage_tally
|
|
|
|
)
|
|
|
|
|
2019-04-04 15:56:20 +01:00
|
|
|
read all (
|
|
|
|
select bucket_storage_tally
|
|
|
|
where bucket_storage_tally.project_id = ?
|
|
|
|
where bucket_storage_tally.bucket_name = ?
|
|
|
|
where bucket_storage_tally.interval_start >= ?
|
|
|
|
where bucket_storage_tally.interval_start <= ?
|
|
|
|
orderby desc bucket_storage_tally.interval_start
|
|
|
|
)
|
|
|
|
|
2019-03-28 02:46:49 +00:00
|
|
|
// --- storage node accounting tables --- //
|
2019-03-22 18:54:22 +00:00
|
|
|
|
|
|
|
model storagenode_bandwidth_rollup (
|
2019-03-26 10:34:30 +00:00
|
|
|
key storagenode_id interval_start action
|
2019-03-22 18:54:22 +00:00
|
|
|
|
|
|
|
field storagenode_id blob
|
|
|
|
field interval_start utimestamp
|
|
|
|
field interval_seconds uint
|
|
|
|
field action uint
|
|
|
|
|
2020-01-16 01:19:10 +00:00
|
|
|
field allocated uint64 ( updatable, nullable, default 0 )
|
2019-04-01 21:14:58 +01:00
|
|
|
field settled uint64 ( updatable )
|
|
|
|
)
|
|
|
|
|
|
|
|
read scalar (
|
|
|
|
select storagenode_bandwidth_rollup
|
|
|
|
where storagenode_bandwidth_rollup.storagenode_id = ?
|
|
|
|
where storagenode_bandwidth_rollup.interval_start = ?
|
|
|
|
where storagenode_bandwidth_rollup.action = ?
|
2019-03-22 18:54:22 +00:00
|
|
|
)
|
|
|
|
|
2019-04-04 16:20:59 +01:00
|
|
|
read all (
|
|
|
|
select storagenode_bandwidth_rollup
|
|
|
|
where storagenode_bandwidth_rollup.interval_start >= ?
|
|
|
|
)
|
|
|
|
|
2019-03-28 02:46:49 +00:00
|
|
|
model storagenode_storage_tally (
|
2019-05-10 20:05:42 +01:00
|
|
|
key id
|
2019-05-24 17:51:27 +01:00
|
|
|
|
2019-05-10 20:05:42 +01:00
|
|
|
field id serial64
|
|
|
|
field node_id blob
|
|
|
|
field interval_end_time timestamp
|
|
|
|
field data_total float64
|
|
|
|
)
|
2019-03-22 18:54:22 +00:00
|
|
|
|
2019-09-12 18:31:50 +01:00
|
|
|
create storagenode_storage_tally ( noreturn )
|
2019-05-10 20:05:42 +01:00
|
|
|
delete storagenode_storage_tally ( where storagenode_storage_tally.id = ? )
|
|
|
|
read one (
|
|
|
|
select storagenode_storage_tally
|
|
|
|
where storagenode_storage_tally.id = ?
|
|
|
|
)
|
|
|
|
read all (
|
|
|
|
select storagenode_storage_tally
|
|
|
|
)
|
|
|
|
read all (
|
|
|
|
select storagenode_storage_tally
|
|
|
|
where storagenode_storage_tally.interval_end_time >= ?
|
2019-03-22 18:54:22 +00:00
|
|
|
)
|
|
|
|
|
2019-08-26 17:49:42 +01:00
|
|
|
//--- peer_identity ---//
|
|
|
|
|
|
|
|
model peer_identity (
|
|
|
|
key node_id
|
|
|
|
|
|
|
|
field node_id blob
|
|
|
|
field leaf_serial_number blob (updatable)
|
2019-11-05 13:16:02 +00:00
|
|
|
field chain blob (updatable) // x509 ASN.1 DER content
|
2019-08-26 17:49:42 +01:00
|
|
|
field updated_at timestamp ( autoinsert, autoupdate )
|
|
|
|
)
|
|
|
|
|
2019-09-12 18:31:50 +01:00
|
|
|
create peer_identity ( noreturn )
|
2019-08-26 17:49:42 +01:00
|
|
|
update peer_identity (
|
|
|
|
where peer_identity.node_id = ?
|
2019-09-12 18:31:50 +01:00
|
|
|
noreturn
|
2019-08-26 17:49:42 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
read one (
|
|
|
|
select peer_identity
|
|
|
|
where peer_identity.node_id = ?
|
|
|
|
)
|
|
|
|
read one (
|
|
|
|
select peer_identity.leaf_serial_number
|
|
|
|
where peer_identity.node_id = ?
|
|
|
|
)
|
|
|
|
|
2019-03-19 17:55:43 +00:00
|
|
|
//--- satellite registration token for Vanguard release (temporary table) ---//
|
|
|
|
|
|
|
|
model registration_token (
|
|
|
|
key secret
|
|
|
|
unique owner_id
|
|
|
|
|
|
|
|
field secret blob
|
|
|
|
field owner_id blob ( updatable, nullable )
|
|
|
|
|
|
|
|
field project_limit int
|
|
|
|
|
|
|
|
field created_at timestamp ( autoinsert )
|
|
|
|
)
|
|
|
|
|
|
|
|
create registration_token ( )
|
|
|
|
read one (
|
|
|
|
select registration_token
|
|
|
|
where registration_token.secret = ?
|
|
|
|
)
|
|
|
|
read one (
|
|
|
|
select registration_token
|
|
|
|
where registration_token.owner_id = ?
|
|
|
|
)
|
|
|
|
update registration_token ( where registration_token.secret = ? )
|
2019-05-13 16:53:52 +01:00
|
|
|
|
|
|
|
//--- satellite reset password token ---//
|
|
|
|
|
|
|
|
model reset_password_token (
|
|
|
|
key secret
|
|
|
|
unique owner_id
|
|
|
|
|
|
|
|
field secret blob
|
|
|
|
field owner_id blob ( updatable )
|
|
|
|
|
|
|
|
field created_at timestamp ( autoinsert )
|
|
|
|
)
|
|
|
|
|
|
|
|
create reset_password_token ( )
|
|
|
|
read one (
|
|
|
|
select reset_password_token
|
|
|
|
where reset_password_token.secret = ?
|
|
|
|
)
|
|
|
|
read one (
|
|
|
|
select reset_password_token
|
|
|
|
where reset_password_token.owner_id = ?
|
|
|
|
)
|
|
|
|
delete reset_password_token ( where reset_password_token.secret = ? )
|
2019-05-22 22:41:55 +01:00
|
|
|
|
|
|
|
|
|
|
|
//--- offer table ---//
|
|
|
|
|
|
|
|
model offer (
|
|
|
|
key id
|
2019-06-18 10:14:31 +01:00
|
|
|
|
|
|
|
field id serial
|
2019-05-22 22:41:55 +01:00
|
|
|
field name text ( updatable )
|
|
|
|
field description text ( updatable )
|
2019-06-13 14:52:33 +01:00
|
|
|
|
|
|
|
field award_credit_in_cents int ( updatable )
|
2019-06-04 20:17:01 +01:00
|
|
|
field invitee_credit_in_cents int ( updatable )
|
|
|
|
|
2019-07-12 15:19:38 +01:00
|
|
|
field award_credit_duration_days int ( updatable, nullable )
|
|
|
|
field invitee_credit_duration_days int ( updatable, nullable )
|
2019-05-22 22:41:55 +01:00
|
|
|
|
2019-07-12 15:19:38 +01:00
|
|
|
field redeemable_cap int ( updatable, nullable )
|
2019-05-22 22:41:55 +01:00
|
|
|
|
2019-06-04 20:17:01 +01:00
|
|
|
field expires_at timestamp ( updatable )
|
2019-05-22 22:41:55 +01:00
|
|
|
field created_at timestamp ( autoinsert )
|
|
|
|
|
2019-07-08 19:39:56 +01:00
|
|
|
// status corresponds to the values of rewards.OfferStatus
|
2019-06-04 20:17:01 +01:00
|
|
|
field status int ( updatable )
|
2019-07-08 19:39:56 +01:00
|
|
|
// type corresponds to the values of rewards.OfferType
|
2019-06-04 20:17:01 +01:00
|
|
|
field type int ( updatable )
|
2019-05-22 22:41:55 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
read one (
|
|
|
|
select offer
|
|
|
|
where offer.id = ?
|
|
|
|
)
|
|
|
|
|
2019-06-04 20:17:01 +01:00
|
|
|
read all (
|
2019-05-22 22:41:55 +01:00
|
|
|
select offer
|
2019-07-12 15:19:38 +01:00
|
|
|
orderby asc offer.id
|
2019-05-22 22:41:55 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
update offer (
|
|
|
|
where offer.id = ?
|
2019-09-12 18:31:50 +01:00
|
|
|
noreturn
|
2019-05-22 22:41:55 +01:00
|
|
|
)
|
|
|
|
|
2019-06-04 20:17:01 +01:00
|
|
|
create offer ( )
|
2019-06-13 14:52:33 +01:00
|
|
|
|
|
|
|
|
|
|
|
//--- user credit table ---//
|
|
|
|
|
|
|
|
model user_credit (
|
2019-12-17 20:07:54 +00:00
|
|
|
key id
|
|
|
|
unique id offer_id
|
2019-12-11 23:49:57 +00:00
|
|
|
index (
|
2019-12-17 20:07:54 +00:00
|
|
|
name credits_earned_user_id_offer_id
|
|
|
|
fields id offer_id
|
|
|
|
unique
|
2019-12-11 23:49:57 +00:00
|
|
|
)
|
2019-06-13 14:52:33 +01:00
|
|
|
|
2019-12-17 20:07:54 +00:00
|
|
|
field id serial
|
2019-06-13 14:52:33 +01:00
|
|
|
|
2019-12-17 20:07:54 +00:00
|
|
|
field user_id user.id cascade
|
|
|
|
field offer_id offer.id restrict
|
|
|
|
field referred_by user.id setnull ( nullable )
|
|
|
|
field type text
|
2019-06-13 14:52:33 +01:00
|
|
|
|
2019-12-17 20:07:54 +00:00
|
|
|
field credits_earned_in_cents int
|
|
|
|
field credits_used_in_cents int ( updatable, autoinsert )
|
2019-06-13 14:52:33 +01:00
|
|
|
|
2019-12-17 20:07:54 +00:00
|
|
|
field expires_at timestamp ( updatable )
|
|
|
|
field created_at timestamp ( autoinsert )
|
2019-06-13 14:52:33 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
read all (
|
|
|
|
select user_credit
|
|
|
|
where user_credit.user_id = ?
|
|
|
|
where user_credit.expires_at > ?
|
|
|
|
where user_credit.credits_used_in_cents < user_credit.credits_earned_in_cents
|
|
|
|
orderby asc user_credit.expires_at
|
|
|
|
)
|
|
|
|
|
|
|
|
read count (
|
|
|
|
select user_credit
|
|
|
|
where user_credit.referred_by = ?
|
|
|
|
)
|
|
|
|
|
|
|
|
create user_credit ()
|
2019-07-01 21:45:21 +01:00
|
|
|
|
|
|
|
//--- metainfo buckets ---//
|
|
|
|
|
2019-07-03 23:03:56 +01:00
|
|
|
model bucket_metainfo (
|
2019-07-01 21:45:21 +01:00
|
|
|
key id
|
|
|
|
unique name project_id
|
|
|
|
|
|
|
|
field id blob
|
|
|
|
field project_id project.id restrict
|
|
|
|
field name blob
|
2019-07-19 16:17:34 +01:00
|
|
|
field partner_id blob (nullable, updatable)
|
2019-07-01 21:45:21 +01:00
|
|
|
|
|
|
|
field path_cipher int
|
|
|
|
|
|
|
|
field created_at timestamp ( autoinsert )
|
|
|
|
|
|
|
|
field default_segment_size int (updatable)
|
|
|
|
|
|
|
|
field default_encryption_cipher_suite int (updatable)
|
|
|
|
field default_encryption_block_size int (updatable)
|
|
|
|
|
|
|
|
field default_redundancy_algorithm int (updatable)
|
|
|
|
field default_redundancy_share_size int (updatable)
|
|
|
|
field default_redundancy_required_shares int (updatable)
|
|
|
|
field default_redundancy_repair_shares int (updatable)
|
|
|
|
field default_redundancy_optimal_shares int (updatable)
|
|
|
|
field default_redundancy_total_shares int (updatable)
|
|
|
|
)
|
|
|
|
|
2019-07-03 23:03:56 +01:00
|
|
|
create bucket_metainfo ()
|
2019-07-19 16:17:34 +01:00
|
|
|
update bucket_metainfo (
|
|
|
|
where bucket_metainfo.project_id = ?
|
|
|
|
where bucket_metainfo.name = ?
|
|
|
|
)
|
2019-07-01 21:45:21 +01:00
|
|
|
|
|
|
|
read one (
|
2019-07-03 23:03:56 +01:00
|
|
|
select bucket_metainfo
|
|
|
|
where bucket_metainfo.project_id = ?
|
|
|
|
where bucket_metainfo.name = ?
|
2019-07-01 21:45:21 +01:00
|
|
|
)
|
|
|
|
|
2019-07-03 23:03:56 +01:00
|
|
|
delete bucket_metainfo (
|
|
|
|
where bucket_metainfo.project_id = ?
|
|
|
|
where bucket_metainfo.name = ?
|
2019-07-01 21:45:21 +01:00
|
|
|
)
|
2019-07-08 23:32:18 +01:00
|
|
|
|
|
|
|
read limitoffset ( // Forward
|
|
|
|
select bucket_metainfo
|
|
|
|
where bucket_metainfo.project_id = ?
|
|
|
|
where bucket_metainfo.name >= ?
|
|
|
|
orderby asc bucket_metainfo.name
|
|
|
|
)
|
2019-07-12 13:57:02 +01:00
|
|
|
|
|
|
|
read limitoffset ( // After
|
|
|
|
select bucket_metainfo
|
|
|
|
where bucket_metainfo.project_id = ?
|
|
|
|
where bucket_metainfo.name > ?
|
|
|
|
orderby asc bucket_metainfo.name
|
|
|
|
)
|
2019-09-13 17:57:32 +01:00
|
|
|
|
|
|
|
//--- graceful exit progress ---//
|
|
|
|
|
|
|
|
model graceful_exit_progress (
|
|
|
|
table graceful_exit_progress
|
|
|
|
key node_id
|
|
|
|
|
|
|
|
field node_id blob
|
2019-09-25 18:12:44 +01:00
|
|
|
field bytes_transferred int64 ( updatable )
|
|
|
|
field pieces_transferred int64 ( autoinsert, updatable )
|
|
|
|
field pieces_failed int64 ( autoinsert, updatable )
|
|
|
|
field updated_at utimestamp ( autoinsert, autoupdate )
|
2019-09-13 17:57:32 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
create graceful_exit_progress ( noreturn )
|
2019-11-05 13:16:02 +00:00
|
|
|
update graceful_exit_progress (
|
2019-09-13 17:57:32 +01:00
|
|
|
where graceful_exit_progress.node_id = ?
|
|
|
|
noreturn
|
|
|
|
)
|
|
|
|
delete graceful_exit_progress ( where graceful_exit_progress.node_id = ? )
|
|
|
|
read one (
|
|
|
|
select graceful_exit_progress
|
2019-11-05 13:16:02 +00:00
|
|
|
where graceful_exit_progress.node_id = ?
|
2019-09-13 17:57:32 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
//--- graceful exit transfer queue ---//
|
|
|
|
|
|
|
|
model graceful_exit_transfer_queue (
|
|
|
|
table graceful_exit_transfer_queue
|
2019-10-28 15:08:33 +00:00
|
|
|
key node_id path piece_num
|
2019-09-13 17:57:32 +01:00
|
|
|
|
2019-11-13 14:54:50 +00:00
|
|
|
field node_id blob
|
|
|
|
field path blob
|
|
|
|
field piece_num int
|
|
|
|
field root_piece_id blob ( nullable )
|
|
|
|
field durability_ratio float64 ( updatable )
|
|
|
|
field queued_at utimestamp ( autoinsert )
|
|
|
|
field requested_at utimestamp ( updatable, nullable )
|
|
|
|
field last_failed_at utimestamp ( updatable, nullable )
|
|
|
|
field last_failed_code int ( updatable, nullable )
|
|
|
|
field failed_count int ( updatable, nullable )
|
|
|
|
field finished_at utimestamp ( updatable, nullable )
|
|
|
|
field order_limit_send_count int ( updatable )
|
2019-09-13 17:57:32 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
create graceful_exit_transfer_queue ( noreturn )
|
2019-11-05 13:16:02 +00:00
|
|
|
update graceful_exit_transfer_queue (
|
2019-09-13 17:57:32 +01:00
|
|
|
where graceful_exit_transfer_queue.node_id = ?
|
|
|
|
where graceful_exit_transfer_queue.path = ?
|
2019-10-28 15:08:33 +00:00
|
|
|
where graceful_exit_transfer_queue.piece_num = ?
|
2019-09-13 17:57:32 +01:00
|
|
|
noreturn
|
|
|
|
)
|
2019-11-05 13:16:02 +00:00
|
|
|
delete graceful_exit_transfer_queue (
|
2019-09-13 17:57:32 +01:00
|
|
|
where graceful_exit_transfer_queue.node_id = ?
|
|
|
|
)
|
|
|
|
|
2019-11-05 13:16:02 +00:00
|
|
|
delete graceful_exit_transfer_queue (
|
2019-09-13 17:57:32 +01:00
|
|
|
where graceful_exit_transfer_queue.node_id = ?
|
|
|
|
where graceful_exit_transfer_queue.path = ?
|
2019-10-28 15:08:33 +00:00
|
|
|
where graceful_exit_transfer_queue.piece_num = ?
|
2019-09-13 17:57:32 +01:00
|
|
|
)
|
2019-09-25 18:12:44 +01:00
|
|
|
|
2019-11-05 13:16:02 +00:00
|
|
|
delete graceful_exit_transfer_queue (
|
2019-09-25 18:12:44 +01:00
|
|
|
where graceful_exit_transfer_queue.node_id = ?
|
|
|
|
where graceful_exit_transfer_queue.finished_at != null
|
|
|
|
)
|
|
|
|
|
2019-11-05 13:16:02 +00:00
|
|
|
read one (
|
2019-09-13 17:57:32 +01:00
|
|
|
select graceful_exit_transfer_queue
|
|
|
|
where graceful_exit_transfer_queue.node_id = ?
|
|
|
|
where graceful_exit_transfer_queue.path = ?
|
2019-10-28 15:08:33 +00:00
|
|
|
where graceful_exit_transfer_queue.piece_num = ?
|
2019-09-13 17:57:32 +01:00
|
|
|
)
|
2019-10-10 18:12:23 +01:00
|
|
|
|
2019-12-27 22:03:03 +00:00
|
|
|
//--- downtime tracking ---//
|
|
|
|
|
|
|
|
model nodes_offline_time (
|
|
|
|
key node_id tracked_at
|
|
|
|
|
|
|
|
index (
|
|
|
|
fields node_id
|
|
|
|
)
|
|
|
|
|
|
|
|
field node_id blob
|
|
|
|
field tracked_at timestamp
|
|
|
|
field seconds int
|
|
|
|
)
|
|
|
|
|
|
|
|
create nodes_offline_time ()
|
|
|
|
|
|
|
|
read all (
|
|
|
|
select nodes_offline_time
|
|
|
|
where nodes_offline_time.node_id = ?
|
|
|
|
where nodes_offline_time.tracked_at > ?
|
|
|
|
where nodes_offline_time.tracked_at <= ?
|
|
|
|
)
|
|
|
|
|
2019-10-10 18:12:23 +01:00
|
|
|
//--- satellite payments ---//
|
|
|
|
|
2019-10-15 19:05:45 +01:00
|
|
|
model stripe_customer (
|
2019-10-10 18:12:23 +01:00
|
|
|
key user_id
|
|
|
|
unique customer_id
|
|
|
|
|
|
|
|
field user_id blob
|
|
|
|
field customer_id text
|
|
|
|
field created_at timestamp ( autoinsert )
|
|
|
|
)
|
|
|
|
|
2019-10-15 19:05:45 +01:00
|
|
|
create stripe_customer ( )
|
2019-11-05 13:16:02 +00:00
|
|
|
|
2019-10-11 16:00:35 +01:00
|
|
|
read one (
|
2019-10-15 19:05:45 +01:00
|
|
|
select stripe_customer.customer_id
|
|
|
|
where stripe_customer.user_id = ?
|
2019-10-17 15:04:50 +01:00
|
|
|
)
|
2019-11-05 13:16:02 +00:00
|
|
|
read limitoffset (
|
|
|
|
select stripe_customer
|
|
|
|
where stripe_customer.created_at <= ?
|
|
|
|
orderby desc stripe_customer.created_at
|
|
|
|
)
|
2019-10-17 15:04:50 +01:00
|
|
|
|
|
|
|
model coinpayments_transaction (
|
|
|
|
key id
|
|
|
|
|
2019-11-15 14:59:39 +00:00
|
|
|
field id text
|
|
|
|
field user_id blob
|
|
|
|
field address text
|
|
|
|
field amount blob
|
|
|
|
field received blob ( updatable )
|
|
|
|
field status int ( updatable )
|
|
|
|
field key text
|
|
|
|
field timeout int
|
2019-10-17 15:04:50 +01:00
|
|
|
|
|
|
|
field created_at timestamp ( autoinsert )
|
|
|
|
)
|
|
|
|
|
|
|
|
create coinpayments_transaction ()
|
2019-10-23 13:04:54 +01:00
|
|
|
update coinpayments_transaction ( where coinpayments_transaction.id = ? )
|
|
|
|
|
2019-11-12 11:14:34 +00:00
|
|
|
read all (
|
|
|
|
select coinpayments_transaction
|
|
|
|
where coinpayments_transaction.user_id = ?
|
|
|
|
orderby desc coinpayments_transaction.created_at
|
|
|
|
)
|
2019-10-23 13:04:54 +01:00
|
|
|
read limitoffset (
|
|
|
|
select coinpayments_transaction
|
|
|
|
where coinpayments_transaction.created_at <= ?
|
|
|
|
where coinpayments_transaction.status = ?
|
|
|
|
orderby desc coinpayments_transaction.created_at
|
|
|
|
)
|
2019-10-29 16:04:34 +00:00
|
|
|
|
|
|
|
model stripecoinpayments_apply_balance_intent (
|
|
|
|
key tx_id
|
|
|
|
|
|
|
|
field tx_id coinpayments_transaction.id cascade
|
|
|
|
field state int ( updatable )
|
|
|
|
|
|
|
|
field created_at timestamp ( autoinsert )
|
|
|
|
)
|
|
|
|
|
|
|
|
create stripecoinpayments_apply_balance_intent ()
|
|
|
|
update stripecoinpayments_apply_balance_intent (
|
|
|
|
where stripecoinpayments_apply_balance_intent.tx_id = ?
|
|
|
|
)
|
|
|
|
delete stripecoinpayments_apply_balance_intent (
|
|
|
|
where stripecoinpayments_apply_balance_intent.tx_id = ?
|
|
|
|
)
|
|
|
|
|
2019-11-05 13:16:02 +00:00
|
|
|
model stripecoinpayments_invoice_project_record (
|
|
|
|
key id
|
|
|
|
|
|
|
|
unique project_id period_start period_end
|
|
|
|
|
|
|
|
field id blob
|
|
|
|
field project_id blob
|
|
|
|
field storage float64
|
|
|
|
field egress int64
|
|
|
|
field objects int64
|
|
|
|
field period_start timestamp
|
|
|
|
field period_end timestamp
|
|
|
|
field state int ( updatable )
|
|
|
|
|
|
|
|
field created_at timestamp ( autoinsert )
|
|
|
|
)
|
|
|
|
|
|
|
|
create stripecoinpayments_invoice_project_record ()
|
|
|
|
update stripecoinpayments_invoice_project_record (
|
|
|
|
where stripecoinpayments_invoice_project_record.id = ?
|
|
|
|
)
|
|
|
|
delete stripecoinpayments_invoice_project_record (
|
|
|
|
where stripecoinpayments_invoice_project_record.id = ?
|
|
|
|
)
|
|
|
|
|
|
|
|
read one (
|
|
|
|
select stripecoinpayments_invoice_project_record
|
|
|
|
where stripecoinpayments_invoice_project_record.project_id = ?
|
|
|
|
where stripecoinpayments_invoice_project_record.period_start = ?
|
|
|
|
where stripecoinpayments_invoice_project_record.period_end = ?
|
|
|
|
)
|
|
|
|
read limitoffset (
|
|
|
|
select stripecoinpayments_invoice_project_record
|
|
|
|
where stripecoinpayments_invoice_project_record.created_at <= ?
|
|
|
|
where stripecoinpayments_invoice_project_record.state = ?
|
|
|
|
orderby desc stripecoinpayments_invoice_project_record.created_at
|
|
|
|
)
|
2019-11-15 14:59:39 +00:00
|
|
|
|
|
|
|
model stripecoinpayments_tx_conversion_rate (
|
|
|
|
key tx_id
|
|
|
|
|
|
|
|
field tx_id text
|
|
|
|
field rate blob
|
|
|
|
|
|
|
|
field created_at timestamp ( autoinsert )
|
|
|
|
)
|
|
|
|
|
|
|
|
create stripecoinpayments_tx_conversion_rate ()
|
|
|
|
|
|
|
|
read one (
|
|
|
|
select stripecoinpayments_tx_conversion_rate
|
|
|
|
where stripecoinpayments_tx_conversion_rate.tx_id = ?
|
|
|
|
)
|
2019-11-26 17:58:51 +00:00
|
|
|
|
|
|
|
model coupon (
|
|
|
|
key id
|
|
|
|
|
|
|
|
field id blob
|
|
|
|
field project_id blob
|
|
|
|
field user_id blob
|
|
|
|
field amount int64
|
|
|
|
field description text
|
2020-01-07 10:41:19 +00:00
|
|
|
field type int
|
2019-11-26 17:58:51 +00:00
|
|
|
field status int ( updatable )
|
|
|
|
field duration int64
|
|
|
|
|
|
|
|
field created_at timestamp ( autoinsert )
|
|
|
|
)
|
|
|
|
|
|
|
|
create coupon ()
|
|
|
|
update coupon (
|
|
|
|
where coupon.id = ?
|
|
|
|
)
|
|
|
|
delete coupon (
|
|
|
|
where coupon.id = ?
|
|
|
|
)
|
2020-01-07 10:41:19 +00:00
|
|
|
read one (
|
|
|
|
select coupon
|
|
|
|
where coupon.id = ?
|
|
|
|
)
|
|
|
|
read all (
|
|
|
|
select coupon
|
|
|
|
where coupon.project_id = ?
|
|
|
|
where coupon.status = 0
|
|
|
|
orderby desc coupon.created_at
|
|
|
|
)
|
2019-11-26 17:58:51 +00:00
|
|
|
read all (
|
|
|
|
select coupon
|
|
|
|
where coupon.user_id = ?
|
|
|
|
orderby desc coupon.created_at
|
|
|
|
)
|
2020-01-07 10:41:19 +00:00
|
|
|
read all (
|
|
|
|
select coupon
|
|
|
|
where coupon.user_id = ?
|
|
|
|
where coupon.status = ?
|
|
|
|
orderby desc coupon.created_at
|
|
|
|
)
|
2019-11-26 17:58:51 +00:00
|
|
|
read all (
|
|
|
|
select coupon
|
|
|
|
where coupon.status = ?
|
|
|
|
orderby desc coupon.created_at
|
|
|
|
)
|
|
|
|
read limitoffset (
|
|
|
|
select coupon
|
|
|
|
where coupon.created_at <= ?
|
|
|
|
where coupon.status = ?
|
|
|
|
orderby desc coupon.created_at
|
|
|
|
)
|
|
|
|
model coupon_usage (
|
2020-01-07 10:41:19 +00:00
|
|
|
key coupon_id period
|
2019-11-26 17:58:51 +00:00
|
|
|
|
2020-01-07 10:41:19 +00:00
|
|
|
field coupon_id blob
|
|
|
|
field amount int64
|
|
|
|
field status int ( updatable )
|
|
|
|
field period timestamp
|
2019-11-26 17:58:51 +00:00
|
|
|
)
|
|
|
|
create coupon_usage ()
|
2020-01-07 10:41:19 +00:00
|
|
|
read limitoffset (
|
|
|
|
select coupon_usage
|
|
|
|
where coupon_usage.period <= ?
|
|
|
|
where coupon_usage.status = 0
|
|
|
|
orderby desc coupon_usage.period
|
|
|
|
)
|
|
|
|
update coupon_usage (
|
|
|
|
where coupon_usage.coupon_id = ?
|
|
|
|
where coupon_usage.period = ?
|
|
|
|
)
|
2020-01-24 13:38:53 +00:00
|
|
|
|
|
|
|
model credit (
|
2020-02-11 21:15:13 +00:00
|
|
|
key transaction_id
|
2020-01-24 13:38:53 +00:00
|
|
|
|
2020-02-11 21:15:13 +00:00
|
|
|
field user_id blob
|
|
|
|
field transaction_id text
|
|
|
|
field amount int64
|
2020-01-24 13:38:53 +00:00
|
|
|
|
2020-02-11 21:15:13 +00:00
|
|
|
field created_at timestamp ( autoinsert )
|
2020-01-24 13:38:53 +00:00
|
|
|
)
|
|
|
|
|
2020-02-11 21:15:13 +00:00
|
|
|
create credit ( )
|
|
|
|
|
2020-01-24 13:38:53 +00:00
|
|
|
read one (
|
2020-02-11 21:15:13 +00:00
|
|
|
select credit
|
|
|
|
where credit.transaction_id = ?
|
2020-01-24 13:38:53 +00:00
|
|
|
)
|
2020-02-11 21:15:13 +00:00
|
|
|
|
2020-01-24 13:38:53 +00:00
|
|
|
read all (
|
2020-02-11 21:15:13 +00:00
|
|
|
select credit
|
|
|
|
where credit.user_id = ?
|
|
|
|
orderby desc credit.created_at
|
2020-01-24 13:38:53 +00:00
|
|
|
)
|
2020-02-11 21:15:13 +00:00
|
|
|
|
2020-01-24 13:38:53 +00:00
|
|
|
read limitoffset (
|
2020-02-11 21:15:13 +00:00
|
|
|
select credit
|
|
|
|
where credit.user_id = ?
|
|
|
|
where credit.created_at <= ?
|
|
|
|
orderby desc credit.created_at
|
2020-01-24 13:38:53 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
model credits_spending (
|
2020-02-11 21:15:13 +00:00
|
|
|
key id
|
2020-01-24 13:38:53 +00:00
|
|
|
|
2020-02-11 21:15:13 +00:00
|
|
|
field id blob
|
|
|
|
field user_id blob
|
|
|
|
field project_id blob
|
|
|
|
field amount int64
|
|
|
|
field status int ( updatable )
|
2020-01-24 13:38:53 +00:00
|
|
|
|
2020-02-11 21:15:13 +00:00
|
|
|
field created_at timestamp ( autoinsert )
|
2020-01-24 13:38:53 +00:00
|
|
|
)
|
|
|
|
|
2020-02-11 21:15:13 +00:00
|
|
|
create credits_spending ( )
|
|
|
|
|
2020-01-24 13:38:53 +00:00
|
|
|
update credits_spending (
|
2020-02-11 21:15:13 +00:00
|
|
|
where credits_spending.id = ?
|
2020-01-24 13:38:53 +00:00
|
|
|
)
|
2020-02-11 21:15:13 +00:00
|
|
|
|
2020-01-24 13:38:53 +00:00
|
|
|
read all (
|
2020-02-11 21:15:13 +00:00
|
|
|
select credits_spending
|
|
|
|
where credits_spending.user_id = ?
|
|
|
|
orderby desc credits_spending.created_at
|
2020-01-24 13:38:53 +00:00
|
|
|
)
|
2020-02-11 21:15:13 +00:00
|
|
|
|
2020-01-24 13:38:53 +00:00
|
|
|
read limitoffset (
|
2020-02-11 21:15:13 +00:00
|
|
|
select credits_spending
|
|
|
|
where credits_spending.created_at <= ?
|
|
|
|
where credits_spending.status = ?
|
|
|
|
orderby desc credits_spending.created_at
|
2020-01-24 13:38:53 +00:00
|
|
|
)
|