package client import ( "context" "github.com/dexidp/dex/storage" "github.com/dexidp/dex/storage/ent/db/devicerequest" ) // CreateDeviceRequest saves provided device request into the database. func (d *Database) CreateDeviceRequest(request storage.DeviceRequest) error { _, err := d.client.DeviceRequest.Create(). SetClientID(request.ClientID). SetClientSecret(request.ClientSecret). SetScopes(request.Scopes). SetUserCode(request.UserCode). SetDeviceCode(request.DeviceCode). // Save utc time into database because ent doesn't support comparing dates with different timezones SetExpiry(request.Expiry.UTC()). Save(context.TODO()) if err != nil { return convertDBError("create device request: %w", err) } return nil } // GetDeviceRequest extracts a device request from the database by user code. func (d *Database) GetDeviceRequest(userCode string) (storage.DeviceRequest, error) { deviceRequest, err := d.client.DeviceRequest.Query(). Where(devicerequest.UserCode(userCode)). Only(context.TODO()) if err != nil { return storage.DeviceRequest{}, convertDBError("get device request: %w", err) } return toStorageDeviceRequest(deviceRequest), nil }