61 lines
1.7 KiB
ObjectPascal
61 lines
1.7 KiB
ObjectPascal
program Project14ServerExternal;
|
|
|
|
{ this sample will create the main SQLite3 DB as in-memory, but will define all
|
|
tables as external, in the same .db file than Project14Server
|
|
-> just to demonstrate VirtualTableExternalRegisterAll() function and
|
|
reproduce the https://synopse.info/forum/viewtopic.php?id=1008 issue }
|
|
|
|
{$APPTYPE CONSOLE}
|
|
|
|
uses
|
|
{$I SynDprUses.inc} // use FastMM4 on older Delphi, or set FPC threads
|
|
SysUtils,
|
|
mORMot,
|
|
mORMotSQLite3,
|
|
SynCommons, SynLog,
|
|
SynDB,
|
|
SynDBSQLite3, SynSQLite3, SynSQLite3Static,
|
|
mORMotDB,
|
|
Project14Interface;
|
|
|
|
type
|
|
TServiceCalculator = class(TInterfacedObject, ICalculator)
|
|
public
|
|
function Add(n1,n2: integer): integer;
|
|
end;
|
|
|
|
function TServiceCalculator.Add(n1, n2: integer): integer;
|
|
begin
|
|
result := n1+n2;
|
|
end;
|
|
|
|
var
|
|
aModel: TSQLModel;
|
|
aProps: TSQLDBSQLite3ConnectionProperties;
|
|
begin
|
|
aProps := TSQLDBSQLite3ConnectionProperties.Create(
|
|
StringToUtf8(ChangeFileExt(ExeVersion.ProgramFileName,'.db')),'','','');
|
|
try
|
|
aModel := TSQLModel.Create([TSQLAuthGroup,TSQLAuthUser],ROOT_NAME);
|
|
VirtualTableExternalRegisterAll(aModel,aProps);
|
|
try
|
|
with TSQLRestServerDB.Create(aModel,SQLITE_MEMORY_DATABASE_NAME,true) do
|
|
try
|
|
CreateMissingTables; // we need AuthGroup and AuthUser tables
|
|
ServiceDefine(TServiceCalculator,[ICalculator],sicShared);
|
|
if ExportServerNamedPipe(APPLICATION_NAME) then
|
|
writeln('Background server is running.'#10) else
|
|
writeln('Error launching the server'#10);
|
|
write('Press [Enter] to close the server.');
|
|
readln;
|
|
finally
|
|
Free;
|
|
end;
|
|
finally
|
|
aModel.Free;
|
|
end;
|
|
finally
|
|
aProps.Free;
|
|
end;
|
|
end.
|