You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
### main points
- changes objectstore's url format to:
```
{usecase}/{scope1}/.../objects/{key}
```
- updates both clients to use the new format
any deployed uses of objectstore will break when we roll this out. we
are pre-production so that feels acceptable as long as we make sure we
turn off any feature flags we've got out there first until we deploy +
update clients
we are discussing renaming `scope` but i'll do that in a different PR
### extra detail
axum's route syntax doesn't allow `{usecase}/{*scope}/objects/{*key}`
for variable-length scopes because that sort of `*` wildcard is only
allowed at the end of a path. to work around that, i wrote a custom
`serde::Deserialize` implementation for `ObjectPath`. now a
`/{*object_path}` route produces a `Path<ObjectPath>`. as a bonus, it
lets us get rid of the mostly-duplicated `put_object_nokey` handler
`ObjectPath` itself was changed in two ways:
- `scope` is now a `Vec<String>` containing each scope component. this
will make auth logic easier
- i opted not to split each scope component on `.` and store each k/v
pair in an `IndexMap` as i don't think we really need them separated. it
just makes re-serializing the path more expensive. we can change this
later though
- the `Deserialize` implementation will handle generating a UUIDv4 if
one wasn't found in the path
Close FS-212
---------
Co-authored-by: Arpad Borsos <[email protected]>
0 commit comments