devices: implemented DeviceExists service
This commit is contained in:
parent
87fb2c45a1
commit
649be571d2
|
@ -4,8 +4,11 @@ import (
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/stephenafamo/bob"
|
"github.com/stephenafamo/bob"
|
||||||
|
"github.com/tigorlazuardi/bluemage/go/gen/converter"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var convert converter.DeviceConverterImpl
|
||||||
|
|
||||||
type API struct {
|
type API struct {
|
||||||
mu sync.Mutex
|
mu sync.Mutex
|
||||||
DB bob.Executor
|
DB bob.Executor
|
||||||
|
|
|
@ -7,15 +7,12 @@ import (
|
||||||
"github.com/stephenafamo/bob/dialect/sqlite"
|
"github.com/stephenafamo/bob/dialect/sqlite"
|
||||||
"github.com/stephenafamo/bob/dialect/sqlite/dialect"
|
"github.com/stephenafamo/bob/dialect/sqlite/dialect"
|
||||||
"github.com/stephenafamo/bob/dialect/sqlite/sm"
|
"github.com/stephenafamo/bob/dialect/sqlite/sm"
|
||||||
"github.com/tigorlazuardi/bluemage/go/gen/converter"
|
|
||||||
"github.com/tigorlazuardi/bluemage/go/gen/models"
|
"github.com/tigorlazuardi/bluemage/go/gen/models"
|
||||||
device "github.com/tigorlazuardi/bluemage/go/gen/proto/device/v1"
|
device "github.com/tigorlazuardi/bluemage/go/gen/proto/device/v1"
|
||||||
"github.com/tigorlazuardi/bluemage/go/pkg/errs"
|
"github.com/tigorlazuardi/bluemage/go/pkg/errs"
|
||||||
"golang.org/x/net/context"
|
"golang.org/x/net/context"
|
||||||
)
|
)
|
||||||
|
|
||||||
var convert converter.DeviceConverterImpl
|
|
||||||
|
|
||||||
func queryFromListDeviceRequest(req *device.ListDevicesRequest) (expr []bob.Mod[*dialect.SelectQuery]) {
|
func queryFromListDeviceRequest(req *device.ListDevicesRequest) (expr []bob.Mod[*dialect.SelectQuery]) {
|
||||||
expr = countQueryFromListDeviceRequest(req)
|
expr = countQueryFromListDeviceRequest(req)
|
||||||
|
|
||||||
|
|
|
@ -81,3 +81,22 @@ func (de *DeviceHandler) UpdateDevice(ctx context.Context, request *connect.Requ
|
||||||
|
|
||||||
return connect.NewResponse(resp), nil
|
return connect.NewResponse(resp), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeviceExists checks if a device exists in the database.
|
||||||
|
func (de *DeviceHandler) DeviceExists(ctx context.Context, request *connect.Request[device.DeviceExistsRequest]) (*connect.Response[device.DeviceExistsResponse], error) {
|
||||||
|
slug := request.Msg.Slug
|
||||||
|
|
||||||
|
if err := validate.Validate(request.Msg); err != nil {
|
||||||
|
return nil, connect.NewError(connect.CodeInvalidArgument, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
exists, err := de.API.DevicesExist(ctx, slug)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errs.IntoConnectError(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
resp := &device.DeviceExistsResponse{
|
||||||
|
Exists: exists,
|
||||||
|
}
|
||||||
|
return connect.NewResponse(resp), nil
|
||||||
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ syntax = "proto3";
|
||||||
package device.v1;
|
package device.v1;
|
||||||
|
|
||||||
import "device/v1/create.proto";
|
import "device/v1/create.proto";
|
||||||
|
import "device/v1/exists.proto";
|
||||||
import "device/v1/get.proto";
|
import "device/v1/get.proto";
|
||||||
import "device/v1/list.proto";
|
import "device/v1/list.proto";
|
||||||
import "device/v1/update.proto";
|
import "device/v1/update.proto";
|
||||||
|
@ -29,4 +30,7 @@ service DeviceService {
|
||||||
//
|
//
|
||||||
// Only fields that are set in the request will be updated.
|
// Only fields that are set in the request will be updated.
|
||||||
rpc UpdateDevice(UpdateDeviceRequest) returns (UpdateDeviceResponse) {}
|
rpc UpdateDevice(UpdateDeviceRequest) returns (UpdateDeviceResponse) {}
|
||||||
|
|
||||||
|
// DeviceExists checks if a device exists in the database.
|
||||||
|
rpc DeviceExists(DeviceExistsRequest) returns (DeviceExistsResponse) {}
|
||||||
}
|
}
|
||||||
|
|
16
schemas/proto/device/v1/exists.proto
Normal file
16
schemas/proto/device/v1/exists.proto
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
package device.v1;
|
||||||
|
|
||||||
|
import "buf/validate/validate.proto";
|
||||||
|
|
||||||
|
option go_package = "github.com/tigorlazuardi/bluemage/go/gen/proto/device/v1";
|
||||||
|
|
||||||
|
message DeviceExistsRequest {
|
||||||
|
// The `slug` is a unique identifier for the device.
|
||||||
|
string slug = 1 [(buf.validate.field).string.min_len = 1];
|
||||||
|
}
|
||||||
|
|
||||||
|
message DeviceExistsResponse {
|
||||||
|
bool exists = 1;
|
||||||
|
}
|
Loading…
Reference in a new issue