@stacksjs/database 0.72.30 → 0.72.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/migration-path.js +1 -1
- package/dist/sql-helpers.js +1 -1
- package/package.json +13 -13
package/dist/migration-path.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{existsSync,readdirSync}from"node:fs";import{isAbsolute,join}from"node:path";import process from"node:process";const DEFAULT_MIGRATION_DIR="database/migrations",DEFAULT_SNAPSHOT_DIR="storage/framework/database";export function resolveMigrationDirectory(dialect,options={}){const cwd=options.cwd??process.cwd(),configured=process.env.DB_MIGRATIONS_PATH||options.configured||DEFAULT_MIGRATION_DIR,absoluteConfigured=isAbsolute(configured)?configured:join(cwd,configured);if(configured!==DEFAULT_MIGRATION_DIR||isAbsolute(configured))return absoluteConfigured;const dialectDir=join(absoluteConfigured,dialect);if(existsSync(dialectDir))return dialectDir;if(dialect==="sqlite")return absoluteConfigured;const snapshotDir=isAbsolute(options.snapshotDir||"")?options.snapshotDir:join(cwd,options.snapshotDir||DEFAULT_SNAPSHOT_DIR);let snapshots=[];try{snapshots=readdirSync(snapshotDir)}catch{}const wanted=`model-snapshot.${dialect}.json
|
|
1
|
+
import{existsSync,readdirSync,readFileSync}from"node:fs";import{isAbsolute,join}from"node:path";import process from"node:process";const DEFAULT_MIGRATION_DIR="database/migrations",DEFAULT_SNAPSHOT_DIR="storage/framework/database";export function resolveMigrationDirectory(dialect,options={}){const cwd=options.cwd??process.cwd(),configured=process.env.DB_MIGRATIONS_PATH||options.configured||DEFAULT_MIGRATION_DIR,absoluteConfigured=isAbsolute(configured)?configured:join(cwd,configured);if(configured!==DEFAULT_MIGRATION_DIR||isAbsolute(configured))return absoluteConfigured;const dialectDir=join(absoluteConfigured,dialect);if(existsSync(dialectDir))return dialectDir;if(dialect==="sqlite")return absoluteConfigured;const snapshotDir=isAbsolute(options.snapshotDir||"")?options.snapshotDir:join(cwd,options.snapshotDir||DEFAULT_SNAPSHOT_DIR);let snapshots=[];try{snapshots=readdirSync(snapshotDir)}catch{}const wanted=`model-snapshot.${dialect}.json`,hasOtherDialect=snapshots.some((file)=>/^model-snapshot\.\w+\.json$/.test(file)&&file!==wanted);if(hasOtherDialect&&ownerOfFlatCorpus(absoluteConfigured)===wireOf(dialect))return absoluteConfigured;return hasOtherDialect?dialectDir:absoluteConfigured}function ownerOfFlatCorpus(directory){let files=[];try{files=readdirSync(directory).filter((file)=>file.endsWith(".sql")).sort()}catch{return null}for(const file of files){let sql;try{sql=readFileSync(join(directory,file),"utf8")}catch{continue}const create=/CREATE\s+TABLE\s+(?:IF\s+NOT\s+EXISTS\s+)?(["`])/i.exec(sql);if(create)return create[1]==="`"?"mysql":"postgres"}return null}function wireOf(dialect){return dialect==="mysql"||dialect==="mariadb"||dialect==="singlestore"||dialect==="vitess"||dialect==="planetscale"?"mysql":"postgres"}export function relativeMigrationDirectory(directory,cwd=process.cwd()){const prefix=`${cwd}/`;return directory.startsWith(prefix)?directory.slice(prefix.length):directory}
|
package/dist/sql-helpers.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{dialectCapabilities}from"./dialect";export function sqlDateTime(value=new Date){return value.toISOString().slice(0,-1)}export function sqlDateTimeLiteral(value=new Date){return`'${sqlDateTime(value)}'`}export function parseSqlDateTime(value){if(value===null||value===void 0)return null;if(value instanceof Date)return Number.isNaN(value.getTime())?null:value;if(typeof value==="number")return Number.isNaN(value)?null:new Date(value);if(typeof value!=="string")return null;const trimmed=value.trim();if(!trimmed)return null;let normalized=trimmed.replace(" ","T");if(!/(?:Z|[+-]\d{2}:?\d{2})$/i.test(normalized))normalized+="Z";const parsed=new Date(normalized);return Number.isNaN(parsed.getTime())?null:parsed}export function sqlHelpers(driver){const caps=dialectCapabilities(driver),isPostgres=caps.wire==="postgres",isMysql=caps.wire==="mysql",isSqlite=caps.wire==="sqlite";return{driver,isPostgres,isMysql,isSqlite,now:isPostgres||isMysql?"NOW()":"datetime('now')",utcNow:isPostgres?"(now() AT TIME ZONE 'utc')":isMysql?"UTC_TIMESTAMP":"CURRENT_TIMESTAMP",boolTrue:isPostgres?"true":"1",boolFalse:isPostgres?"false":"0",autoIncrement:isPostgres?"SERIAL":"INTEGER",bigInteger:isSqlite?"INTEGER":"BIGINT",primaryKey:!caps.supportsAutoIncrement?"PRIMARY KEY":isPostgres?"PRIMARY KEY":isMysql?"PRIMARY KEY AUTO_INCREMENT":"PRIMARY KEY AUTOINCREMENT",pkColumn:!caps.supportsAutoIncrement?"id BIGINT NOT NULL PRIMARY KEY":isPostgres?"id SERIAL PRIMARY KEY":isMysql?"id INTEGER PRIMARY KEY AUTO_INCREMENT":"id INTEGER PRIMARY KEY AUTOINCREMENT",bigPkColumn:!caps.supportsAutoIncrement?"id BIGINT NOT NULL PRIMARY KEY":isPostgres?"id BIGSERIAL PRIMARY KEY":isMysql?"id BIGINT PRIMARY KEY AUTO_INCREMENT":"id INTEGER PRIMARY KEY AUTOINCREMENT",datetime:isMysql?"DATETIME":"TIMESTAMP",nullableTimestamp:isMysql?"DATETIME NULL":"TIMESTAMP",param(index){return isPostgres?`$${index}`:"?"},params(...values){if(isPostgres)return{sql:values.map((_,i)=>`$${i+1}`).join(", "),values};return{sql:values.map(()=>"?").join(", "),values}}}}
|
|
1
|
+
import{dialectCapabilities}from"./dialect";export function sqlDateTime(value=new Date){return value.toISOString().slice(0,-1)}export function sqlDateTimeLiteral(value=new Date){return`'${sqlDateTime(value)}'`}export function parseSqlDateTime(value){if(value===null||value===void 0)return null;if(value instanceof Date)return Number.isNaN(value.getTime())?null:value;if(typeof value==="number")return Number.isNaN(value)?null:new Date(value);if(typeof value!=="string")return null;const trimmed=value.trim();if(!trimmed)return null;let normalized=trimmed.replace(" ","T");if(!/(?:Z|[+-]\d{2}:?\d{2})$/i.test(normalized))normalized+="Z";const parsed=new Date(normalized);return Number.isNaN(parsed.getTime())?null:parsed}export function sqlHelpers(driver){const caps=dialectCapabilities(driver),isPostgres=caps.wire==="postgres",isMysql=caps.wire==="mysql",isSqlite=caps.wire==="sqlite";return{driver,isPostgres,isMysql,isSqlite,now:isPostgres||isMysql?"NOW()":"datetime('now')",utcNow:isPostgres?"(now() AT TIME ZONE 'utc')":isMysql?"(UTC_TIMESTAMP)":"CURRENT_TIMESTAMP",boolTrue:isPostgres?"true":"1",boolFalse:isPostgres?"false":"0",autoIncrement:isPostgres?"SERIAL":"INTEGER",bigInteger:isSqlite?"INTEGER":"BIGINT",primaryKey:!caps.supportsAutoIncrement?"PRIMARY KEY":isPostgres?"PRIMARY KEY":isMysql?"PRIMARY KEY AUTO_INCREMENT":"PRIMARY KEY AUTOINCREMENT",pkColumn:!caps.supportsAutoIncrement?"id BIGINT NOT NULL PRIMARY KEY":isPostgres?"id SERIAL PRIMARY KEY":isMysql?"id INTEGER PRIMARY KEY AUTO_INCREMENT":"id INTEGER PRIMARY KEY AUTOINCREMENT",bigPkColumn:!caps.supportsAutoIncrement?"id BIGINT NOT NULL PRIMARY KEY":isPostgres?"id BIGSERIAL PRIMARY KEY":isMysql?"id BIGINT PRIMARY KEY AUTO_INCREMENT":"id INTEGER PRIMARY KEY AUTOINCREMENT",datetime:isMysql?"DATETIME":"TIMESTAMP",nullableTimestamp:isMysql?"DATETIME NULL":"TIMESTAMP",param(index){return isPostgres?`$${index}`:"?"},params(...values){if(isPostgres)return{sql:values.map((_,i)=>`$${i+1}`).join(", "),values};return{sql:values.map(()=>"?").join(", "),values}}}}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@stacksjs/database",
|
|
3
3
|
"type": "module",
|
|
4
4
|
"sideEffects": false,
|
|
5
|
-
"version": "0.72.
|
|
5
|
+
"version": "0.72.33",
|
|
6
6
|
"description": "The Stacks database integration.",
|
|
7
7
|
"author": "Chris Breuer",
|
|
8
8
|
"contributors": [
|
|
@@ -60,20 +60,20 @@
|
|
|
60
60
|
"prepublishOnly": "bun run build"
|
|
61
61
|
},
|
|
62
62
|
"dependencies": {
|
|
63
|
-
"@stacksjs/ts-validation": "^0.5.
|
|
64
|
-
"bun-query-builder": "^0.2.
|
|
63
|
+
"@stacksjs/ts-validation": "^0.5.5",
|
|
64
|
+
"bun-query-builder": "^0.2.53",
|
|
65
65
|
"dynamodb-tooling": "^0.3.2"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
|
-
"@stacksjs/cli": "0.72.
|
|
69
|
-
"@stacksjs/config": "0.72.
|
|
70
|
-
"@stacksjs/logging": "0.72.
|
|
71
|
-
"@stacksjs/router": "0.72.
|
|
72
|
-
"better-dx": "^0.2.
|
|
73
|
-
"@stacksjs/path": "0.72.
|
|
74
|
-
"@stacksjs/query-builder": "0.72.
|
|
75
|
-
"@stacksjs/storage": "0.72.
|
|
76
|
-
"@stacksjs/strings": "0.72.
|
|
77
|
-
"@stacksjs/utils": "0.72.
|
|
68
|
+
"@stacksjs/cli": "0.72.33",
|
|
69
|
+
"@stacksjs/config": "0.72.33",
|
|
70
|
+
"@stacksjs/logging": "0.72.33",
|
|
71
|
+
"@stacksjs/router": "0.72.33",
|
|
72
|
+
"better-dx": "^0.2.24",
|
|
73
|
+
"@stacksjs/path": "0.72.33",
|
|
74
|
+
"@stacksjs/query-builder": "0.72.33",
|
|
75
|
+
"@stacksjs/storage": "0.72.33",
|
|
76
|
+
"@stacksjs/strings": "0.72.33",
|
|
77
|
+
"@stacksjs/utils": "0.72.33"
|
|
78
78
|
}
|
|
79
79
|
}
|