Squirm model is an ORM-like layer on top of Squirm that uses stored procedures to manage handle CRUD functionality.
It comes with a generator to generate table creation and stored procedure DDL, and eventually will include migration scripts to handle database schema versioning, but this is not yet complete.
Column type guessing
Squirm Model's generators will guess the column types based on the names you give them:
$ squirm table person id email birth_date lat lng bio CREATE TABLE "person" ( "id" SERIAL NOT NULL PRIMARY KEY, "email" VARCHAR(64) NOT NULL UNIQUE, "birth_date" DATE, "lat" NUMERIC(18,12), "lng" NUMERIC(18,12), "bio" TEXT );
Because Squirm does not use the Active Record pattern of "tables are classes rows are instances," you must define a "sample" for each model, in order to know the names and type of the ORM fields.
class Foo extend Squirm::Model sample do |s| s.id = 1.freeze s.email = "email@example.com" end end
Frozen attributes will make Squirm Model generate only an attribute reader, rather than a reader and writer.
The sample method can also be used to create fixtures in unit tests; and this is especially important here because Squirm Model encourages you to overwrite your CRUD code.