All Projects → underscoreio → Slickless

underscoreio / Slickless

Licence: apache-2.0
Support for shapeless HLists/Generics in Slick.

Programming Languages

scala
5932 projects

Labels

Projects that are alternatives of or similar to Slickless

ecommerce
A project for exploring Akka with Scala
Stars: ✭ 24 (-85.09%)
Mutual labels:  slick
Play Reactive Slick
This is Play Template with a nice User Interface. If you want to use Play as web framework and Postgres as Database then this demo project can be used as a starting point for your application.
Stars: ✭ 40 (-75.16%)
Mutual labels:  slick
Ngx Slick
angular6 a wrapper for slick plugin
Stars: ✭ 105 (-34.78%)
Mutual labels:  slick
slick-generic-dao-example
Generic DAO example implementation for Slick 3.2
Stars: ✭ 14 (-91.3%)
Mutual labels:  slick
Play Slick
Slick Plugin for Play
Stars: ✭ 792 (+391.93%)
Mutual labels:  slick
Play Slick3 Example
A simple skeleton for play scala slick applications.
Stars: ✭ 83 (-48.45%)
Mutual labels:  slick
ngx-slick-carousel
Angular 11+ wrapper for slick plugin
Stars: ✭ 82 (-49.07%)
Mutual labels:  slick
Slick Migration Api
Schema manipulation dialects and DSL for Slick (mirrored from gitlab)
Stars: ✭ 116 (-27.95%)
Mutual labels:  slick
Es Cqrs Shopping Cart
A resilient and scalable shopping cart system designed using Event Sourcing (ES) and Command Query Responsibility Segregation (CQRS)
Stars: ✭ 19 (-88.2%)
Mutual labels:  slick
Slickr
slick carousel htmlwidget for R
Stars: ✭ 104 (-35.4%)
Mutual labels:  slick
Akka Persistence Jdbc
Asynchronously writes journal and snapshot entries to configured JDBC databases so that Akka Actors can recover state
Stars: ✭ 271 (+68.32%)
Mutual labels:  slick
Slick Pg
Slick extensions for PostgreSQL
Stars: ✭ 780 (+384.47%)
Mutual labels:  slick
Jquery Slick Rails
Integrates Slick carousel, a jQuery plugin, into your Rails app.
Stars: ✭ 89 (-44.72%)
Mutual labels:  slick
play-slick3-steps
Example app using scala Play Framework and Slick
Stars: ✭ 64 (-60.25%)
Mutual labels:  slick
Unicorn
Small Slick library for type-safe id handling
Stars: ✭ 107 (-33.54%)
Mutual labels:  slick
slick-reference
Slickに関するサンプルやドキュメントを提供します。
Stars: ✭ 64 (-60.25%)
Mutual labels:  slick
Vue Agile
🎠 A carousel component for Vue.js
Stars: ✭ 1,167 (+624.84%)
Mutual labels:  slick
Slick Repo
CRUD Repositories for Slick based persistence Scala projects.
Stars: ✭ 120 (-25.47%)
Mutual labels:  slick
Kebs
Scala library to eliminate boilerplate
Stars: ✭ 113 (-29.81%)
Mutual labels:  slick
React Slick
React carousel component
Stars: ✭ 10,067 (+6152.8%)
Mutual labels:  slick

slickless

Build Status codecov Join the chat at https://gitter.im/underscoreio/slickless

Shapeless HList support for Slick.

by Richard Dallaway, Miles Sabin, and Dave Gurnell.

Copyright 2015-2019 Underscore Consulting LLP. Licensed Apache 2.

Versions

Scala Slick Slickless
2.13 3.3 Maven Central
2.12 3.3 Maven Central
2.12 3.2 0.3.3
2.11 3.1 0.3.0

Getting Started

Grab the code by adding the following to your build.sbt:

libraryDependencies ++= Seq(
  "com.typesafe.slick" %% "slick"     % "3.3.2",
  "com.chuusai"        %% "shapeless" % "2.3.3",
  "io.underscore"      %% "slickless" % "<<VERSION>>"
)

Synopsis

Import Slick, shapeless, and slickless, and you should be able to define Tables on any shapeless HList type:

import slick.jdbc.H2Profile.api._
import shapeless.{ HList, ::, HNil }
import slickless._

class Users(tag: Tag) extends Table[Long :: String :: HNil](tag, "users") {
  def id    = column[Long]( "id", O.PrimaryKey, O.AutoInc )
  def email = column[String]("email")

  def * = id :: email :: HNil
}

lazy val users = TableQuery[Users]

If you want to map your HList to a case class (i.e. you have a case class that has more than 22 fields and you are using slickless to bypass this limit), you can do the following

import slick.jdbc.H2Profile.api._
import shapeless.{ HList, ::, HNil, Generic }
import slickless._

case class User(id: Long, email: String)

class Users(tag: Tag) extends Table[User](tag, "users") {
  def id    = column[Long]( "id", O.PrimaryKey, O.AutoInc )
  def email = column[String]("email")

  def * = (id :: email :: HNil).mappedWith(Generic[User])
}

lazy val users = TableQuery[Users]

Notes

Compile time

Due to this issue, if you accidentally make a mapping which is incorrect, the Scala compiler can take a huge amount of time to report an error. If your slickless project is taking an insanely long amount of time to compile (more than a couple of minutes), try to make sure you have the mapping correct before using <>.

Build example without default resolvers

If you need to add resolvers into your build, here's an example:

resolvers += "Maven Central" at "https://repo1.maven.org/maven2/"

resolvers += Resolver.sonatypeRepo("releases")

resolvers += Resolver.sonatypeRepo("snapshots")

libraryDependencies ++= Seq(
  "com.typesafe.slick" %% "slick"     % "3.2.1",
  "com.chuusai"        %% "shapeless" % "2.3.3",
  "io.underscore"      %% "slickless" % "0.3.3"
)

Publishing

We use the sbt-pgp plugin and the sbt-sonatype plugin to publish to Maven Central.

Publish sequence could be:

sbt> set pgpPassphrase := Some(Array('s','e','c','r','3','t'))
sbt> set publishTo := sonatypePublishTo.value
sbt> +publishSigned
sbt> sonatypeRelease
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].