Start work on OrderedCollection to use for implementing /outbox

master
teknomunk 1 year ago
parent 668e9e2d42
commit 9a1524bfea

@ -1 +1 @@
Subproject commit a7f65a8bba29c33e7432d8029576040b8330c0cf
Subproject commit c8834fd690a5803ab6773045f5042e8ae53204fe

@ -156,10 +156,10 @@ void ap_activity_free_composite( struct ap_activity* act )
}
free(act->also_known_as.items);
for( int i = 0; i < act->ordered_items.count; ++i ) {
ap_object_ptr_or_ref_free( act->ordered_items.items[i] );
for( int i = 0; i < act->collection_items.count; ++i ) {
ap_object_ptr_or_ref_free( act->collection_items.items[i] );
}
free( act->ordered_items.items );
free( act->collection_items.items );
for( int i = 0; i < act->to.count; ++i ) {
free(act->to.items[i]);

@ -87,6 +87,11 @@ enum ap_object_type
apot_group = 203,
apot_organization = 204,
// Collection Types
apot_ordered_collection = 301,
apot_ordered_collection_page = 302,
apot_collection = 303,
apot_collection_page = 304,
};
extern struct json_enum ap_object_type_enum[];
@ -163,7 +168,7 @@ struct ap_object
struct {
struct ap_object_ptr_or_ref** items;
int count;
} ordered_items;
} collection_items;
struct {
char** items;
@ -176,6 +181,12 @@ struct ap_object
int has_signature;
struct ap_signature signature;
// Collection fields
char* next;
char* prev;
char* part_of;
int total_items;
};
struct json_object_field;

@ -46,6 +46,11 @@ struct json_enum ap_object_type_enum[] = {
{ "Service", apot_service },
{ "Document", apot_document },
{ "Image", apot_image },
{ "Collection", apot_collection },
{ "CollectionPage", apot_collection_page },
{ "OrderedCollection", apot_ordered_collection },
{ "OrderedCollectionPage", apot_ordered_collection_page },
{ NULL, 0 },
};
@ -194,6 +199,21 @@ struct json_object_field ap_activity_layout[] = {
.tagged_item_types = signature_types
},
JSON_FIELD_STRING( next, false ),
JSON_FIELD_STRING( prev, false ),
{
.key = "partOf",
.offset = offsetof( struct ap_object, part_of ),
.required = false,
.type = &json_field_string,
},
{
.key = "totalItems",
.offset = offsetof( struct ap_object, total_items ),
.required = false,
.type = &json_field_integer,
},
JSON_FIELD_ENUM( type, ap_object_type_enum, true ),
JSON_FIELD_END,

Loading…
Cancel
Save