MCPcopy
hub / github.com/drawdb-io/drawdb / columnDefinition

Function columnDefinition

src/utils/migrations/diffToSQL.js:31–69  ·  view source on GitHub ↗
(field, db)

Source from the content-addressed store, hash-verified

29}
30
31function columnDefinition(field, db) {
32 const meta =
33 dbToTypes[db]?.[field.type] || dbToTypes[DB.GENERIC]?.[field.type];
34
35 let typeStr = field.type;
36 if (db === DB.MYSQL || db === DB.MARIADB) {
37 typeStr = parseType(field, db);
38 } else if (meta?.isSized || meta?.hasPrecision) {
39 typeStr += field.size ? `(${field.size})` : "";
40 }
41
42 let sql = typeStr;
43
44 if (db === DB.MYSQL || db === DB.MARIADB) {
45 if (meta?.signed && field.unsigned) sql += " UNSIGNED";
46 }
47 if (field.notNull) sql += " NOT NULL";
48 if (field.unique) sql += " UNIQUE";
49 if (field.primary) sql += " PRIMARY KEY";
50
51 if (field.increment) {
52 if (db === DB.POSTGRES) sql += " GENERATED BY DEFAULT AS IDENTITY";
53 else if (db === DB.MYSQL || db === DB.MARIADB) sql += " AUTO_INCREMENT";
54 else if (db === DB.MSSQL) sql += " IDENTITY";
55 else if (db === DB.ORACLESQL) sql += " GENERATED BY DEFAULT AS IDENTITY";
56 else if (db === DB.SQLITE) sql += " AUTOINCREMENT";
57 }
58
59 if (field.default != null && field.default !== "") {
60 sql += ` DEFAULT ${parseDefault(field, db)}`;
61 }
62 if (field.check && meta?.hasCheck) sql += ` CHECK(${field.check})`;
63 if ((db === DB.MYSQL || db === DB.MARIADB) && field.comment?.trim()) {
64 sql += ` COMMENT '${escapeQuotes(field.comment)}'`;
65 }
66 if (db === DB.POSTGRES && field.isArray) sql += " ARRAY";
67
68 return sql;
69}
70
71function toTable(table, db) {
72 const q = getQuote(db);

Callers 1

generateMigrationSQLFunction · 0.85

Calls 3

parseDefaultFunction · 0.90
escapeQuotesFunction · 0.90
parseTypeFunction · 0.70

Tested by

no test coverage detected