297b393dfd
* initial schema declaration * fix typo * split database * fix syntax errors and generate code * add queries for serial number manipulation * update comment * add migration script * fix comments * add new data * fix bucket id
519 lines
11 KiB
Plaintext
519 lines
11 KiB
Plaintext
// dbx.v1 golang satellitedb.dbx .
|
|
|
|
//--- bwagreement ---//
|
|
|
|
model bwagreement (
|
|
key serialnum
|
|
|
|
field serialnum text
|
|
field storage_node_id blob
|
|
field uplink_id blob
|
|
field action int64
|
|
field total int64
|
|
field created_at timestamp ( autoinsert )
|
|
field expires_at timestamp
|
|
)
|
|
|
|
|
|
//--- irreparableDB ---//
|
|
|
|
model irreparabledb (
|
|
key segmentpath
|
|
|
|
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 )
|
|
)
|
|
|
|
create irreparabledb ( )
|
|
update irreparabledb ( where irreparabledb.segmentpath = ? )
|
|
delete irreparabledb ( where irreparabledb.segmentpath = ? )
|
|
|
|
read one (
|
|
select irreparabledb
|
|
where irreparabledb.segmentpath = ?
|
|
)
|
|
|
|
read limitoffset (
|
|
select irreparabledb
|
|
orderby asc irreparabledb.segmentpath
|
|
)
|
|
|
|
//--- accounting ---//
|
|
|
|
// accounting_timestamps just allows us to save the last time/thing that happened
|
|
model accounting_timestamps (
|
|
key name
|
|
|
|
field name text
|
|
field value timestamp ( updatable )
|
|
)
|
|
|
|
create accounting_timestamps ( )
|
|
update accounting_timestamps ( where accounting_timestamps.name = ? )
|
|
|
|
read scalar (
|
|
select accounting_timestamps.value
|
|
where accounting_timestamps.name = ?
|
|
)
|
|
|
|
model accounting_rollup (
|
|
key id
|
|
|
|
field id serial64
|
|
field node_id blob
|
|
field start_time timestamp
|
|
field put_total int64
|
|
field get_total int64
|
|
field get_audit_total int64
|
|
field get_repair_total int64
|
|
field put_repair_total int64
|
|
field at_rest_total float64
|
|
)
|
|
|
|
create accounting_rollup ( )
|
|
delete accounting_rollup ( where accounting_rollup.id = ? )
|
|
|
|
read one (
|
|
select accounting_rollup
|
|
where accounting_rollup.id = ?
|
|
)
|
|
|
|
read all (
|
|
select accounting_rollup
|
|
where accounting_rollup.start_time >= ?
|
|
)
|
|
|
|
model accounting_raw (
|
|
key id
|
|
|
|
field id serial64
|
|
field node_id blob
|
|
field interval_end_time timestamp
|
|
field data_total float64
|
|
field data_type int
|
|
field created_at timestamp
|
|
)
|
|
|
|
create accounting_raw ( )
|
|
delete accounting_raw ( where accounting_raw.id = ? )
|
|
|
|
read one (
|
|
select accounting_raw
|
|
where accounting_raw.id = ?
|
|
)
|
|
|
|
read all (
|
|
select accounting_raw
|
|
)
|
|
|
|
read all (
|
|
select accounting_raw
|
|
where accounting_raw.interval_end_time >= ?
|
|
)
|
|
|
|
//--- statdb ---//
|
|
|
|
model node (
|
|
key id
|
|
|
|
field id blob
|
|
field audit_success_count int64 ( updatable )
|
|
field total_audit_count int64 ( updatable )
|
|
field audit_success_ratio float64 ( updatable )
|
|
|
|
field uptime_success_count int64 ( updatable )
|
|
field total_uptime_count int64 ( updatable )
|
|
field uptime_ratio float64 ( updatable )
|
|
|
|
field created_at timestamp ( autoinsert )
|
|
field updated_at timestamp ( autoinsert, autoupdate )
|
|
|
|
field wallet text ( updatable )
|
|
field email text ( updatable )
|
|
)
|
|
|
|
create node ( )
|
|
update node ( where node.id = ? )
|
|
delete node ( where node.id = ? )
|
|
|
|
// "Get" query; fails if node not found
|
|
read one (
|
|
select node
|
|
where node.id = ?
|
|
)
|
|
|
|
// "Find" query; returns nil if node not found
|
|
read scalar (
|
|
select node
|
|
where node.id = ?
|
|
)
|
|
|
|
read all (
|
|
select node.id
|
|
)
|
|
|
|
//--- overlaycache ---//
|
|
|
|
model overlay_cache_node (
|
|
key node_id
|
|
unique node_id
|
|
|
|
field node_id blob
|
|
field node_type int
|
|
|
|
field address text (updatable) // TODO: use compressed format
|
|
field protocol int (updatable)
|
|
|
|
field operator_email text (updatable)
|
|
field operator_wallet text (updatable) //TODO: use compressed format
|
|
|
|
field free_bandwidth int64 (updatable)
|
|
field free_disk int64 (updatable)
|
|
|
|
field latency_90 int64 (updatable)
|
|
|
|
field audit_success_ratio float64 (updatable)
|
|
field audit_uptime_ratio float64 (updatable)
|
|
field audit_count int64 (updatable)
|
|
field audit_success_count int64 (updatable)
|
|
|
|
field uptime_count int64 (updatable)
|
|
field uptime_success_count int64 (updatable)
|
|
)
|
|
|
|
create overlay_cache_node ( )
|
|
|
|
read one (
|
|
select overlay_cache_node
|
|
where overlay_cache_node.node_id = ?
|
|
)
|
|
|
|
read limitoffset (
|
|
select overlay_cache_node
|
|
where overlay_cache_node.node_id >= ?
|
|
)
|
|
|
|
update overlay_cache_node ( where overlay_cache_node.node_id = ? )
|
|
delete overlay_cache_node ( where overlay_cache_node.node_id = ? )
|
|
|
|
//--- repairqueue ---//
|
|
|
|
model injuredsegment (
|
|
key id
|
|
|
|
field id serial64
|
|
field info blob
|
|
)
|
|
|
|
create injuredsegment ( )
|
|
|
|
read first (
|
|
select injuredsegment
|
|
)
|
|
|
|
read limitoffset (
|
|
select injuredsegment
|
|
)
|
|
delete injuredsegment ( where injuredsegment.id = ? )
|
|
|
|
//--- satellite console ---//
|
|
|
|
model user (
|
|
key id
|
|
|
|
field id blob
|
|
field first_name text ( updatable )
|
|
field last_name text ( updatable )
|
|
|
|
field email text ( updatable )
|
|
field password_hash blob ( updatable )
|
|
|
|
field status int ( updatable, autoinsert )
|
|
|
|
field created_at timestamp ( autoinsert )
|
|
)
|
|
read one (
|
|
select user
|
|
where user.email = ?
|
|
where user.status != 0
|
|
)
|
|
read one (
|
|
select user
|
|
where user.id = ?
|
|
)
|
|
create user ( )
|
|
update user ( where user.id = ? )
|
|
delete user ( where user.id = ? )
|
|
|
|
|
|
model project (
|
|
key id
|
|
|
|
field id blob
|
|
|
|
field name text
|
|
field description text ( updatable )
|
|
|
|
field created_at timestamp ( autoinsert )
|
|
)
|
|
read all ( select project)
|
|
read one (
|
|
select project
|
|
where project.id = ?
|
|
)
|
|
read all (
|
|
select project
|
|
join project.id = project_member.project_id
|
|
where project_member.member_id = ?
|
|
orderby asc project.name
|
|
)
|
|
create project ( )
|
|
update project ( where project.id = ? )
|
|
delete project ( where project.id = ? )
|
|
|
|
|
|
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 )
|
|
)
|
|
|
|
read all (
|
|
select project_member
|
|
where project_member.member_id = ?
|
|
)
|
|
read limitoffset (
|
|
select project_member
|
|
where project_member.project_id = ?
|
|
)
|
|
create project_member ( )
|
|
delete project_member (
|
|
where project_member.member_id = ?
|
|
where project_member.project_id = ?
|
|
)
|
|
|
|
model api_key (
|
|
key id
|
|
unique key
|
|
unique name project_id
|
|
|
|
field id blob
|
|
field project_id project.id cascade
|
|
|
|
field key blob
|
|
|
|
field name text (updatable)
|
|
|
|
field created_at timestamp (autoinsert)
|
|
)
|
|
|
|
create api_key ()
|
|
update api_key ( where api_key.id = ? )
|
|
delete api_key ( where api_key.id = ? )
|
|
|
|
read one (
|
|
select api_key
|
|
where api_key.id = ?
|
|
)
|
|
read one (
|
|
select api_key
|
|
where api_key.key = ?
|
|
)
|
|
read all (
|
|
select api_key
|
|
where api_key.project_id = ?
|
|
orderby asc api_key.name
|
|
)
|
|
|
|
//-----bucket_usage----//
|
|
|
|
model bucket_usage (
|
|
key id
|
|
unique rollup_end_time bucket_id
|
|
|
|
field id blob
|
|
field bucket_id blob //--TODO: add foreign key constraint--//
|
|
|
|
field rollup_end_time timestamp
|
|
|
|
field remote_stored_data uint64
|
|
field inline_stored_data uint64
|
|
field remote_segments uint
|
|
field inline_segments uint
|
|
field objects uint
|
|
field metadata_size uint64
|
|
field repair_egress uint64
|
|
field get_egress uint64
|
|
field audit_egress uint64
|
|
)
|
|
|
|
create bucket_usage ()
|
|
delete bucket_usage ( where bucket_usage.id = ? )
|
|
|
|
read one (
|
|
select bucket_usage
|
|
where bucket_usage.id = ?
|
|
)
|
|
|
|
read limitoffset (
|
|
select bucket_usage
|
|
where bucket_usage.bucket_id = ?
|
|
where bucket_usage.rollup_end_time > ?
|
|
where bucket_usage.rollup_end_time <= ?
|
|
orderby asc bucket_usage.rollup_end_time
|
|
)
|
|
|
|
read limitoffset (
|
|
select bucket_usage
|
|
where bucket_usage.bucket_id = ?
|
|
where bucket_usage.rollup_end_time > ?
|
|
where bucket_usage.rollup_end_time <= ?
|
|
orderby desc bucket_usage.rollup_end_time
|
|
)
|
|
|
|
//--- tracking serial numbers ---//
|
|
|
|
model serial_number (
|
|
key id
|
|
unique serial_number
|
|
|
|
field id serial
|
|
field serial_number blob
|
|
|
|
field bucket_id blob
|
|
field expires_at utimestamp
|
|
|
|
index (
|
|
fields expires_at
|
|
)
|
|
)
|
|
|
|
model used_serial (
|
|
key serial_number_id
|
|
unique serial_number_id storage_node_id
|
|
|
|
field serial_number_id serial_number.id cascade
|
|
field storage_node_id blob
|
|
)
|
|
|
|
// inserting a new serial number
|
|
create serial_number ()
|
|
|
|
// 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
|
|
create used_serial ()
|
|
|
|
// --- bucket roll up tables --- //
|
|
|
|
model bucket_bandwidth_rollup (
|
|
key bucket_id
|
|
unique bucket_id interval_start interval_seconds action
|
|
|
|
field bucket_id blob
|
|
field interval_start utimestamp
|
|
field interval_seconds uint
|
|
field action uint
|
|
|
|
field inline uint64
|
|
field allocated uint64
|
|
field settled uint64
|
|
)
|
|
|
|
model bucket_storage_rollup (
|
|
key bucket_id
|
|
unique bucket_id interval_start interval_seconds
|
|
|
|
field bucket_id blob
|
|
field interval_start utimestamp
|
|
field interval_seconds uint
|
|
|
|
field inline uint64
|
|
field remote uint64
|
|
)
|
|
|
|
// --- storage node roll up tables --- //
|
|
|
|
model storagenode_bandwidth_rollup (
|
|
key storagenode_id
|
|
unique storagenode_id interval_start interval_seconds action
|
|
|
|
field storagenode_id blob
|
|
field interval_start utimestamp
|
|
field interval_seconds uint
|
|
field action uint
|
|
|
|
field allocated uint64
|
|
field settled uint64
|
|
)
|
|
|
|
model storagenode_storage_rollup (
|
|
key storagenode_id
|
|
unique storagenode_id interval_start interval_seconds
|
|
|
|
field storagenode_id blob
|
|
field interval_start utimestamp
|
|
field interval_seconds uint
|
|
|
|
field total uint64
|
|
)
|
|
|
|
//--- certRecord ---//
|
|
|
|
model certRecord (
|
|
key id
|
|
|
|
field publickey blob //--uplink public key--//
|
|
field id blob //--uplink node id --//
|
|
field update_at timestamp ( autoinsert, autoupdate )
|
|
)
|
|
|
|
create certRecord ( )
|
|
delete certRecord ( where certRecord.id = ? )
|
|
update certRecord ( where certRecord.id = ? )
|
|
|
|
read one (
|
|
select certRecord
|
|
where certRecord.id = ?
|
|
)
|
|
|
|
//--- 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 = ? )
|