Important feature Database Initialization added: Release of 1.0.0-RC3 which can be downloaded on the download page.
When living continuous integration and continuous delivery, it is vital that things like database migrations and initialization are performed in a controlled, but automatic way.
A Strolch-based application is using the PostgreSQL persistence layer. The implementation understands the concepts of migration, and validating the database schema, but currently a mechanism to automatically initialize the database with a minimal set of data was missing.
Migrating a database for Strolch is mostly a one time thing. The object model in
Strolch is quite static, so there is seldom a need to migrate the database.
Domain specific changes, i.e. new Resources, or adding Parameters to Resources,
is not a schema change. Thus, instead of going the way other frameworks go, e.g.
Ruby on Rails, we built the data initialization right into the
PersistenceHandler
.
Now if the PostgreSQL PersistenceHandler creates the schema, then it might also
initialize the minimal set of data. For this to work, the PersistenceHandler
checks if the flags allowSchemaCreation
, allowSchemaDrop
and
allowDbInitOnSchemaCreate
. If those flags are enabled, and the schema was
created during initialization, then the database is also initialized with the
contents of the XML file configured under key dataStoreFile
of the relevant
Realm
.
The database initialization is done as a system user action which must have the
name db_initializer
. This is another fail-safe, so that on a production system,
this user can simply be deleted.
So, Strolch 1.0.0-RC3 is out the door, go ahead and try it out.