Created
July 22, 2015 10:21
-
-
Save atamborrino/ed158386c7c3a33a33f3 to your computer and use it in GitHub Desktop.
Dealing with more than 22 columns
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| case class PerformanceStats( | |
| ioId: IOId, | |
| dsp: Dsp, | |
| advertiserId: Option[Int], | |
| campaignId: Int, | |
| campaignName: String, | |
| campaignCurrency: Option[String], | |
| strategyId: Int, | |
| strategyName: String, | |
| day: LocalDate, | |
| impressions: Long, | |
| clicks: Long, | |
| postViewConversions: Double, | |
| postClickConversions: Long, | |
| mediaCost: Double, | |
| totalAdCost: Double, | |
| totalCost: Double, | |
| totalCostClientCurrency: Double, | |
| media: com.mfglabs.metapi.commons.Media, | |
| maybeVideoStats: Option[VideoPerformanceStats] | |
| ) | |
| case class VideoPerformanceStats( | |
| videoStarted: Long, | |
| firstQuartileViews: Long, | |
| midpointViews: Long, | |
| thirdQuartileViews: Long, | |
| completeViews: Long | |
| ) | |
| class PerformanceReports(tag: Tag) extends Table[PerformanceStats](tag, Some(Schemas.monitoring), "performance_report") { | |
| def ioId = column[IOId]("io_id") | |
| def dsp = column[Dsp]("dsp") | |
| def advertiserId = column[Option[Int]]("advertiser_id") | |
| def campaignId = column[Int]("campaign_id") | |
| def campaignName = column[String]("campaign_name") | |
| def campaignCurrency = column[Option[String]]("campaign_currency") | |
| def strategyId = column[Int]("strategy_id") | |
| def strategyName = column[String]("strategy_name") | |
| def day = column[LocalDate]("day")(localDateTypeMapper) | |
| def impressions = column[Long]("impressions") | |
| def clicks = column[Long]("clicks") | |
| def postViewConversions = column[Double]("post_view_conversions") | |
| def postClickConversions = column[Long]("post_click_conversions") | |
| def mediaCost = column[Double]("media_cost") | |
| def totalAdCost = column[Double]("total_ad_cost") | |
| def totalCost = column[Double]("total_cost") | |
| def totalCostClientCurrency = column[Double]("total_cost_client_currency") | |
| def media = column[com.mfglabs.metapi.commons.Media]("media") | |
| def maybeVideoStarted = column[Option[Long]]("video_started") | |
| def maybeFirstQuartileViews = column[Option[Long]]("first_quartile_views") | |
| def maybeMidpointViews = column[Option[Long]]("midpoint_views") | |
| def maybeThirdQuartileViews = column[Option[Long]]("third_quartile_views") | |
| def maybeCompleteViews = column[Option[Long]]("complete_views") | |
| def * = (ioId :: dsp :: advertiserId :: campaignId :: campaignName :: campaignCurrency :: strategyId :: strategyName :: day :: | |
| impressions :: clicks :: postViewConversions :: postClickConversions :: mediaCost :: totalAdCost :: totalCost :: | |
| totalCostClientCurrency :: media :: maybeVideoStarted :: maybeFirstQuartileViews :: maybeMidpointViews :: maybeThirdQuartileViews :: | |
| maybeCompleteViews :: HNil).shaped <> ( | |
| { | |
| case ioId :: dsp :: advertiserId :: campaignId :: campaignName :: campaignCurrency :: strategyId :: strategyName :: day :: impressions :: clicks :: | |
| postViewConversions :: postClickConversions :: mediaCost :: totalAdCost :: totalCost :: totalCostClientCurrency :: media :: | |
| maybeVideoStarted :: maybeFirstQuartileViews :: maybeMidpointViews :: maybeThirdQuartileViews :: maybeCompleteViews :: HNil => | |
| val maybeVideoStats = for { | |
| videoStarted <- maybeVideoStarted | |
| firstQuartileViews <- maybeFirstQuartileViews | |
| midpointViews <- maybeMidpointViews | |
| thirdQuartileViews <- maybeThirdQuartileViews | |
| completeViews <- maybeCompleteViews | |
| } yield VideoPerformanceStats(videoStarted, firstQuartileViews, midpointViews, thirdQuartileViews, completeViews) | |
| PerformanceStats(ioId, dsp, advertiserId, campaignId, campaignName, campaignCurrency, strategyId, strategyName, | |
| day, impressions, clicks, postViewConversions, postClickConversions, mediaCost, totalAdCost, totalCost, | |
| totalCostClientCurrency, media, maybeVideoStats) | |
| }, | |
| { s: PerformanceStats => | |
| Option(s.ioId :: s.dsp :: s.advertiserId :: s.campaignId :: s.campaignName :: s.campaignCurrency :: s.strategyId :: | |
| s.strategyName :: s.day :: s.impressions :: s.clicks :: s.postViewConversions :: s.postClickConversions :: | |
| s.mediaCost :: s.totalAdCost :: s.totalCost :: s.totalCostClientCurrency :: s.media :: s.maybeVideoStats.map(_.videoStarted) :: | |
| s.maybeVideoStats.map(_.firstQuartileViews) :: s.maybeVideoStats.map(_.midpointViews) :: | |
| s.maybeVideoStats.map(_.thirdQuartileViews) :: s.maybeVideoStats.map(_.completeViews) :: HNil | |
| ) | |
| } | |
| ) | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment