feat: Add LTI launch, lesson preview, course progress, bookmarks, and asset management features.

This commit is contained in:
2026-02-23 15:43:45 -03:00
parent f365e585a2
commit 7f7ea3d70c
45 changed files with 5250 additions and 697 deletions
@@ -0,0 +1,35 @@
-- Migration: Add LTI 1.3 tables
CREATE TABLE IF NOT EXISTS lti_registrations (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
organization_id UUID NOT NULL REFERENCES organizations(id),
issuer TEXT NOT NULL,
client_id TEXT NOT NULL,
deployment_id TEXT NOT NULL,
auth_token_url TEXT NOT NULL,
auth_login_url TEXT NOT NULL,
jwks_url TEXT NOT NULL,
platform_name TEXT,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
UNIQUE(issuer, client_id, deployment_id)
);
CREATE TABLE IF NOT EXISTS lti_nonces (
nonce TEXT PRIMARY KEY,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
-- Delete nonces older than 1 hour (can be run via cron or during launch)
-- DELETE FROM lti_nonces WHERE created_at < NOW() - INTERVAL '1 hour';
CREATE TABLE IF NOT EXISTS lti_resource_links (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
organization_id UUID NOT NULL REFERENCES organizations(id),
resource_link_id TEXT NOT NULL,
course_id UUID NOT NULL REFERENCES courses(id),
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
UNIQUE(organization_id, resource_link_id)
);
CREATE INDEX idx_lti_registrations_issuer_client ON lti_registrations(issuer, client_id);