GL project is a XML file containing all required information about transforming logical models into target code.
You should specify following elements of configuration at least:
Here is an example of typical project structure
<?xml version="1.0" encoding="utf-8"?>
<GenieLamp xmlns="http://www.arbinada.com/GenieLamp/1/0"
project="Inventory"
version="1.0">
<!-- Model files -->
<ImportModel fileName="Inventory.Main.xml" />
<ImportModel fileName="Inventory.Physical.Db.xml" />
<!-- Genies to be used -->
<Genie name="SqlServer"
type="GenieLamp.Genies.SqlServer.SqlServerGenie"
assembly="GenieLamp.Genies.SqlServer"
active="false"
outDir="%PROJECT_DIR%/../SQL/SqlServer-%TARGET_VERSION%"
outFileName="%PROJECT_NAME%.sql"
updateDatabase="true"
targetVersion="2008">
<Param name="Database.Create" value="true" />
<Param name="Database.Name" value="Inventory" />
<Param name="Schemas.Create" value="true" />
<Param name="UpdateDatabase.Utility" value="sqlcmd" />
<Param name="UpdateDatabase.Arguments" value="-b -S localhost -i %FILE_NAME%" />
</Genie>
<Genie name="NHibernate"
type="GenieLamp.Genies.NHibernate.NHibernateGenie"
assembly="GenieLamp.Genies.NHibernate"
active="true"
outDir="%PROJECT_DIR%/../Domain"
outFileName="%PROJECT_NAME%.Domain.cs"
targetVersion="*">
<Param name="TargetAssemblyName" value="GenieLamp.Examples.%PROJECT_NAME%.Domain" />
</Genie>
<Genie name="ServiceStack Services Interfaces"
type="GenieLamp.Genies.ServicesLayer.ServiceStack.ServicesInterfacesGenie"
assembly="GenieLamp.Genies.ServicesLayer"
active="true"
outDir="%PROJECT_DIR%/../Services.Interfaces"
targetVersion="*">
</Genie>
<Genie name="ServiceStack Services"
type="GenieLamp.Genies.ServicesLayer.ServiceStack.ServicesGenie"
assembly="GenieLamp.Genies.ServicesLayer"
active="true"
outDir="%PROJECT_DIR%/../Services"
targetVersion="*">
</Genie>
<Configuration>
<!-- Layers configurations -->
<Layer name="Persistence">
<NamingConvention style="uppercase" maxLength="128">
<Param name="PrimaryKey.ColumnTemplate" value="ID_%TABLE%" />
<Param name="PrimaryKey.ConstraintTemplate" value="PK_%TABLE%" />
<Param name="Unique.ConstraintTemplate" value="UC_%TABLE%_%COLUMNS%%COUNTER%" />
<Param name="ForeignKey.ColumnTemplate" value="ID_%REF_TABLE%" />
<Param name="ForeignKey.ConstraintTemplate" value="FK_%TABLE%_%REF_TABLE%_%COLUMNS%%COLUMNS_HASH%" />
<Param name="Generator.Template" value="SQ_%TABLE%" />
<Param name="Index.Template" value="IX%COUNTER%_%TABLE%_%COLUMNS_HASH%" />
</NamingConvention>
<Param name="ForeignKey.CreateIndex" value="true" />
<Param name="BooleanValues" value="YesNo"/>
</Layer>
<Layer name="Domain">
<Param name="BaseNamespace" value="GenieLamp.Examples.%PROJECT_NAME%" />
</Layer>
<Layer name="Services">
<Param name="BaseNamespace" value="GenieLamp.Examples.%PROJECT_NAME%" />
</Layer>
<!-- Used patterns -->
<Pattern name="Registry">
<Param name="Schema" value="Core" />
<Param name="PersistentSchema" value="EXAMPLES" />
<Param name="RegistryEntity.Name" value="EntityRegistry" />
<Param name="TypesEntity.Name" value="EntityType" />
<Param name="TypesEntity.PrimaryId.Type" value="smallint" />
<Param name="PrimaryId.Type" value="bigint" />
<Exclude entity="Inventory.DocumentLines" />
</Pattern>
<Pattern name="StateVersion">
<Param name="Attribute.Name" value="Version" />
<Param name="Attribute.Type" value="int" />
</Pattern>
<Pattern name="Audit">
<Exclude entity="Inventory.DocumentLines" />
</Pattern>
<Pattern name="Localization">
</Pattern>
<Pattern name="Security">
</Pattern>
</Configuration>
</GenieLamp>