buzz.bookhive.book
Schema Diff
+14 -2
Compatibility Analysis
Backward Compatible
Backward compatible. 6 non-breaking changes.
Non-Breaking Changes (6)
- AddedVertex AddedVertex { vertex_id: "buzz.bookhive.book:body.hiveBookUri" }
- AddedVertex AddedVertex { vertex_id: "buzz.bookhive.book:body.identifiers" }
- AddedVertex AddedVertex { vertex_id: "buzz.bookhive.book:body.owned" }
- AddedEdge AddedEdge { src: "buzz.bookhive.book:body", tgt: "buzz.bookhive.book:body.hiveBookUri", kind: "prop", name: Some("hiveBookUri") }
- AddedEdge AddedEdge { src: "buzz.bookhive.book:body", tgt: "buzz.bookhive.book:body.identifiers", kind: "prop", name: Some("identifiers") }
- AddedEdge AddedEdge { src: "buzz.bookhive.book:body", tgt: "buzz.bookhive.book:body.owned", kind: "prop", name: Some("owned") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "buzz.bookhive.book:body.hiveBookUri" }AddedVertex { vertex_id: "buzz.bookhive.book:body.identifiers" }AddedVertex { vertex_id: "buzz.bookhive.book:body.owned" }
Additional Notes
- Non-breaking: AddedEdge { src: "buzz.bookhive.book:body", tgt: "buzz.bookhive.book:body.hiveBookUri", kind: "prop", name: Some("hiveBookUri") }
- Non-breaking: AddedEdge { src: "buzz.bookhive.book:body", tgt: "buzz.bookhive.book:body.identifiers", kind: "prop", name: Some("identifiers") }
- Non-breaking: AddedEdge { src: "buzz.bookhive.book:body", tgt: "buzz.bookhive.book:body.owned", kind: "prop", name: Some("owned") }
1
1
{
2
2
"id": "buzz.bookhive.book",
3
3
"defs": {
4
4
"main": {
5
5
"key": "tid",
6
6
"type": "record",
7
7
"record": {
8
8
"type": "object",
9
9
"required": [
10
10
"title",
11
11
"authors",
12
12
"hiveId",
13
13
"createdAt"
14
14
],
15
15
"properties": {
16
16
"cover": {
17
17
"type": "blob",
18
18
"accept": [
19
19
"image/png",
20
20
"image/jpeg"
21
21
],
22
22
"maxSize": 1000000,
23
23
"description": "Cover image of the book"
24
24
},
25
+
"owned": {
26
+
"type": "boolean",
27
+
"description": "Whether the user owns this book"
28
+
},
25
29
"stars": {
26
30
"type": "integer",
27
31
"maximum": 10,
28
32
"minimum": 1,
29
33
"description": "Number of stars given to the book (1-10) which will be mapped to 1-5 stars"
30
34
},
31
35
"title": {
32
36
"type": "string",
33
37
"maxLength": 512,
34
38
"minLength": 1,
35
39
"description": "The title of the book"
36
40
},
37
41
"hiveId": {
38
42
"type": "string",
39
43
"description": "The book's hive id, used to correlate user's books with the hive"
40
44
},
41
45
"review": {
42
46
"type": "string",
43
47
"description": "The book's review",
44
48
"maxGraphemes": 15000
45
49
},
46
50
"status": {
47
51
"type": "string",
48
52
"knownValues": [
49
53
"buzz.bookhive.defs#finished",
50
54
"buzz.bookhive.defs#reading",
51
55
"buzz.bookhive.defs#wantToRead",
52
-
"buzz.bookhive.defs#abandoned",
53
-
"buzz.bookhive.defs#owned"
56
+
"buzz.bookhive.defs#abandoned"
54
57
]
55
58
},
56
59
"authors": {
57
60
"type": "string",
58
61
"maxLength": 2048,
59
62
"minLength": 1,
60
63
"description": "The authors of the book (tab separated)"
61
64
},
62
65
"createdAt": {
63
66
"type": "string",
64
67
"format": "datetime"
65
68
},
66
69
"startedAt": {
67
70
"type": "string",
68
71
"format": "datetime",
69
72
"description": "The date the user started reading the book"
70
73
},
71
74
"finishedAt": {
72
75
"type": "string",
73
76
"format": "datetime",
74
77
"description": "The date the user finished reading the book"
75
78
},
79
+
"hiveBookUri": {
80
+
"type": "string",
81
+
"description": "AT-URI of the canonical catalogBook record in @bookhive.buzz"
82
+
},
83
+
"identifiers": {
84
+
"ref": "buzz.bookhive.defs#bookIdentifiers",
85
+
"type": "ref",
86
+
"description": "External identifiers for the book"
87
+
},
76
88
"bookProgress": {
77
89
"ref": "buzz.bookhive.defs#bookProgress",
78
90
"type": "ref",
79
91
"description": "Progress tracking details for the book"
80
92
}
81
93
}
82
94
},
83
95
"description": "A book in the user's library"
84
96
}
85
97
},
86
98
"$type": "com.atproto.lexicon.schema",
87
99
"lexicon": 1
88
100
}