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

84 lines
2.4 KiB
ObjectPascal

/// MVC sample web application, publishing a simple BLOG
program MVCServer;
{$ifdef Linux}
{$ifdef FPC_CROSSCOMPILING}
{$ifdef CPUARM}
//if GUI, then uncomment
//{$linklib GLESv2}
{$endif}
{$linklib libc_nonshared.a}
{$endif}
{$endif}
{$ifdef MSWINDOWS}
{$APPTYPE CONSOLE}
{$endif MSWINDOWS}
{$I Synopse.inc} // define HASINLINE WITHLOG ONLYUSEHTTPSOCKET
uses
{$I SynDprUses.inc} // will enable FastMM4 prior to Delphi 2006
SysUtils,
SynCrtSock,
SynCommons,
SynTable,
SynLog,
mORMot,
SynSQLite3,
SynSQLite3Static,
mORMotSQLite3,
mORMotHttpServer,
mORMotMVC,
MVCModel in 'MVCModel.pas',
MVCViewModel in 'MVCViewModel.pas';
var aModel: TSQLModel;
aServer: TSQLRestServerDB;
aApplication: TBlogApplication;
aHTTPServer: TSQLHttpServer;
begin
with TSQLLog.Family do begin
Level := LOG_VERBOSE;
PerThreadLog := ptIdentifiedInOnFile;
RotateFileCount := 10;
RotateFileSizeKB := 20 shl 10;
FileExistsAction := acAppend; // as expected by rotation
end;
aModel := CreateModel;
try
aServer := TSQLRestServerDB.Create(aModel,ChangeFileExt(ExeVersion.ProgramFileName,'.db'));
try
aServer.DB.Synchronous := smNormal;
aServer.DB.LockingMode := lmExclusive;
aServer.Options := aServer.Options+[rsoNoTableURI];
aServer.CreateMissingTables;
aApplication := TBlogApplication.Create;
try
aApplication.Start(aServer);
aServer.ServiceMethodRegisterPublishedMethods('', aApplication);
aHTTPServer := TSQLHttpServer.Create('8092',aServer
{$ifndef ONLYUSEHTTPSOCKET},'+',useHttpApiRegisteringURI{$endif});
try
aHTTPServer.RootRedirectToURI('blog/default'); // redirect / to blog/default
aServer.RootRedirectGet := 'blog/default'; // redirect blog to blog/default
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;
writeln('HTTP server shutdown...');
finally
aHTTPServer.Free;
end;
finally
aApplication.Free;
end;
finally
aServer.Free;
end;
finally
aModel.Free;
end;
end.