Skip to main content

SerializerExtension

The shape a dialect plugin package (e.g. @sqb/postgres-dialect, @sqb/oracle-dialect) registers with SerializerRegistry.register(...) to plug custom SQL rendering into @sqb/builder. Primarily relevant to authors of a dialect package rather than everyday query building — see The Dialect Plugin System for the full mechanism and a from-scratch example.

interface SerializerExtension {
dialect: string;
serialize?: SerializeFunction;
isReservedWord?: IsReservedWordFunction;
}

Properties

KeyTypeDescription
dialectstringThe dialect name this extension applies to; matched against GenerateOptions.dialect.
serializeSerializeFunction | undefinedOptional custom renderer, tried for every node before falling back to the builder's default.
isReservedWordIsReservedWordFunction | undefinedOptional predicate deciding which identifiers need escaping (double-quoting) for this dialect.
import { SerializerRegistry, SerializationType } from '@sqb/builder';

SerializerRegistry.register({
dialect: 'my-dialect',
serialize(ctx, type, obj, defaultFn) {
if (type === SerializationType.SELECT_QUERY_JOIN) {
// return custom SQL for this node, or...
}
return defaultFn(ctx, obj);
},
isReservedWord(ctx, word) {
return MY_DIALECT_RESERVED_WORDS.has(word.toLowerCase());
},
});

See also