Skip to content

Instantly share code, notes, and snippets.

@hanleybrand
Last active January 26, 2023 14:45
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hanleybrand/72317b4eb8c21cd0e93021f3f9443dd3 to your computer and use it in GitHub Desktop.
Save hanleybrand/72317b4eb8c21cd0e93021f3f9443dd3 to your computer and use it in GitHub Desktop.
Create MS SQL Server tables (lti2_*) for LTI-Tool-Provider-Library-PHP https://github.com/IMSGlobal/LTI-Tool-Provider-Library-PHP
-- creates the tables necessary to use the LTI provider library for SQL Server (tested against SQL Server 12.0.5540.0 (2014 Service Pack 2)
-- see [https://github.com/IMSGlobal/LTI-Tool-Provider-Library-PHP](LTI-Tool-Provider-Library-PHP)
CREATE TABLE lti2_consumer
(
consumer_pk INT IDENTITY (1, 1) PRIMARY KEY NOT NULL,
name VARCHAR(50) NOT NULL,
consumer_key256 VARCHAR(256) NOT NULL,
consumer_key TEXT NULL,
secret VARCHAR(1024) NOT NULL,
lti_version VARCHAR(10) NULL,
consumer_name VARCHAR(255) NULL,
consumer_version VARCHAR(255) NULL,
consumer_guid VARCHAR(1024) NULL,
profile TEXT NULL,
tool_proxy TEXT NULL,
settings TEXT NULL,
protected TINYINT NOT NULL,
enabled TINYINT NOT NULL,
enable_from DATETIME NULL,
enable_until DATETIME NULL,
last_access DATE NULL,
created DATETIME NOT NULL,
updated DATETIME NOT NULL
);
CREATE UNIQUE INDEX lti2_consumer_consumer_key_UNIQUE
ON lti2_consumer (consumer_key256);
CREATE TABLE lti2_context
(
context_pk INT IDENTITY (1, 1) NOT NULL PRIMARY KEY,
consumer_pk INT NOT NULL,
lti_context_id VARCHAR(255) NOT NULL,
settings TEXT NULL,
created DATETIME NOT NULL,
updated DATETIME NOT NULL,
CONSTRAINT lti2_context_lti2_consumer_FK1
FOREIGN KEY (consumer_pk) REFERENCES LTI_APPS.dbo.lti2_consumer (consumer_pk)
);
CREATE INDEX lti2_context_consumer_id_IDX
ON lti2_context (consumer_pk);
CREATE TABLE lti2_nonce
(
consumer_pk INT IDENTITY (1, 1) NOT NULL PRIMARY KEY,
value VARCHAR(32) NOT NULL,
expires DATETIME NOT NULL,
CONSTRAINT lti2_nonce_lti2_consumer_FK1
FOREIGN KEY (consumer_pk) REFERENCES LTI_APPS.dbo.lti2_consumer (consumer_pk)
);
CREATE TABLE lti2_resource_link
(
resource_link_pk INT IDENTITY (1, 1) NOT NULL PRIMARY KEY,
context_pk INT NULL,
consumer_pk INT NULL,
lti_resource_link_id VARCHAR(255) NOT NULL,
settings TEXT NULL,
primary_resource_link_pk INT NULL,
share_approved TINYINT NULL,
created DATETIME NOT NULL,
updated DATETIME NOT NULL,
CONSTRAINT lti2_resource_link_lti2_context_FK1
FOREIGN KEY (context_pk) REFERENCES LTI_APPS.dbo.lti2_context (context_pk),
CONSTRAINT lti2_resource_link_lti2_resource_link_FK1
FOREIGN KEY (primary_resource_link_pk) REFERENCES LTI_APPS.dbo.lti2_resource_link (resource_link_pk)
);
CREATE INDEX lti2_resource_link_consumer_pk_IDX
ON lti2_resource_link (consumer_pk);
CREATE INDEX lti2_resource_link_context_pk_IDX
ON lti2_resource_link (context_pk);
CREATE INDEX lti2_resource_link_lti2_resource_link_FK1
ON lti2_resource_link (primary_resource_link_pk);
create table lti2_share_key
(
share_key_id varchar(32) not null
primary key,
resource_link_pk int not null,
auto_approve tinyint not null,
expires datetime not null,
constraint lti2_share_key_lti2_resource_link_FK1
foreign key (resource_link_pk) references LTI_APPS.dbo.lti2_resource_link (resource_link_pk)
)
;
create index lti2_share_key_resource_link_pk_IDX
on lti2_share_key (resource_link_pk)
;
CREATE TABLE lti2_tool_proxy
(
tool_proxy_pk INT NOT NULL IDENTITY (1, 1) PRIMARY KEY,
tool_proxy_id VARCHAR(32) NOT NULL,
consumer_pk INT NOT NULL,
tool_proxy TEXT NOT NULL,
created DATETIME NOT NULL,
updated DATETIME NOT NULL,
CONSTRAINT lti2_tool_proxy_tool_proxy_id_UNIQUE
UNIQUE (tool_proxy_id),
CONSTRAINT lti2_tool_proxy_lti2_consumer_FK1
FOREIGN KEY (consumer_pk) REFERENCES LTI_APPS.dbo.lti2_consumer (consumer_pk)
);
CREATE INDEX lti2_tool_proxy_consumer_id_IDX
ON lti2_tool_proxy (consumer_pk);
CREATE TABLE lti2_user_result
(
user_pk INT NOT NULL IDENTITY (1, 1) PRIMARY KEY,
resource_link_pk INT NOT NULL,
lti_user_id VARCHAR(255) NOT NULL,
lti_result_sourcedid VARCHAR(1024) NOT NULL,
created DATETIME NOT NULL,
updated DATETIME NOT NULL,
CONSTRAINT lti2_user_result_lti2_resource_link_FK1
FOREIGN KEY (resource_link_pk) REFERENCES LTI_APPS.dbo.lti2_resource_link (resource_link_pk)
);
CREATE INDEX lti2_user_result_resource_link_pk_IDX
ON lti2_user_result (resource_link_pk);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment