// --- storage node payment tables --- // model storagenode_paystub ( // The (period, node_id) tuple is the primary key. The primary key index // should serve for quick queries for all paystubs in a given period since // it comes first but efficient queries for all paystubs with a given // node_id will require a distinct index. key period node_id index ( fields node_id ) field period text // YYYY-MM, e.g. 2020-02 field node_id blob // field created_at timestamp ( autoinsert ) // field codes text // colon separated list field usage_at_rest float64 // byte-hours of data at rest field usage_get int64 // bytes of bandwidth field usage_put int64 // bytes of bandwidth field usage_get_repair int64 // bytes of bandwidth field usage_put_repair int64 // bytes of bandwidth field usage_get_audit int64 // bytes of bandwidth field comp_at_rest int64 // in micro-units of currency field comp_get int64 // in micro-units of currency field comp_put int64 // in micro-units of currency field comp_get_repair int64 // in micro-units of currency field comp_put_repair int64 // in micro-units of currency field comp_get_audit int64 // in micro-units of currency field surge_percent int64 // percentage field held int64 // in micro-units of currency field owed int64 // in micro-units of currency field disposed int64 // in micro-units of currency field paid int64 // in micro-units of currency field distributed int64 // in micro-units of currency ) create storagenode_paystub ( noreturn, replace ) read one ( select storagenode_paystub where storagenode_paystub.node_id = ? where storagenode_paystub.period = ? ) read all ( select storagenode_paystub where storagenode_paystub.node_id = ? ) model storagenode_payment ( key id index ( fields node_id period ) field id serial64 // field created_at timestamp ( autoinsert ) // field node_id blob // field period text // YYYY-MM, e.g. 2020-02 field amount int64 // in micro-units of currency field receipt text ( nullable ) // field notes text ( nullable ) // ) create storagenode_payment ( noreturn ) read limitoffset ( select storagenode_payment where storagenode_payment.node_id = ? where storagenode_payment.period = ? orderby desc storagenode_payment.id ) read all ( select storagenode_payment where storagenode_payment.node_id = ? ) read all ( select storagenode_payment where storagenode_payment.node_id = ? where storagenode_payment.period = ? )