storj/satellite/satellitedb/dbx/project_bucket.dbx
Vitalii 1eee2fad69 satellite/{db, admin}: added endpoints to update user's and project's user_agent
Added backend (for now) implementation for updating user's and projects's user_agent using admin API.
Updating both user and project also updates bucket_metainfo and value_attribution tables.

Issue:
https://github.com/storj/storj-private/issues/297

Change-Id: I40244bbaa08b46834c1b1d0720e7d84d0c2a0330
2023-06-16 19:41:05 +00:00

169 lines
5.7 KiB
Plaintext

// bucket_metainfo contains information about a bucket in a project.
model bucket_metainfo (
key id
unique project_id name
// id is an UUID for the bucket.
field id blob
// project_id is the project the bucket belongs to.
field project_id project.id restrict
// name is a unique name inside the project.
// it's a alphanumeric string similar to domain names.
field name blob
// user_agent is the first User-Agent that was used to upload data,
// unless the user signed up with a specific partner.
// note: this field is duplicated in value_attribution.user_agent.
field user_agent blob (nullable, updatable)
// path_cipher is denotes how the paths have been encoded.
// The corresponding type storj.CipherSuite contains the relevant values.
// deprecated: in favor of a storing it in an access grant.
field path_cipher int
// created_at indicates when the bucket was created.
field created_at timestamp ( autoinsert )
// default_segment_size contains the segment size to use for uploading.
// deprecated: in favor of global metainfo service settings.
field default_segment_size int (updatable)
// default_encryption_cipher_suite is the storj.CipherSuite used for the bucket objects.
// deprecated: in favor of global metainfo service settings.
field default_encryption_cipher_suite int (updatable)
// default_encryption_block_size is the block size argument for encryption.
// deprecated: in favor of global metainfo service settings.
field default_encryption_block_size int (updatable)
// default_redundancy_algorithm is storj.RedundancyAlgorithm.
// deprecated: in favor of global metainfo service settings.
field default_redundancy_algorithm int (updatable)
// default_redundancy_share_size is share size parameter for Reed-Solomon encoding.
// deprecated: in favor of global metainfo service settings.
field default_redundancy_share_size int (updatable)
// default_redundancy_required_shares is required shares parameter for Reed-Solomon encoding.
// deprecated: in favor of global metainfo service settings.
field default_redundancy_required_shares int (updatable)
// default_redundancy_repair_shares is repair threshold parameter for Reed-Solomon encoding.
// deprecated: in favor of global metainfo service settings.
field default_redundancy_repair_shares int (updatable)
// default_redundancy_optimal_shares is optional share count parameter for Reed-Solomon encoding.
// deprecated: in favor of global metainfo service settings.
field default_redundancy_optimal_shares int (updatable)
// default_redundancy_total_shares is total number of shares for Reed-Solomon encoding.
// deprecated: in favor of global metainfo service settings.
field default_redundancy_total_shares int (updatable)
// placement indicates how the objects should be stored in this bucket.
// See storj.PlacementConstraint for the relevant information:
// 0 - every country
// 1 - EU
// 2 - EEA
// 3 - US
// 4 - DE
// 5 - Invalid, when there's no information about the placement.
// 6 - NR (no Russia, Belarus or other sanctioned country)
field placement int (nullable, updatable)
)
create bucket_metainfo ()
update bucket_metainfo (
where bucket_metainfo.project_id = ?
where bucket_metainfo.name = ?
)
read one (
select bucket_metainfo
where bucket_metainfo.project_id = ?
where bucket_metainfo.name = ?
)
read one (
select bucket_metainfo.created_at
where bucket_metainfo.project_id = ?
where bucket_metainfo.name = ?
)
read one (
select bucket_metainfo.id
where bucket_metainfo.project_id = ?
where bucket_metainfo.name = ?
)
read one (
select bucket_metainfo.placement
where bucket_metainfo.project_id = ?
where bucket_metainfo.name = ?
)
read one (
select bucket_metainfo.user_agent
where bucket_metainfo.project_id = ?
where bucket_metainfo.name = ?
)
read has (
select bucket_metainfo
where bucket_metainfo.project_id = ?
where bucket_metainfo.name = ?
)
delete bucket_metainfo (
where bucket_metainfo.project_id = ?
where bucket_metainfo.name = ?
)
read limitoffset ( // Forward
select bucket_metainfo
where bucket_metainfo.project_id = ?
where bucket_metainfo.name >= ?
orderby asc bucket_metainfo.name
)
read limitoffset ( // After
select bucket_metainfo
where bucket_metainfo.project_id = ?
where bucket_metainfo.name > ?
orderby asc bucket_metainfo.name
)
read count (
select bucket_metainfo.name
where bucket_metainfo.project_id = ?
)
// value_attribution table contains information about which user-agent
// is used to create the project. It's being stored outside of the projects
// table because this information can be still needed after deleting the
// project.
model value_attribution (
key project_id bucket_name
// project_id is an UUID that refers to project.id.
// note: this field is duplicated in bucket_metainfo.project_id.
field project_id blob
// bucket_name refers to bucket_metainfo.name.
// This does not use the id, because we need the attribution to last
// beyond the lifetime of bucket_metainfo row.
field bucket_name blob
// user_agent is the first User-Agent that was used to upload data.
// unless the user signed up with a specific partner.
// note: this field is duplicated in bucket_metainfo.user_agent.
field user_agent blob ( updatable, nullable )
// TODO remove as part of release 1.81 or after
field partner_id blob (nullable, default null)
// last_updated is updated whenever the row changes.
field last_updated timestamp ( autoinsert, autoupdate )
)
create value_attribution ()
update value_attribution (
where value_attribution.project_id = ?
where value_attribution.bucket_name = ?
)
read one (
select value_attribution
where value_attribution.project_id = ?
where value_attribution.bucket_name = ?
)