2017-04-01 34 views
2

浮动的codegen生成一个方便的Tables.scala,其中包含行和表的所有类。我们喜欢这种方法,因为我们可以使用关系设计并利用我们选择的SQL方言的全部功能。使用无形的域类和灵活生成的case case类转换

然而,我们在写很多的样板代码从我们的REST API型号/域API模型转换成光滑的XYZ行,原因如下:

  1. 里有油滑案例类的附加参数比在域案例类中(例如,从REST资源的路径中提取这些附加参数)
  2. 我们不想将路径依赖类型暴露给其他图层/微服务。他们只需要知道REST API模型
  3. 我们通常转换的日期和时间类的java.sql中到java.time相当于

我们可以使自动化的转换,所以我们不必每次都明确地写两个转换功能,从领域模型到光滑案例类和反之亦然。特别是:

  1. 如何编写一个泛型函数,它提供了两个具有相同HLIST表示的等价案例类之间的隐式转换?

  2. 我们如何在具有不同HLIST表示的两个case类之间编写泛型隐式转换,为不同成员提供了一组隐式转换(java.sql.Timestamp - > java.time.ZonedDateTime)

  3. 我们如何编写一个函数来在两个case类之间进行转换,其中输出有一个Repr = HList1 :: HList2,第一个有一个Repr = HList2(即,我们如何在HList2中提取/附加提取的参数从请求?)

回答