Registry /
ecommerce / directus-extension-sql-query-panel
Install & Compatibility
Where this runs
No compatibility data collected yet for this library.
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
default extension registration
✓ import sqlQueryPanel from 'directus-extension-sql-query-panel'
✗ const sqlQueryPanel = require('directus-extension-sql-query-panel')
Uses Directus extension registration pattern; module is ESM-only.
SQLPanel (type)
✓ import type { SQLPanel } from 'directus-extension-sql-query-panel'
✗ import { SQLPanel } from 'directus-extension-sql-query-panel'
Only exported as type, not runtime value.
hooks/emitter events (via Directus)
✓ import { emitter } from '@directus/extensions-sdk'; // then emitter.onFilter('sql-query:request', ...)
✗ import { emitter } from 'directus-extension-sql-query-panel'
Events are emitted by the Directus server, not imported from this extension.
Demonstrates installation, basic panel usage with static and variable queries, and hooking into extension events.
// Install extension
// npm install directus-extension-sql-query-panel
// After installing, restart Directus and add a panel of type "SQL Query panel"
// In the panel configuration, enter:
SELECT id, title, status FROM articles WHERE status = 'published';
// Optionally use variables:
SELECT id, title, status FROM articles WHERE status = '{{status}}';
// Add global variable 'status' in the panel settings.
// For static queries (no variables), check "Static query" to skip parameter input.
// Example of listening to events (usually in a custom extension hook):
import { defineHook } from '@directus/extensions-sdk';
export default defineHook(({ emitter }) => {
emitter.onFilter('sql-query:request', async ({ variables, query }, req) => {
// Modify variables or query
if (query.includes('{{tenant}}')) {
variables.tenant = req.accountability?.user?.id ?? '';
}
return { variables, query };
});
});
Errors
Common errors & fixes
Cannot find module 'directus-extension-sql-query-panel'
Extension not installed or not installed in the correct Directus extensions directory.
fixRun 'npm install --save directus-extension-sql-query-panel' in the project root and restart Directus.
TypeError: emitter.onFilter is not a function
Using old Directus extension API; emitter is received differently.
fixEnsure you are using Directus 10+ and import emitter from '@directus/extensions-sdk' in defineHook.
Variables not replaced in query
Variables used in query but not defined in the panel's variable input.
fixAdd the variable name (without curly braces) to the 'Variables' field in the panel settings and provide a default value.
Audit
Dependencies
directusrequiredRuntime peer dependency for extension APIs (emitter, services, hooks)