Squeak
  links to this page:    
View this PageEdit this PageUploads to this PageHistory of this PageTop of the SwikiRecent ChangesSearch the SwikiHelp Guide
Sails Tutorial
Last updated at 7:18 am UTC on 27 July 2007

Step 1. Making your domain model

First of all you need to describe your domain model. You don't need to think about input-output, data layer or something like this.
Just funny good model, that is work good in workspace.

Example:

At Sails-Test category you can find three classes: Blog, BlogPost and BlogComment. Those classes desribing a Simple Blog domain model:
  1. Blog consists of couple of BlogPost entries,
  2. Every BlogPost has a Title, Post (text itself) and couple of BlogComments,
  3. Every BlogComment has a Comment only (text of comment).

Step 2. Describing your objects

You need make metadescription with Magritte for every of your classes maked at Step 1.
I.e. you must create a class method descriptionField for every "external" instvar with name "field". "External" men "user interacts with it" or "I need save it in database". Every such a method must return MAElementDescription instance, describing correspondent field (let's call "external instvar" so).
NB: see Magritte documentation for detail metadesribing instructions.

Example:

You can find examples of such a description at Sails-Test category in Blog, BlogPost and BlogComment classes.
NB: focus your attention on MAToManyRelationDescription especially.

Step 3. Root element selection and Sails instance making.

Now you need select "root" class of your domain model. You will see this component representation when you start generated apllication.
If you have no such a class (for example, you have 2 or 3 "main" components), you must make artificial one with field for every "semiroot" class you have.

When your root class was finded, you need open a workspace and write code like this:
	blogGen := Sails newFor: 'BlogExample'.
	blogGen addModel:(SailsModel fromList:#(Blog BlogPost BlogComment)).
	blogGen generate.

NB: as far as Blog is root class of BlogExample, it placed first in list. You need to place your root class first, too.

Execute this code, and Sails will generate a category Sails-Test-BlogExample with WAComponent child for every class of domain model, and will register seaside application called "BlogExample" (you will find it with seaside browser).
And this application is one, made from your model without single Seaside code.
Congratulations!

If you are lazy.

If you are lazy and don't want waste your time on making some model and writing stuff I tell before, you can use SailsTest class. It class method named test2 describe everything needed for example blog.

Troubles

You can obtain error, if you try sort MAToManyRelationDescription described fields. This error apeared, if no default values set either in initialize method or in metadescription and if your list is empty.