174 lines
5.0 KiB
Plaintext
174 lines
5.0 KiB
Plaintext
/// remote access to a mORMot server using mORMot units
|
|
{{#uri}}
|
|
// - retrieved from http://{{host}}/{{uri}}
|
|
// at {{time}} using "{{templateName}}" template
|
|
{{/uri}}
|
|
{{^uri}}
|
|
// - generated at {{time}}
|
|
{{/uri}}
|
|
unit {{fileName}};
|
|
|
|
{
|
|
WARNING:
|
|
This unit has been generated by a mORMot {{mORMotVersion}} server.
|
|
Any manual modification of this file may be lost after regeneration.
|
|
|
|
Synopse mORMot framework. Copyright (C) {{year}} Arnaud Bouchez
|
|
Synopse Informatique - http://synopse.info
|
|
|
|
This unit is released under a MPL/GPL/LGPL tri-license,
|
|
and therefore may be freely included in any application.
|
|
|
|
This unit would work on Delphi 6 and later, under Win32 and Win64 platforms,
|
|
and with FPC 2.7/trunk revision, under Win32 and Linux32.
|
|
}
|
|
|
|
interface
|
|
|
|
uses
|
|
SynCommons,
|
|
mORMot;
|
|
{{! recursive partials used to write records type definition}}
|
|
{{<writerec}}packed record
|
|
{{#fields}}
|
|
{{nestedIdentation}} {{propName}}: {{#typeDelphi}}{{typeDelphi}};{{/typeDelphi}}{{#nestedRecord}}{{>writerec}}{{nestedIdentation}} end;{{/nestedRecord}}{{#nestedSimpleArray}}array of {{typeDelphi}};{{/nestedSimpleArray}}{{#nestedRecordArray}}array of {{>writerec}}{{nestedIdentation}} end;{{/nestedRecordArray}}
|
|
{{/fields}}{{/writerec}}
|
|
{{<textrec}}{{#fields}}{{propName}} {{#typeDelphi}}{{typeDelphi}}{{/typeDelphi}}{{#nestedRecord}}{ {{>textrec}} }{{/nestedRecord}}{{#nestedSimpleArray}}array of {{typeDelphi}}{{/nestedSimpleArray}}{{#nestedRecordArray}}[ {{>textrec}} ]{{/nestedRecordArray}} {{/fields}}{{/textrec}}
|
|
{{#withEnumerates}}
|
|
type // define some enumeration types, used below
|
|
{{#enumerates}}
|
|
{{name}} = ({{#values}}{{.}}{{^-last}}, {{/-last}}{{/values}});
|
|
{{/enumerates}}
|
|
|
|
{{/withEnumerates}}
|
|
{{#withSets}}
|
|
type // define some set types, used below
|
|
{{#sets}}
|
|
{{name}} = set of({{#values}}{{.}}{{^-last}}, {{/-last}}{{/values}});
|
|
{{/sets}}
|
|
|
|
{{/withSets}}
|
|
{{#withRecords}}
|
|
type // define some record types, used as properties below
|
|
{{#records}}
|
|
{{name}} = {{>writerec}} end;
|
|
|
|
{{/records}}
|
|
{{/withRecords}}
|
|
{{#withArrays}}
|
|
type // define some dynamic array types, used as properties below
|
|
{{#arrays}}
|
|
{{name}} = array of {{typeSource}};
|
|
{{/arrays}}
|
|
|
|
{{/withArrays}}
|
|
{{<method}}{{verb}} {{methodName}}({{#args}}{{^dirResult}}{{dirName}} {{argName}}: {{typeDelphi}}{{commaArg}}{{/dirResult}}{{/args}}){{#args}}{{#dirResult}}: {{typeDelphi}}{{/dirResult}}{{/args}};{{/method}}
|
|
type
|
|
{{#orm}}
|
|
{{^isInMormotPas}}
|
|
/// map "{{tableName}}" table
|
|
{{className}} = class({{classParent}})
|
|
protected
|
|
{{#fields}}
|
|
f{{name}}: {{typeDelphi}};
|
|
{{/fields}}
|
|
{{#hasRecords}}
|
|
public
|
|
class procedure InternalRegisterCustomProperties(Props: TSQLRecordProperties); override;
|
|
{{#fields}}
|
|
{{#isrecord}}
|
|
property {{name}}: {{typeDelphi}} read f{{name}} write f{{name}}{{#unique}} stored AS_UNIQUE{{/unique}};
|
|
{{/isrecord}}
|
|
{{/fields}}
|
|
{{/hasRecords}}
|
|
published
|
|
{{#fields}}
|
|
{{^isrecord}}
|
|
property {{name}}: {{typeDelphi}}{{#width}} index {{width}}{{/width}} read f{{name}} write f{{name}}{{#unique}} stored AS_UNIQUE{{/unique}};
|
|
{{/isrecord}}
|
|
{{/fields}}
|
|
end;
|
|
|
|
{{/isInMormotPas}}
|
|
{{/orm}}
|
|
{{#soa.services}}
|
|
/// service accessible {{#uri}}via http://{{host}}/{{root}}/{{uri}}{{/uri}}
|
|
// - this service will run in sic{{instanceCreationName}} mode
|
|
I{{interfaceURI}} = interface(IInvokable)
|
|
['{{GUID}}']
|
|
{{#methods}}
|
|
{{>method}}
|
|
{{/methods}}
|
|
end;
|
|
|
|
{{/soa.services}}
|
|
|
|
/// return the database Model corresponding to this server
|
|
function GetModel: TSQLModel;
|
|
|
|
const
|
|
/// the server port{{#uri}}, corresponding to http://{{host}}{{/uri}}
|
|
SERVER_PORT = {{port}};
|
|
|
|
|
|
{{#soa.enabled}}
|
|
/// define the interface-based services to be consummed by the client
|
|
// - will define the following interfaces:
|
|
{{#soa.services}}
|
|
// ! I{{interfaceURI}} sic{{instanceCreationName}} {{GUID}}
|
|
{{/soa.services}}
|
|
procedure RegisterServices(Client: TSQLRestClientURI);
|
|
{{/soa.enabled}}
|
|
|
|
|
|
implementation
|
|
|
|
{{#orm}}
|
|
{{#hasRecords}}
|
|
{ {{className}} }
|
|
|
|
class procedure {{className}}.InternalRegisterCustomProperties(
|
|
Props: TSQLRecordProperties);
|
|
begin
|
|
{{#fields}}
|
|
{{#isrecord}}
|
|
Props.RegisterCustomPropertyFromRTTI(Self,TypeInfo({{typeDelphi}}),
|
|
'{{name}}',@{{className}}(nil).f{{name}});
|
|
{{/isrecord}}
|
|
{{/fields}}
|
|
end;
|
|
|
|
{{/hasRecords}}
|
|
{{/orm}}
|
|
|
|
function GetModel: TSQLModel;
|
|
begin
|
|
result := TSQLModel.Create([{{#orm}}{{className}}{{comma}}{{/orm}}],'{{root}}');
|
|
end;
|
|
|
|
{{#soa.enabled}}
|
|
procedure RegisterServices(Client: TSQLRestClientURI);
|
|
begin
|
|
{{#soa.services}}
|
|
Client.ServiceRegister(TypeInfo(I{{interfaceURI}}),sic{{instanceCreationName}});
|
|
{{/soa.services}}
|
|
end;
|
|
{{/soa.enabled}}
|
|
|
|
{{#withRecords}}
|
|
const // text-based types definition for records and dynamic arrays
|
|
{{#records}}
|
|
__{{name}} = '{{>textrec}}';
|
|
{{/records}}
|
|
|
|
initialization
|
|
{{#enumerates}}
|
|
TTextWriter.RegisterCustomJSONSerializerFromTextSimpleType(
|
|
TypeInfo({{name}}));
|
|
{{/enumerates}}
|
|
{{#records}}
|
|
TTextWriter.RegisterCustomJSONSerializerFromText(
|
|
TypeInfo({{name}}),__{{name}});
|
|
{{/records}}
|
|
{{/withRecords}}
|
|
end. |