classDiagram
User .. Piece
class Piece {
+User owner
+int visibility
}
class Item {
+str title
+str brief
-enum type
}
Piece <|-- Content
Item .. Content
class Content {
+Item target
}
Content <|-- Rating
class Rating {
+int grade
}
Content <|-- Review
class Review {
+str title
+str body
}
Content <|-- Comment
class Comment {
+str text
}
Content <|-- Note
class Note {
+str title
+str content
+enum progress_type
+str progress_value
}
Content <|-- Reply
class Reply {
+Content reply_to
}
Piece <|-- List
class List{
+ListItem[] items
}
Item .. ListItem
List *-- ListItem
class ListItem {
+int position
+Item item
+Dict metadata
}
List <|-- Collection
Item .. Collection
class Collection {
+str title
+str brief
+Bool collabrative
}
List <|-- Tag
class Tag {
+str title
}
List <|-- Shelf
class Shelf {
+Enum type
}
User .. ShelfLogManager
class ShelfLogManager {
+User owner
+ShelfLogEntry[] logs
}
ShelfLogManager *-- ShelfLogEntry
class ShelfLogEntry {
+Item item
+Shelf shelf
+DateTime timestamp
}
ShelfLogEntry .. Item
ShelfLogEntry .. Shelf
Shelf *-- ShelfItem
ListItem <|-- ShelfItem
ListItem <|-- TagItem
ListItem <|-- CollectionItem
Tag *-- TagItem
Collection *-- CollectionItem