major step to connectrpc
This commit is contained in:
parent
15002b4e18
commit
fb44efec56
4
Makefile
4
Makefile
|
@ -15,9 +15,11 @@ export REDMAGE_RUNTIME_VERSION=$(shell echo "$${REDMAGE_RUNTIME_VERSION:-unknown
|
|||
export GCO_ENABLED=0
|
||||
|
||||
generate:
|
||||
rm -rf ./gen/grpc
|
||||
rm -rf ./gen
|
||||
cd proto
|
||||
buf generate
|
||||
cd ..
|
||||
goverter gen -g 'output:file ../gen/converter/generated.go' -g 'output:package github.com/tigorlazuardi/redmage/gen/converter' ./converts
|
||||
|
||||
start: dev-dependencies web-dependencies migrate-up
|
||||
REDMAGE_RUNTIME_VERSION=$(shell git describe --tags --abbrev=0) air
|
||||
|
|
23
converts/converts.go
Normal file
23
converts/converts.go
Normal file
|
@ -0,0 +1,23 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
device "github.com/tigorlazuardi/redmage/gen/proto/device/v1"
|
||||
"github.com/tigorlazuardi/redmage/models"
|
||||
)
|
||||
|
||||
// goverter:converter
|
||||
// goverter:extend BoolToInt32
|
||||
type Converter interface {
|
||||
// goverter:map Nsfw NSFW
|
||||
// goverter:ignore CreatedAt
|
||||
// goverter:ignore UpdatedAt
|
||||
// goverter:ignore R
|
||||
ConvertCreateDeviceRequestToModelsDevice(source device.CreateDeviceRequest) *models.Device
|
||||
}
|
||||
|
||||
func BoolToInt32(input bool) int32 {
|
||||
if input {
|
||||
return 1
|
||||
}
|
||||
return 0
|
||||
}
|
25
flake.nix
25
flake.nix
|
@ -9,6 +9,29 @@
|
|||
system = "x86_64-linux";
|
||||
templPkg = templ.packages.${system}.templ;
|
||||
pkgs = inputs.nixpkgs.legacyPackages.${system};
|
||||
goverter = pkgs.buildGoModule rec {
|
||||
name = "goverter";
|
||||
version = "1.5.0";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "jmattheis";
|
||||
repo = "goverter";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-J0PS4ZxGtOa+0QOOSjfg0WeVYGyf757WuTnpQTWIV1w=";
|
||||
};
|
||||
nativeBuildInputs = [ pkgs.go ];
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
go build -o goverter ./cmd/goverter
|
||||
runHook postBuild
|
||||
'';
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
mkdir -p $out/bin
|
||||
cp goverter $out/bin
|
||||
runHook postInstall
|
||||
'';
|
||||
vendorHash = "sha256-uQ1qKZLRwsgXKqSAERSqf+1cYKp6MTeVbfGs+qcdakE=";
|
||||
};
|
||||
in
|
||||
{
|
||||
devShell.${system} = pkgs.mkShell {
|
||||
|
@ -26,6 +49,8 @@
|
|||
protoc-gen-go
|
||||
protoc-gen-go-grpc
|
||||
protoc-gen-connect-go
|
||||
protoc-gen-validate
|
||||
goverter
|
||||
];
|
||||
};
|
||||
};
|
||||
|
|
8
go.mod
8
go.mod
|
@ -3,12 +3,15 @@ module github.com/tigorlazuardi/redmage
|
|||
go 1.22.1
|
||||
|
||||
require (
|
||||
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.34.2-20240717164558-a6c49f84cc0f.2
|
||||
connectrpc.com/connect v1.16.2
|
||||
github.com/ThreeDotsLabs/watermill v1.3.5
|
||||
github.com/ThreeDotsLabs/watermill-bolt v1.1.0
|
||||
github.com/a-h/templ v0.2.663
|
||||
github.com/aarondl/opt v0.0.0-20240108180805-338d04d857dc
|
||||
github.com/adrg/xdg v0.4.0
|
||||
github.com/alecthomas/units v0.0.0-20231202071711-9a357b53e9c9
|
||||
github.com/bufbuild/protovalidate-go v0.6.3
|
||||
github.com/fatih/color v1.16.0
|
||||
github.com/go-chi/chi/v5 v5.0.12
|
||||
github.com/gosimple/slug v1.14.0
|
||||
|
@ -35,12 +38,15 @@ require (
|
|||
github.com/tidwall/pretty v1.2.1
|
||||
go.etcd.io/bbolt v1.3.9
|
||||
golang.org/x/net v0.24.0
|
||||
google.golang.org/protobuf v1.34.2
|
||||
)
|
||||
|
||||
require (
|
||||
github.com/aarondl/json v0.0.0-20221020222930-8b0db17ef1bf // indirect
|
||||
github.com/antlr4-go/antlr/v4 v4.13.0 // indirect
|
||||
github.com/boreq/errors v0.1.0 // indirect
|
||||
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
|
||||
github.com/google/cel-go v0.20.1 // indirect
|
||||
github.com/google/uuid v1.6.0 // indirect
|
||||
github.com/gosimple/unidecode v1.0.1 // indirect
|
||||
github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1 // indirect
|
||||
|
@ -50,6 +56,7 @@ require (
|
|||
github.com/qdm12/reprint v0.0.0-20200326205758-722754a53494 // indirect
|
||||
github.com/samber/lo v1.39.0 // indirect
|
||||
github.com/stephenafamo/scan v0.5.0 // indirect
|
||||
github.com/stoewer/go-strcase v1.3.0 // indirect
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.26.0 // indirect
|
||||
go.opentelemetry.io/proto/otlp v1.2.0 // indirect
|
||||
golang.org/x/image v0.15.0 // indirect
|
||||
|
@ -57,7 +64,6 @@ require (
|
|||
google.golang.org/genproto/googleapis/api v0.0.0-20240415180920-8c6c420018be // indirect
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be // indirect
|
||||
google.golang.org/grpc v1.63.2 // indirect
|
||||
google.golang.org/protobuf v1.33.0 // indirect
|
||||
)
|
||||
|
||||
require (
|
||||
|
|
18
go.sum
18
go.sum
|
@ -1,3 +1,5 @@
|
|||
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.34.2-20240717164558-a6c49f84cc0f.2 h1:SZRVx928rbYZ6hEKUIN+vtGDkl7uotABRWGY4OAg5gM=
|
||||
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.34.2-20240717164558-a6c49f84cc0f.2/go.mod h1:ylS4c28ACSI59oJrOdW4pHS4n0Hw4TgSPHn8rpHl4Yw=
|
||||
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
|
||||
|
@ -31,6 +33,8 @@ cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo
|
|||
cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
|
||||
cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
|
||||
cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
|
||||
connectrpc.com/connect v1.16.2 h1:ybd6y+ls7GOlb7Bh5C8+ghA6SvCBajHwxssO2CGFjqE=
|
||||
connectrpc.com/connect v1.16.2/go.mod h1:n2kgwskMHXC+lVqb18wngEpF95ldBHXjZYJussz5FRc=
|
||||
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
|
||||
|
@ -64,11 +68,15 @@ github.com/alecthomas/units v0.0.0-20231202071711-9a357b53e9c9 h1:ez/4by2iGztzR4
|
|||
github.com/alecthomas/units v0.0.0-20231202071711-9a357b53e9c9/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
|
||||
github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230321174746-8dcc6526cfb1 h1:X8MJ0fnN5FPdcGF5Ij2/OW+HgiJrRg3AfHAx1PJtIzM=
|
||||
github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230321174746-8dcc6526cfb1/go.mod h1:pSwJ0fSY5KhvocuWSx4fz3BA8OrA1bQn+K1Eli3BRwM=
|
||||
github.com/antlr4-go/antlr/v4 v4.13.0 h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI=
|
||||
github.com/antlr4-go/antlr/v4 v4.13.0/go.mod h1:pfChB/xh/Unjila75QW7+VU4TSnWnnk9UTnmpPaOR2g=
|
||||
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
|
||||
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
|
||||
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
|
||||
github.com/boreq/errors v0.1.0 h1:aJIXv9JnyR5KtxFpQ8/AiblH3nfYmr1e1yoTze/5A1k=
|
||||
github.com/boreq/errors v0.1.0/go.mod h1:B3dsXzhYvfgUXp7ViU/moPYM4PojgQ9MiQ21uvY6qqQ=
|
||||
github.com/bufbuild/protovalidate-go v0.6.3 h1:wxQyzW035zM16Binbaz/nWAzS12dRIXhZdSUWRY7Fv0=
|
||||
github.com/bufbuild/protovalidate-go v0.6.3/go.mod h1:J4PtwP9Z2YAGgB0+o+tTWEDtLtXvz/gfhFZD8pbzM/U=
|
||||
github.com/cenkalti/backoff/v3 v3.2.2/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs=
|
||||
github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
|
||||
github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
|
||||
|
@ -94,6 +102,8 @@ github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymF
|
|||
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
|
||||
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||
github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A=
|
||||
github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew=
|
||||
github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM=
|
||||
github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=
|
||||
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
|
||||
|
@ -154,6 +164,8 @@ github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaS
|
|||
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
||||
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
||||
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
||||
github.com/google/cel-go v0.20.1 h1:nDx9r8S3L4pE61eDdt8igGj8rf5kjYR3ILxWIpWNi84=
|
||||
github.com/google/cel-go v0.20.1/go.mod h1:kWcIzTsPX0zmQ+H3TirHstLLf9ep5QTsZBN9u4dOYLg=
|
||||
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
||||
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
|
@ -358,6 +370,8 @@ github.com/stephenafamo/scan v0.5.0 h1:1zDlY1PFnLB8MErWVil/vywAoZxGIdQS/y8nDiGU+
|
|||
github.com/stephenafamo/scan v0.5.0/go.mod h1:FhIUJ8pLNyex36xGFiazDJJ5Xry0UkAi+RkWRrEcRMg=
|
||||
github.com/stephenafamo/sqlparser v0.0.0-20230326220333-c2adaf4c30e8 h1:HR6pFkWHsRRVm+VUSjltpaI56XFl2hdwxdGw7hHIPDk=
|
||||
github.com/stephenafamo/sqlparser v0.0.0-20230326220333-c2adaf4c30e8/go.mod h1:hOw+0TLAWETjE8UJG+q5bdj7EArbIombNBnEUoF7XwM=
|
||||
github.com/stoewer/go-strcase v1.3.0 h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs=
|
||||
github.com/stoewer/go-strcase v1.3.0/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
||||
|
@ -717,8 +731,8 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0
|
|||
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
||||
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
||||
google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
|
||||
google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
|
||||
google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
|
||||
google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
|
||||
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
|
|
2
main.go
2
main.go
|
@ -11,6 +11,8 @@ import (
|
|||
"github.com/joho/godotenv"
|
||||
"github.com/tigorlazuardi/redmage/cli"
|
||||
"github.com/tigorlazuardi/redmage/db"
|
||||
|
||||
_ "github.com/tigorlazuardi/redmage/tools"
|
||||
)
|
||||
|
||||
//go:embed db/migrations/*.sql
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
version: v2
|
||||
plugins:
|
||||
- local: protoc-gen-go
|
||||
out: ../gen/grpc
|
||||
out: ../gen/proto
|
||||
opt: paths=source_relative
|
||||
- local: protoc-gen-connect-go
|
||||
out: ../gen/grpc
|
||||
out: ../gen/proto
|
||||
opt: paths=source_relative
|
||||
|
|
6
proto/buf.lock
Normal file
6
proto/buf.lock
Normal file
|
@ -0,0 +1,6 @@
|
|||
# Generated by buf. DO NOT EDIT.
|
||||
version: v2
|
||||
deps:
|
||||
- name: buf.build/bufbuild/protovalidate
|
||||
commit: a6c49f84cc0f4e038680d390392e2ab0
|
||||
digest: b5:e968392e88ff7915adcbd1635d670b45bff8836ec2415d81fc559ca5470a695dbdc30030bad8bc5764647c731079e9e7bba0023ea25c4e4a1672a7d2561d4a19
|
|
@ -1 +1,3 @@
|
|||
version: v2
|
||||
deps:
|
||||
- buf.build/bufbuild/protovalidate
|
||||
|
|
88
proto/device/v1/device.proto
Normal file
88
proto/device/v1/device.proto
Normal file
|
@ -0,0 +1,88 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package device.v1;
|
||||
|
||||
import "buf/validate/validate.proto";
|
||||
|
||||
option go_package = "github.com/tigorlazuardi/redmage/gen/proto/device/v1";
|
||||
|
||||
service DeviceService {
|
||||
// CreateDevice creates a new device.
|
||||
rpc CreateDevice(CreateDeviceRequest) returns (CreateDeviceResponse) {}
|
||||
}
|
||||
|
||||
message CreateDeviceRequest {
|
||||
// The `slug` is a unique identifier for the device, used to identify the device within the system.
|
||||
// Each `slug` must be unique across all devices.
|
||||
string slug = 1 [(buf.validate.field).string.min_len = 1];
|
||||
|
||||
// `enable` is a flag to set if a device is enabled upon creation. Default false.
|
||||
bool enable = 2;
|
||||
|
||||
// The name of the device. This is used for display purposes.
|
||||
string name = 3;
|
||||
|
||||
// The display x resolution of the device.
|
||||
double resolution_x = 4;
|
||||
|
||||
// The display y resolution of the device.
|
||||
double resolution_y = 5;
|
||||
|
||||
// aspect_ratio_tolerance is a tolerance for aspect ratio images to be accepted.
|
||||
//
|
||||
// The bigger the aspect_ratio_tolerance, the more images will be fetched, but it also means more likely
|
||||
// for images that will look stretched if you set the device wallpaper view as stretched or
|
||||
// will overfill if you set the device wallpaper view as fill.
|
||||
//
|
||||
// if a device has resolution_x = 1920, resolution_y = 1080, it has an aspect ratio of 1.777~ (1920 divided by 1080).
|
||||
//
|
||||
// an aspect_ratio_tolerance of 0.2 means that the device will accept images with aspect ratio between 1.577~ and 1.977~.
|
||||
//
|
||||
// THIS IS NOT A FILTER FOR IMAGE SIZE. This filter will take images that are far bigger or smaller than the device resolution
|
||||
// as long as the aspect ratio is within the tolerance. Like example above, if an image has resolution of 3840x2160, it will be
|
||||
// accepted by the device even though it is 2 times bigger than the device resolution.
|
||||
//
|
||||
// If you want to filter image size, use min_x, min_y, max_x, max_y fields.
|
||||
//
|
||||
double aspect_ratio_tolerance = 6;
|
||||
|
||||
// The minimum x resolution required for an image to be accepted by the device.
|
||||
//
|
||||
// A value of 0 indicates no minimum x resolution.
|
||||
//
|
||||
// The default value is 0.
|
||||
int32 min_x = 7;
|
||||
|
||||
// The minimum y resolution required for an image to be accepted by the device.
|
||||
//
|
||||
// A value of 0 indicates no minimum y resolution.
|
||||
//
|
||||
// The default value is 0.
|
||||
int32 min_y = 8;
|
||||
|
||||
// The maximum x resolution allowed for an image to be accepted by the device.
|
||||
//
|
||||
// A value of 0 indicates no maximum x resolution.
|
||||
//
|
||||
// The default value is 0.
|
||||
int32 max_x = 9;
|
||||
|
||||
// The maximum y resolution allowed for an image to be accepted by the device.
|
||||
//
|
||||
// A value of 0 indicates no maximum y resolution.
|
||||
//
|
||||
// The default value is 0.
|
||||
int32 max_y = 10;
|
||||
|
||||
// The `nsfw` parameter allows the device to accept NSFW (Not Safe For Work) images when set to true.
|
||||
bool nsfw = 11;
|
||||
|
||||
// `windows_wallpaper_mode` when set to true, downloaded images will be put on single folder location
|
||||
// instead of inside folders separated by subreddit names.
|
||||
bool windows_wallpaper_mode = 12;
|
||||
}
|
||||
|
||||
message CreateDeviceResponse {
|
||||
// `slug` is the slug of the created device.
|
||||
string slug = 1;
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package redmage;
|
||||
|
||||
// option go_package = "google.golang.org/grpc/examples/helloworld/helloworld";
|
||||
option go_package = "github.com/tigorlazuardi/redmage/gen/grpc/redmage";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "HelloWorldProto";
|
||||
option java_package = "io.grpc.examples.helloworld";
|
||||
|
||||
// The greeting service definition.
|
||||
service Greeter {
|
||||
// Sends a greeting
|
||||
rpc SayHello(HelloRequest) returns (HelloReply) {}
|
||||
}
|
||||
|
||||
// The request message containing the user's name.
|
||||
message HelloRequest {
|
||||
string name = 1;
|
||||
}
|
||||
|
||||
// The response message containing the greetings
|
||||
message HelloReply {
|
||||
string message = 1;
|
||||
}
|
3
server/grpc/grpc.go
Normal file
3
server/grpc/grpc.go
Normal file
|
@ -0,0 +1,3 @@
|
|||
package grpc
|
||||
|
||||
type Server struct{}
|
25
server/grpc/handlers/device.go
Normal file
25
server/grpc/handlers/device.go
Normal file
|
@ -0,0 +1,25 @@
|
|||
package handlers
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"connectrpc.com/connect"
|
||||
"github.com/tigorlazuardi/redmage/api"
|
||||
device "github.com/tigorlazuardi/redmage/gen/proto/device/v1"
|
||||
deviceConnect "github.com/tigorlazuardi/redmage/gen/proto/device/v1/v1connect"
|
||||
)
|
||||
|
||||
var _ deviceConnect.DeviceServiceHandler = (*Device)(nil)
|
||||
|
||||
type Device struct {
|
||||
deviceConnect.UnimplementedDeviceServiceHandler
|
||||
|
||||
API *api.API
|
||||
}
|
||||
|
||||
func (de *Device) CreateDevice(ctx context.Context, req *connect.Request[device.CreateDeviceRequest]) (*connect.Response[device.CreateDeviceResponse], error) {
|
||||
ctx, span := tracer.Start(ctx, "Device.CreateDevice")
|
||||
defer span.End()
|
||||
|
||||
panic("not implemented") // TODO: Implement
|
||||
}
|
5
server/grpc/handlers/trace.go
Normal file
5
server/grpc/handlers/trace.go
Normal file
|
@ -0,0 +1,5 @@
|
|||
package handlers
|
||||
|
||||
import "go.opentelemetry.io/otel"
|
||||
|
||||
var tracer = otel.Tracer("handlers")
|
5
tools/connectrpc.go
Normal file
5
tools/connectrpc.go
Normal file
|
@ -0,0 +1,5 @@
|
|||
package tools
|
||||
|
||||
import (
|
||||
_ "connectrpc.com/connect"
|
||||
)
|
|
@ -1 +0,0 @@
|
|||
package tools
|
7
tools/protobuf.go
Normal file
7
tools/protobuf.go
Normal file
|
@ -0,0 +1,7 @@
|
|||
package tools
|
||||
|
||||
import (
|
||||
_ "github.com/bufbuild/protovalidate-go"
|
||||
_ "google.golang.org/protobuf/reflect/protoreflect"
|
||||
_ "google.golang.org/protobuf/runtime/protoimpl"
|
||||
)
|
Loading…
Reference in a new issue