Data Structure - cubing/algdb GitHub Wiki
Schema documented here: https://github.com/cubing/algdb/blob/main/schema.graphql
Brief overview:
Algsets:
- Algsets have both cases and subsets.
- Subsets themselves can also have cases and subsets.
- This is done so as to handle nested subsets infinitely.
- Algsets will have a unique code that identifies them.
- Subsets will also have a unique code, except it represents the subset chain.
For example:
zbll
will have subset u
. Subset u
could have other nested subsets, those would look like u-nested1
, u-nested2
. These nested subsets could also have further subsets: u-nested1-deepernested1
.
Cases:
- Algsets/Subsets have cases.
- Algs are connected to cases.
- Algs can be connected to multiple cases.
- Cases are unique to a subsets/algset
- CMLL-AS-1 and COLL-AS-1 are both different cases connected to different subsets.
- Algs are then connected to both cases.
- This allows both cases to be rendered differently depending on their parent's subset mask
Algs:
- Algs can have #tags.
- Tags are unique to an alg-user combo.
- User's can add their own tags to an alg.
- This helps categorize their saved algs.
Users:
-
Users can save algs through tagging them as #use (or something).
-
Users can also upvote algs to increase their overall score.
-
Newer votes mean more than older votes.
-
Algs posted in the last week (for example) are automatically tagged as #new.
-
Algs that are new but have high votes are trending.
-
Users can view their saved algs in their profile.
-
Users can view other users' saved algs.
-
These algs get automatically grouped based on their parent subsets / algsets.
-
Users can filter algs by their unique tags sort algs however they'd like.