proto: split file
This commit is contained in:
parent
f559ad7ca0
commit
fbb7f73142
|
@ -17,6 +17,8 @@ CREATE TABLE devices (
|
||||||
updated_at BIGINT NOT NULL DEFAULT (strftime('%s', 'now'))
|
updated_at BIGINT NOT NULL DEFAULT (strftime('%s', 'now'))
|
||||||
);
|
);
|
||||||
|
|
||||||
|
INSERT INTO metrics(name) VALUES ('devices.count');
|
||||||
|
|
||||||
CREATE UNIQUE INDEX idx_devices_unique_slug ON devices(slug);
|
CREATE UNIQUE INDEX idx_devices_unique_slug ON devices(slug);
|
||||||
|
|
||||||
CREATE TRIGGER devices_update_timestamp AFTER UPDATE ON devices FOR EACH ROW
|
CREATE TRIGGER devices_update_timestamp AFTER UPDATE ON devices FOR EACH ROW
|
||||||
|
@ -28,15 +30,18 @@ CREATE TRIGGER devices_insert_create_total_image_metrics AFTER INSERT on devices
|
||||||
BEGIN
|
BEGIN
|
||||||
INSERT INTO metrics (name, value)
|
INSERT INTO metrics (name, value)
|
||||||
VALUES (CONCAT('devices.', NEW.slug, '.total_images'), 0);
|
VALUES (CONCAT('devices.', NEW.slug, '.total_images'), 0);
|
||||||
|
UPDATE metrics SET value = value + 1 WHERE name = 'devices.count';
|
||||||
END;
|
END;
|
||||||
|
|
||||||
CREATE TRIGGER devices_delete_total_image_metrics AFTER DELETE on devices FOR EACH ROW
|
CREATE TRIGGER devices_delete_total_image_metrics AFTER DELETE on devices FOR EACH ROW
|
||||||
BEGIN
|
BEGIN
|
||||||
DELETE FROM metrics WHERE name = CONCAT('devices.', OLD.slug, '.total_images');
|
DELETE FROM metrics WHERE name = CONCAT('devices.', OLD.slug, '.total_images');
|
||||||
|
UPDATE metrics SET value = value - 1 WHERE name = 'devices.count';
|
||||||
END;
|
END;
|
||||||
-- +goose StatementEnd
|
-- +goose StatementEnd
|
||||||
|
|
||||||
-- +goose Down
|
-- +goose Down
|
||||||
-- +goose StatementBegin
|
-- +goose StatementBegin
|
||||||
DROP TABLE devices;
|
DROP TABLE devices;
|
||||||
|
DELETE FROM metrics WHERE name = 'devices.count';
|
||||||
-- +goose StatementEnd
|
-- +goose StatementEnd
|
||||||
|
|
|
@ -3,6 +3,7 @@ syntax = "proto3";
|
||||||
package device.v1;
|
package device.v1;
|
||||||
|
|
||||||
import "buf/validate/validate.proto";
|
import "buf/validate/validate.proto";
|
||||||
|
import "device/v1/get.proto";
|
||||||
|
|
||||||
option go_package = "github.com/tigorlazuardi/bluemage/go/gen/proto/device/v1";
|
option go_package = "github.com/tigorlazuardi/bluemage/go/gen/proto/device/v1";
|
||||||
|
|
||||||
|
@ -12,30 +13,59 @@ service DeviceService {
|
||||||
// If the device is not found, an error will be returned.
|
// If the device is not found, an error will be returned.
|
||||||
rpc GetDevice(GetDeviceRequest) returns (GetDeviceResponse) {}
|
rpc GetDevice(GetDeviceRequest) returns (GetDeviceResponse) {}
|
||||||
|
|
||||||
|
// ListDevices gets list of devices.
|
||||||
|
//
|
||||||
|
// Returns empty array if no matching query found.
|
||||||
|
//
|
||||||
|
// Only returns error if there's an internal error.
|
||||||
|
rpc ListDevices(ListDevicesRequest) returns (ListDevicesResponse) {}
|
||||||
|
|
||||||
// CreateDevice creates a new device.
|
// CreateDevice creates a new device.
|
||||||
rpc CreateDevice(CreateDeviceRequest) returns (CreateDeviceResponse) {}
|
rpc CreateDevice(CreateDeviceRequest) returns (CreateDeviceResponse) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
message GetDeviceRequest {
|
message ListDevicesRequest {
|
||||||
// The `slug` is a unique identifier for the device.
|
// searches the name and slug of the devices.
|
||||||
string slug = 1 [(buf.validate.field).string.min_len = 1];
|
// case insensitive.
|
||||||
|
//
|
||||||
|
// If empty or not given, lists all devices.
|
||||||
|
// (Limit, Offset, Order, Sort still applies).
|
||||||
|
//
|
||||||
|
// default: empty string.
|
||||||
|
string search = 1;
|
||||||
|
|
||||||
|
// disabled limit the listing devides only
|
||||||
|
// to disabled devices.
|
||||||
|
//
|
||||||
|
// default: false.
|
||||||
|
bool disabled = 2;
|
||||||
|
|
||||||
|
// limits the number of results.
|
||||||
|
//
|
||||||
|
// if value is 0 or not given, limit is set to 25.
|
||||||
|
//
|
||||||
|
// if limit is higher than 100, it is clamped to 100.
|
||||||
|
uint32 limit = 3;
|
||||||
|
|
||||||
|
// offset for the given data.
|
||||||
|
//
|
||||||
|
// If offset is 0 or not given, the query begins from start.
|
||||||
|
uint32 offset = 4;
|
||||||
|
|
||||||
|
// order_by is the field to order the devices by.
|
||||||
|
//
|
||||||
|
// If not given, the default is `created_at`.
|
||||||
|
OrderBy order_by = 5;
|
||||||
|
|
||||||
|
// sort is the direction of the order_by result.
|
||||||
|
//
|
||||||
|
// If not given, the default is `ascending`.
|
||||||
|
Sort sort = 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
message GetDeviceResponse {
|
message ListDevicesResponse {
|
||||||
string slug = 1;
|
uint32 count = 1;
|
||||||
bool disabled = 2;
|
repeated GetDeviceResponse devices = 2;
|
||||||
string name = 3;
|
|
||||||
double resolution_x = 4;
|
|
||||||
double resolution_y = 5;
|
|
||||||
double aspect_ratio_tolerance = 6;
|
|
||||||
int32 min_x = 7;
|
|
||||||
int32 min_y = 8;
|
|
||||||
int32 max_x = 9;
|
|
||||||
int32 max_y = 10;
|
|
||||||
bool nsfw = 11;
|
|
||||||
bool single_folder_mode = 12;
|
|
||||||
int64 created_at = 13;
|
|
||||||
int64 updated_at = 14;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
message CreateDeviceRequest {
|
message CreateDeviceRequest {
|
||||||
|
@ -114,3 +144,27 @@ message CreateDeviceResponse {
|
||||||
// `slug` is the slug of the created device.
|
// `slug` is the slug of the created device.
|
||||||
string slug = 1;
|
string slug = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum OrderBy {
|
||||||
|
ORDER_BY_UNSPECIFIED = 0;
|
||||||
|
ORDER_BY_SLUG = 1;
|
||||||
|
ORDER_BY_DISABLED = 2;
|
||||||
|
ORDER_BY_NAME = 3;
|
||||||
|
ORDER_BY_RESOLUTION_X = 4;
|
||||||
|
ORDER_BY_RESOLUTION_Y = 5;
|
||||||
|
ORDER_BY_ASPECT_RATIO_TOLERANCE = 6;
|
||||||
|
ORDER_BY_MIN_X = 7;
|
||||||
|
ORDER_BY_MIN_Y = 8;
|
||||||
|
ORDER_BY_MAX_X = 9;
|
||||||
|
ORDER_BY_MAX_Y = 10;
|
||||||
|
ORDER_BY_NSFW = 11;
|
||||||
|
ORDER_BY_SINGLE_FOLDER_MODE = 12;
|
||||||
|
ORDER_BY_CREATED_AT = 13;
|
||||||
|
ORDER_BY_UPDATED_AT = 14;
|
||||||
|
}
|
||||||
|
|
||||||
|
enum Sort {
|
||||||
|
SORT_UNSPECIFIED = 0;
|
||||||
|
SORT_ASCENDING = 1;
|
||||||
|
SORT_DESCENDING = 2;
|
||||||
|
}
|
||||||
|
|
29
schemas/proto/device/v1/get.proto
Normal file
29
schemas/proto/device/v1/get.proto
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
package device.v1;
|
||||||
|
|
||||||
|
import "buf/validate/validate.proto";
|
||||||
|
|
||||||
|
option go_package = "github.com/tigorlazuardi/bluemage/go/gen/proto/device/v1";
|
||||||
|
|
||||||
|
message GetDeviceRequest {
|
||||||
|
// The `slug` is a unique identifier for the device.
|
||||||
|
string slug = 1 [(buf.validate.field).string.min_len = 1];
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetDeviceResponse {
|
||||||
|
string slug = 1;
|
||||||
|
bool disabled = 2;
|
||||||
|
string name = 3;
|
||||||
|
double resolution_x = 4;
|
||||||
|
double resolution_y = 5;
|
||||||
|
double aspect_ratio_tolerance = 6;
|
||||||
|
int32 min_x = 7;
|
||||||
|
int32 min_y = 8;
|
||||||
|
int32 max_x = 9;
|
||||||
|
int32 max_y = 10;
|
||||||
|
bool nsfw = 11;
|
||||||
|
bool single_folder_mode = 12;
|
||||||
|
int64 created_at = 13;
|
||||||
|
int64 updated_at = 14;
|
||||||
|
}
|
Loading…
Reference in a new issue