You've already forked lazarus-ccr
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:
@ -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;
|
||||||
|
Reference in New Issue
Block a user