(field, db)
| 29 | } |
| 30 | |
| 31 | function 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 | |
| 71 | function toTable(table, db) { |
| 72 | const q = getQuote(db); |
no test coverage detected