source upload
This commit is contained in:
96
contrib/mORMot/SQLite3/Samples/26 - RESTful ORM/RESTData.pas
Normal file
96
contrib/mORMot/SQLite3/Samples/26 - RESTful ORM/RESTData.pas
Normal file
@@ -0,0 +1,96 @@
|
||||
unit RESTData;
|
||||
|
||||
{$I Synopse.inc} // define HASINLINE and some FPC-specific options
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
SynCommons,
|
||||
SynTable, // for TSynValidate
|
||||
mORMot;
|
||||
|
||||
type
|
||||
TSQLRecordWithModTimeAndMetaData = class(TSQLRecord)
|
||||
protected
|
||||
fCreated: TCreateTime;
|
||||
fModified: TModTime;
|
||||
fMetaData: variant;
|
||||
published
|
||||
property Modified: TModTime read fModified write fModified;
|
||||
property Created: TCreateTime read fCreated write fCreated;
|
||||
property MetaData: variant read fMetaData write fMetaData;
|
||||
end;
|
||||
|
||||
TSQLNoteKind = class(TSQLRecordWithModTimeAndMetaData)
|
||||
protected
|
||||
fName: RawUTF8;
|
||||
public
|
||||
class procedure InitializeTable(Server: TSQLRestServer;
|
||||
const FieldName: RawUTF8; Options: TSQLInitializeTableOptions); override;
|
||||
published
|
||||
property Name: RawUTF8 read fName write fName stored AS_UNIQUE;
|
||||
end;
|
||||
|
||||
TSQLNote = class(TSQLRecordWithModTimeAndMetaData)
|
||||
protected
|
||||
fIdent: RawUTF8;
|
||||
fKind: TSQLNoteKind;
|
||||
fParent: TSQLNote;
|
||||
published
|
||||
property Ident: RawUTF8 read fIdent write fIdent;
|
||||
property Kind: TSQLNoteKind read fKind write fKind;
|
||||
property Parent: TSQLNote read fParent write fParent;
|
||||
end;
|
||||
|
||||
TSQLNoteFile = class(TSQLRecordWithModTimeAndMetaData)
|
||||
protected
|
||||
fFileName: RawUTF8;
|
||||
fNote: TSQLNote;
|
||||
published
|
||||
property FileName: RawUTF8 read fFileName write fFileName;
|
||||
property Note: TSQLNote read fNote write fNote;
|
||||
end;
|
||||
|
||||
TSQLUser = class(TSQLAuthUser)
|
||||
protected
|
||||
fMetaData: variant;
|
||||
published
|
||||
property MetaData: variant read fMetaData write fMetaData;
|
||||
end;
|
||||
|
||||
|
||||
function DataModel(const RootURI: RawUTF8): TSQLModel;
|
||||
|
||||
const
|
||||
HTTP_PORT = '888';
|
||||
|
||||
|
||||
implementation
|
||||
|
||||
function DataModel(const RootURI: RawUTF8): TSQLModel;
|
||||
begin
|
||||
result := TSQLModel.Create(
|
||||
[TSQLAuthGroup,TSQLUser,TSQLNoteKind,TSQLNote,TSQLNoteFile],
|
||||
RootURI);
|
||||
TSQLNoteKind.AddFilterOrValidate('Name',TSynValidateText.Create('{MinLength:3}'));
|
||||
TSQLNote.AddFilterOrValidate('Ident',TSynValidateText.Create('{MinLength:3}'));
|
||||
TSQLNoteFile.AddFilterOrValidate('FileName',TSynValidateNonVoidText.Create);
|
||||
TSQLNoteFile.AddFilterOrValidate('FileName',TSynValidateText.Create('{MaxPunctCount:0}'));
|
||||
end;
|
||||
|
||||
{ TSQLNoteKind }
|
||||
|
||||
class procedure TSQLNoteKind.InitializeTable(Server: TSQLRestServer;
|
||||
const FieldName: RawUTF8; Options: TSQLInitializeTableOptions);
|
||||
var Kind: TSQLNoteKind;
|
||||
begin
|
||||
inherited;
|
||||
Kind := TSQLNoteKind.Create;
|
||||
Kind.Name := 'PostIt';
|
||||
Server.Add(Kind,true);
|
||||
Kind.Name := 'Todo';
|
||||
Server.Add(Kind,true);
|
||||
Kind.Free;
|
||||
end;
|
||||
|
||||
end.
|
Reference in New Issue
Block a user