Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Play!: Does Slick's DDL replace Evolutions?

This may be a dumb question but I'm new to Play! & Slick. While using Slick's table.ddl.create I noticed that it doesn't create an evolution but the application still works.

Does this replace evolutions? Can I use it in production? Should I?

Thanks in advance.

like image 668
goo Avatar asked Jan 28 '14 11:01

goo


2 Answers

Both Slick and the Slick DDL Plugin can only generate code to create or delete your schema, not to evolve it. So you still need Play evolutions or something similar to modify an existing schema along the way. In the Slick team, we are working towards a migration solution (on a lower priority). Many parts are already there, but haven't been integrated properly yet. There are @nafg's schema manipulation DSL: https://github.com/nafg/slick-migration-api and my one year old prototype for a database version management tool: https://github.com/cvogt/migrations/ . The code generation part of the latter has already made it into Slick 2.0. Properly integrating all of these will give us a comprehensive solution for type-safe database migration scripts.

like image 83
cvogt Avatar answered Nov 10 '22 18:11

cvogt


Slick is able to generate DDL for your defined tables it does not contain logic that does what evolutions does.

The play slick plugin on the other hand contains a SlickDDLPlugin that will generate and run DDL evolutions for you when you run your app in non prod-mode (with play run for example) It also dumps out those evolutions in your conf/evolutions directory.

The sources that handles evolutions: https://github.com/freekh/play-slick/blob/master/src/main/scala/play/api/db/slick/plugin/SlickPlugin.scala

like image 25
johanandren Avatar answered Nov 10 '22 19:11

johanandren