extensions.ts39 lines · main
| 1 | import { ident, safeSql, type SafeSqlFragment } from '../../../pg-format' |
| 2 | import pgMetaExtensions from '../../../pg-meta-extensions' |
| 3 | |
| 4 | export const getDatabaseExtensionsSQL = (): SafeSqlFragment => |
| 5 | safeSql` |
| 6 | SELECT |
| 7 | e.name, |
| 8 | n.nspname AS schema, |
| 9 | e.default_version, |
| 10 | x.extversion AS installed_version, |
| 11 | e.comment, |
| 12 | ev.schema AS default_version_schema |
| 13 | FROM |
| 14 | pg_available_extensions e |
| 15 | LEFT JOIN pg_extension x ON e.name = x.extname |
| 16 | LEFT JOIN pg_namespace n ON x.extnamespace = n.oid |
| 17 | LEFT JOIN pg_available_extension_versions ev |
| 18 | ON ev.name = e.name AND ev.version = e.default_version; |
| 19 | ` |
| 20 | |
| 21 | export const getEnableDatabaseExtensionSQL = ({ |
| 22 | schema, |
| 23 | name, |
| 24 | version, |
| 25 | cascade, |
| 26 | createSchema = false, |
| 27 | }: { |
| 28 | schema: string |
| 29 | name: string |
| 30 | version: string |
| 31 | cascade?: boolean |
| 32 | createSchema?: boolean |
| 33 | }): SafeSqlFragment => { |
| 34 | const { sql } = pgMetaExtensions.create({ schema, name, version, cascade }) |
| 35 | return createSchema |
| 36 | ? safeSql`CREATE SCHEMA IF NOT EXISTS ${ident(schema)}; |
| 37 | ${sql}` |
| 38 | : sql |
| 39 | } |