Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
com.typesafe.slick:slick_2.13
Advanced tools
Slick is an advanced, comprehensive database access library for Scala with strongly-typed, highly composable APIs.
Slick makes it easy to use your database in a way that's natural to it. It allows you to work with relational databases almost as if you were using Scala collections, while at the same time giving you full control over when the database is accessed and how much data is transferred. And by writing your queries in Scala you can benefit from compile-time safety and great compositionality, while retaining the ability to drop down to raw SQL when necessary for custom or advanced database features.
Its features include:
Future
for complete results, and a streaming API that conforms to
the Reactive Streams interface, for easy integration with
any streaming library, such as Akka Streams,
FS2, or ZIO.Slick features an advanced query compiler which can generate SQL for a variety of different database engines from the same Scala code, allowing you to focus on application logic without worrying about database-specific syntax and quirks.
Full documentation, including Scaladocs and more complex examples, can be found on the website. For the latest release you can go straight to https://scala-slick.org/doc/stable/
Our friends at underscore.io
have written "Essential
Slick", an excellent guide to using slick from first principles, and is
available as a free download
As a simple example we will create a Scala object Coffee
, and a table to store
instances of this object in the database:
import slick.jdbc.PostgresProfile.api._
// First declare our Scala object
final case class Coffee(name: String, price: Double)
// Next define how Slick maps from a database table to Scala objects
class Coffees(tag: Tag) extends Table[Coffee](tag, "COFFEES") {
def name = column[String]("NAME")
def price = column[Double]("PRICE")
def * = (name, price).mapTo[Coffee]
}
// The `TableQuery` object gives us access to Slick's rich query API
val coffees = TableQuery[Coffees]
// Inserting is done by appending to our query object
// as if it were a regular Scala collection
// SQL: insert into COFFEES (NAME, PRICE) values ('Latte', 2.50)
coffees += Coffee("Latte", 2.50)
// Fetching data is also done using the query object
// SQL: select NAME from COFFEES
coffees.map(_.name)
// More complex queries can be chained together
// SQL: select NAME, PRICE from COFFEES where PRICE < 10.0 order by NAME
coffees.filter(_.price < 10.0).sortBy(_.name)
The following databases are directly supported by Slick, and are currently covered by a large suite of automated tests to ensure compatibility:
Database | JDBC Driver | Tested server version |
---|---|---|
PostgreSQL | "org.postgresql" % "postgresql" % "42.5.0" | Latest |
MySQL | "com.mysql" % "mysql-connector-j" % "8.0.33" | Latest |
SQLServer | "com.microsoft.sqlserver" % "mssql-jdbc" % "7.2.2.jre11" | 2022 |
Oracle | "com.oracle.database.jdbc.debug" % "ojdbc8_g" % "21.6.0.0.1" | 11g |
DB2 | "com.ibm.db2.jcc" % "db2jcc" % "db2jcc4" | 11.5.7.0 |
Derby/JavaDB | "org.apache.derby" % "derby" % "10.14.2.0" | |
H2 | "com.h2database" % "h2" % "1.4.200" | |
HSQLDB/HyperSQL | "org.hsqldb" % "hsqldb" % "2.5.2" | |
SQLite | "org.xerial" % "sqlite-jdbc" % "3.39.2.1" |
Accessing other database systems is possible, although possibly with a reduced feature set.
Slick is community-maintained: pull requests are very welcome, and we ask that all contributors abide by the Lightbend Community Code of Conduct.
Lightbend staff (such as @SethTisue) may be able to assist with administrative issues.
FAQs
Scala Language-Integrated Connection Kit
We found that com.typesafe.slick:slick_2.13 demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.