From 37ca5f54bc13b675f7511d385a2f2d61e04d0d86 Mon Sep 17 00:00:00 2001 From: Tigor Hutasuhut Date: Fri, 16 Aug 2024 10:25:38 +0700 Subject: [PATCH] images: update proto --- schemas/proto/images/v1/images.proto | 67 +++++++++++++++++++--------- schemas/proto/images/v1/types.proto | 21 +++++++++ 2 files changed, 68 insertions(+), 20 deletions(-) create mode 100644 schemas/proto/images/v1/types.proto diff --git a/schemas/proto/images/v1/images.proto b/schemas/proto/images/v1/images.proto index bba6d54..321a8e0 100644 --- a/schemas/proto/images/v1/images.proto +++ b/schemas/proto/images/v1/images.proto @@ -2,6 +2,9 @@ syntax = "proto3"; package images.v1; +import "buf/validate/validate.proto"; +import "images/v1/types.proto"; + option go_package = "github.com/tigorlazuardi/bluemage/go/gen/proto/images/v1"; service ImageService { @@ -9,29 +12,53 @@ service ImageService { } message RecentlyAddedImagesRequest { - int32 limit = 1; + option (buf.validate.message).cel = { + id: "RecentlyAddedImagesRequest.after_cannot_exist_with_before" + message: "after and before cannot be set at the same time" + expression: "this.after > 0 && this.before > 0" + }; + // subreddits filter the images to be fetched belonging to the given subreddits. + // + // If empty, images from all subreddits will be fetched. + repeated string subreddits = 1; + // devices filter the images to be fetched belonging to the given devices. + // + // If empty, images from all devices will be fetched. + repeated string devices = 2; + // limit limits the number of images to be fetched. + // + // if 0 (or not set), the default limit is 100. + // + // if set, the maximum limit is clamped to 1000. + int64 limit = 3; + // after lists the image after the given timestamp. + // + // using after will return images that are created after the given timestamp. + // + // cannot be set (value > 0) with before (value > 0). + int64 after = 4; + // before lists the image before the given timestamp. + // + // using before will return images that are created before the given timestamp. + // + // cannot be set (value > 0) with after (value > 0). + int64 before = 5; } message RecentlyAddedImagesResponse { - repeated GetImageResponse images = 1; + repeated GroupedByDeviceImages groups = 1; + // after is given to the client to be used as after in the next request. + // + // Given if the request has after value set. + optional int64 after = 2; + + // before is given to the client to be used as before in the next request. + // + // Given if the request has before value set. + optional int64 before = 3; } -message GetImageRequest { - int32 id = 1; -} - -message GetImageResponse { - int32 id = 1; - string subreddit = 2; - string device = 3; - string post_title = 4; - string post_url = 5; - int64 post_created = 6; - string post_author = 7; - string post_author_url = 8; - string image_relative_path = 9; - string image_original_url = 10; - uint32 image_height = 11; - uint32 image_width = 12; - int64 image_size = 13; +message GroupedByDeviceImages { + string device = 1; + repeated Image images = 2; } diff --git a/schemas/proto/images/v1/types.proto b/schemas/proto/images/v1/types.proto new file mode 100644 index 0000000..3fd5a25 --- /dev/null +++ b/schemas/proto/images/v1/types.proto @@ -0,0 +1,21 @@ +syntax = "proto3"; + +package images.v1; + +option go_package = "github.com/tigorlazuardi/bluemage/go/gen/proto/images/v1"; + +message Image { + int32 id = 1; + string subreddit = 2; + string device = 3; + string post_title = 4; + string post_url = 5; + int64 post_created = 6; + string post_author = 7; + string post_author_url = 8; + string image_relative_path = 9; + string image_original_url = 10; + uint32 image_height = 11; + uint32 image_width = 12; + int64 image_size = 13; +}