自定义自动派生ToSchema生成的字段

时间:2017-04-17 13:32:09

标签: haskell servant derived-instances

我有以下类型:

data Device = Device { _deviceId    :: DeviceId
                     , _deviceName  :: Text
                     , _deviceDtype :: DType }
            deriving (Show, Eq, Generic)
makeFields ''Device
$(deriveJSON (mkOptions "_device") ''Device)

这里我使用deriveJSON而不是Generic机制,因为我需要调整此数据类型的JSON表示字段的名称:

-- | Make JSON conversion options.
mkOptions :: String -> Options
mkOptions prefix = defaultOptions { fieldLabelModifier = removePrefix prefix
                                  , unwrapUnaryRecords = True
                                  }

需要前缀来生成类型的镜头,但JSON表示中不需要。

现在我正在尝试使用servant-swagger生成Swagger文档,这需要Device _deviceId个实例。现在问题是生成的模式将具有上面的访问者函数的给定前缀名称(_deviceName_deviceDTypeid)。相反,我会修改版本(namedtypeselect MonthName, id_seller, max(TotalSales) from ( select to_char(sysdate, 'Month') MonthName, sellers.id_seller, count(sellers.id_seller) TotalSales from sellers inner join product on sellers.name_product = product.name_product group by to_char(view_datetime, 'Month'), sellers.id_seller ) tab group by MonthName, id_seller)。

有没有办法以这种方式自定义泛型推导过程?

1 个答案:

答案 0 :(得分:4)

对[{1}}和servant-swagger不太熟悉,但看起来像这样的事情应该可以胜任:

swagger2