xtool/contrib/mORMot/SQLite3/Samples/30 - MVC Server/MVCServerFirebird.dpr

103 lines
3.1 KiB
ObjectPascal

/// MVC sample web application, publishing a simple BLOG and PostgreSQL as DB
program MVCServerFirebird;
{$APPTYPE CONSOLE}
// please select one of the two! :)
{$define USEZEOSFIREBIRD}
{.$define USEFIREDACFIREBIRD}
uses
{$I SynDprUses.inc} // will enable FastMM4 prior to Delphi 2006
SynCrtSock,
SynCommons,
SynTable,
SynLog,
mORMot,
SynSQLite3,
SynSQLite3Static,
mORMotSQLite3,
mORMotHttpServer,
mORMotMVC,
SynDB,
mORMotDB,
{$ifdef USEZEOSFIREBIRD}
SynDBZeos,
{$endif}
{$ifdef USEFIREDACFIREBIRD}
SynDBFireDAC,
{$ifdef ISDELPHIXE5} FireDAC.Phys.IB, {$else} uADPhysIB, {$endif}
{$endif}
MVCModel,
MVCViewModel,
SysUtils;
var aModel: TSQLModel;
{$ifdef USEFIREDACFIREBIRD}
aURI: RawUTF8;
aDriver: TADPhysIBDriverLink;
{$endif}
aExternalDB: TSQLDBConnectionPropertiesThreadSafe;
aServer: TSQLRestServerDB;
aApplication: TBlogApplication;
aHTTPServer: TSQLHttpServer;
begin
with TSQLLog.Family do
Level := LOG_VERBOSE;
aModel := CreateModel;
try
{$ifdef USEZEOSFIREBIRD}
aExternalDB := TSQLDBZEOSConnectionProperties.Create(
TSQLDBZEOSConnectionProperties.URI(dFIREBIRD,'',
'..\15 - External DB performance\Firebird\fbembed.dll'),
'MVCServerFirebird.fdb','sysdba','masterkey');
aExternalDB.ThreadingMode := tmMainConnection; // as expected for FB embedded
{$endif}
{$ifdef USEFIREDACFIREBIRD}
aDriver := TADPhysIBDriverLink.Create(nil);
aDriver.VendorLib := '..\15 - External DB performance\Firebird\fbembed.dll';
aURI := FIREDAC_PROVIDER[dFirebird];
if not FileExists('MVCServerFirebird.fdb') then
aURI := aURI+'?CreateDatabase=Yes';
aExternalDB := TSQLDBFireDACConnectionProperties.Create(
aURI,'MVCServerFirebird.fdb','sysdba','masterkey');
{$endif}
try
VirtualTableExternalRegisterAll(aModel,aExternalDB,[regMapAutoKeywordFields]);
aServer := TSQLRestServerDB.Create(aModel,SQLITE_MEMORY_DATABASE_NAME);
try
aServer.AcquireExecutionMode[execORMGet] := amBackgroundThread;
aServer.AcquireExecutionMode[execORMWrite] := amBackgroundThread;
aServer.CreateMissingTables;
aApplication := TBlogApplication.Create;
try
aApplication.Start(aServer);
aHTTPServer := TSQLHttpServer.Create('8092',aServer,'+',useHttpApiRegisteringURI);
try
aHTTPServer.RootRedirectToURI('blog/default'); // redirect localhost:8092
writeln('"MVC Blog Server" launched on port 8092 using ',aHttpServer.HttpServer.ClassName);
writeln(#10'You can check http://localhost:8092/blog/mvc-info for information');
writeln('or point to http://localhost:8092 to access the web app.');
writeln(#10'Press [Enter] to close the server.'#10);
readln;
finally
aHTTPServer.Free;
end;
finally
aApplication.Free;
end;
finally
aServer.Free;
end;
finally
aExternalDB.Free;
end;
finally
aModel.Free;
end;
{$ifdef USEFIREDACFIREBIRD}
aDriver.Free;
{$endif}
end.