UNPKG

@cocalc/database

Version:

CoCalc: code for working with our PostgreSQL database

50 lines 1.89 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createTable = exports.primaryKey = exports.primaryKeys = void 0; const schema_1 = require("@cocalc/util/schema"); const logger_1 = __importDefault(require("@cocalc/backend/logger")); const util_1 = require("./util"); const pg_type_1 = require("./pg-type"); const indexes_1 = require("./indexes"); const log = (0, logger_1.default)("db:schema:table"); function primaryKeys(table) { return schema_1.client_db.primary_keys(table); } exports.primaryKeys = primaryKeys; function primaryKey(table) { const v = primaryKeys(table); if (v.length != 1) { throw Error(`compound primary key tables not yet supported - table=${table}`); } return v[0]; } exports.primaryKey = primaryKey; async function createTable(db, schema) { log.debug("createTable", schema.name, " creating SQL query"); if (schema.virtual) { throw Error(`table '${schema.name}' is virtual`); return; } const columns = []; const primary_keys = primaryKeys(schema); for (const column in schema.fields) { const info = schema.fields[column]; let s = `${(0, util_1.quoteField)(column)} ${(0, pg_type_1.pgType)(info)}`; if (info.unique) { s += " UNIQUE"; } if (info.pg_check) { s += " " + info.pg_check; } columns.push(s); } const query = `CREATE TABLE ${schema.name} (${columns.join(", ")}, PRIMARY KEY(${primary_keys.join(", ")}))`; log.debug("createTable", schema.name, " running query...", query); await db.query(query); await (0, indexes_1.createIndexes)(db, schema); } exports.createTable = createTable; //# sourceMappingURL=table.js.map