tvplanit: Add indexes to ZEOS datastore tables.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@4759 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2016-06-15 19:38:44 +00:00
parent c836531e38
commit bbb18d80e8

View File

@ -72,21 +72,24 @@ begin
FTasksTable.TableName := 'Tasks'; FTasksTable.TableName := 'Tasks';
end; end;
// Connection and tables are active afterwards!
procedure TVpZeosDatastore.CreateTables; procedure TVpZeosDatastore.CreateTables;
begin begin
if FileExistsUTF8(FConnection.Database) then FConnection.Connected := true;
exit; if not FContactsTable.Exists then CreateTable(ContactsTableName);
if not FEventsTable.Exists then CreateTable(EventsTableName);
if not FResourceTable.Exists then CreateTable(ResourceTableName);
if not FTasksTable.Exists then CreateTable(TasksTableName);
CreateTable(ContactsTableName); ContactsTable.Open;
CreateTable(EventsTableName); EventsTable.Open;
CreateTable(ResourceTableName); ResourceTable.Open;
CreateTable(TasksTableName); TasksTable.Open;
end; end;
procedure TVpZeosDatastore.CreateTable(const ATableName: String); procedure TVpZeosDatastore.CreateTable(const ATableName: String);
begin begin
FConnection.Connected := true; if ATableName = ContactsTableName then begin
if ATableName = ContactsTableName then
FConnection.ExecuteDirect( FConnection.ExecuteDirect(
'CREATE TABLE Contacts ('+ 'CREATE TABLE Contacts ('+
'RecordID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, '+ 'RecordID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, '+
@ -129,9 +132,19 @@ begin
'UserField6 VARCHAR(100), '+ 'UserField6 VARCHAR(100), '+
'UserField7 VARCHAR(100), '+ 'UserField7 VARCHAR(100), '+
'UserField8 VARCHAR(100), '+ 'UserField8 VARCHAR(100), '+
'UserField9 VARCHAR(100) )') 'UserField9 VARCHAR(100) )'
else );
if ATableName = EventsTableName then FConnection.ExecuteDirect(
'CREATE INDEX ContactsResourceID_idx ON Contacts(ResourceID)'
);
FConnection.ExecuteDirect(
'CREATE INDEX ContactsName_idx ON Contacts(LastName, FirstName)'
);
FConnection.ExecuteDirect(
'CREATE INDEX ContactsCompany_idx ON Contacts(Company)'
);
end else
if ATableName = EventsTableName then begin
FConnection.ExecuteDirect( FConnection.ExecuteDirect(
'CREATE TABLE Events ('+ 'CREATE TABLE Events ('+
'RecordID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, '+ 'RecordID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, '+
@ -160,9 +173,19 @@ begin
'UserField6 VARCHAR(100), '+ 'UserField6 VARCHAR(100), '+
'UserField7 VARCHAR(100), '+ 'UserField7 VARCHAR(100), '+
'UserField8 VARCHAR(100), '+ 'UserField8 VARCHAR(100), '+
'UserField9 VARCHAR(100) )') 'UserField9 VARCHAR(100) )'
else );
if ATableName = ResourceTableName then FConnection.ExecuteDirect(
'CREATE INDEX EventsResourceID_idx ON Events(ResourceID)'
);
FConnection.ExecuteDirect(
'CREATE INDEX EventsStartTime_idx ON Events(StartTime)'
);
FConnection.ExecuteDirect(
'CREATE INDEX EventsEndTime_idx ON Events(EndTime)'
);
end else
if ATableName = ResourceTableName then begin
FConnection.ExecuteDirect( FConnection.ExecuteDirect(
'CREATE TABLE Resources ( '+ 'CREATE TABLE Resources ( '+
'ResourceID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, '+ 'ResourceID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, '+
@ -179,9 +202,10 @@ begin
'UserField6 VARCHAR(100), '+ 'UserField6 VARCHAR(100), '+
'UserField7 VARCHAR(100), '+ 'UserField7 VARCHAR(100), '+
'UserField8 VARCHAR(100), '+ 'UserField8 VARCHAR(100), '+
'UserField9 VARCHAR(100) )') 'UserField9 VARCHAR(100) )'
else );
if ATableName = TasksTableName then end else
if ATableName = TasksTableName then begin
FConnection.ExecuteDirect( FConnection.ExecuteDirect(
'CREATE TABLE Tasks ('+ 'CREATE TABLE Tasks ('+
'RecordID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, '+ 'RecordID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, '+
@ -203,7 +227,18 @@ begin
'UserField6 VARCHAR(100), '+ 'UserField6 VARCHAR(100), '+
'UserField7 VARCHAR(100), '+ 'UserField7 VARCHAR(100), '+
'UserField8 VARCHAR(100), '+ 'UserField8 VARCHAR(100), '+
'UserField9 VARCHAR(100) )'); 'UserField9 VARCHAR(100) )'
);
FConnection.ExecuteDirect(
'CREATE INDEX TasksResourceID_idx ON Tasks(ResourceID)'
);
FConnection.ExecuteDirect(
'CREATE INDEX TasksDueDate_idx ON Tasks(DueDate)'
);
FConnection.ExecuteDirect(
'CREATE INDEX TasksCompletedOn_idx ON Tasks(CompletedOn)'
);
end;
end; end;
function TVpZeosDatastore.GetContactsTable: TDataset; function TVpZeosDatastore.GetContactsTable: TDataset;