@@ -5,6 +5,7 @@ import play.api.libs.json.Reads._
55import play .api .libs .functional .syntax ._
66import play .api .libs .json .JsonConfiguration .Aux
77import play .api .libs .json .JsonNaming .SnakeCase
8+ import slick .jdbc .GetResult
89
910case class Tissue (id : String , label : String , anatomicalSystems : Seq [String ], organs : Seq [String ])
1011
@@ -51,3 +52,79 @@ object Expressions {
5152 (__ \ " tissues" ).readWithDefault[Seq [Expression ]](Seq .empty)
5253 )(Expressions .apply)
5354}
55+
56+ case class BaselineExpressionRow (
57+ targetId : String ,
58+ targetFromSourceId : Option [String ],
59+ tissueBiosampleId : Option [String ],
60+ tissueBiosampleParentId : Option [String ],
61+ tissueBiosampleFromSource : Option [String ],
62+ celltypeBiosampleId : Option [String ],
63+ celltypeBiosampleParentId : Option [String ],
64+ celltypeBiosampleFromSource : Option [String ],
65+ min : Option [Double ],
66+ q1 : Option [Double ],
67+ median : Option [Double ],
68+ q3 : Option [Double ],
69+ max : Option [Double ],
70+ distribution_score : Double ,
71+ specificity_score : Option [Double ],
72+ datasourceId : String ,
73+ datatypeId : String ,
74+ unit : String
75+ )
76+
77+ case class BaselineExpression (
78+ count : Long ,
79+ rows : Vector [BaselineExpressionRow ]
80+ )
81+
82+ object BaselineExpression {
83+ val empty : BaselineExpression = BaselineExpression (0 , Vector .empty)
84+
85+ implicit val getBaselineExpressionRowFromDB : GetResult [BaselineExpressionRow ] =
86+ GetResult { r =>
87+ val targetId : String = r.<<
88+ val targetFromSourceId : Option [String ] = r.<<?
89+ val tissueBiosampleId : Option [String ] = r.<<?
90+ val tissueBiosampleParentId : Option [String ] = r.<<?
91+ val tissueBiosampleFromSource : Option [String ] = r.<<?
92+ val celltypeBiosampleId : Option [String ] = r.<<?
93+ val celltypeBiosampleParentId : Option [String ] = r.<<?
94+ val celltypeBiosampleFromSource : Option [String ] = r.<<?
95+ val min : Option [Double ] = r.<<?
96+ val q1 : Option [Double ] = r.<<?
97+ val median : Option [Double ] = r.<<?
98+ val q3 : Option [Double ] = r.<<?
99+ val max : Option [Double ] = r.<<?
100+ val distribution_score : Double = r.<<
101+ val specificity_score : Option [Double ] = r.<<?
102+ val datasourceId : String = r.<<
103+ val datatypeId : String = r.<<
104+ val unit : String = r.<<
105+
106+ BaselineExpressionRow (
107+ targetId,
108+ targetFromSourceId,
109+ tissueBiosampleId,
110+ tissueBiosampleParentId,
111+ tissueBiosampleFromSource,
112+ celltypeBiosampleId,
113+ celltypeBiosampleParentId,
114+ celltypeBiosampleFromSource,
115+ min,
116+ q1,
117+ median,
118+ q3,
119+ max,
120+ distribution_score,
121+ specificity_score,
122+ datasourceId,
123+ datatypeId,
124+ unit
125+ )
126+ }
127+
128+ implicit val BaselineExpressionRowImp : OFormat [BaselineExpressionRow ] =
129+ Json .format[BaselineExpressionRow ]
130+ }
0 commit comments