@stacksjs/database 0.70.277 → 0.70.279

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.
@@ -1,26 +1,26 @@
1
- import{log}from"@stacksjs/logging";import{env as envVars}from"@stacksjs/env";import{db}from"./utils";import{sqlHelpers}from"./sql-helpers";import{indexSqlForDialect,isDuplicateIndexError}from"./dialect";function getDbDriver(){return process.env.DB_CONNECTION||envVars.DB_CONNECTION||"sqlite"}export function notificationsTableSql(sql){const{pkColumn,nullableTimestamp,datetime}=sql;return`CREATE TABLE IF NOT EXISTS notifications (
2
- ${pkColumn},
3
- user_id INTEGER NOT NULL,
1
+ import{log}from"@stacksjs/logging";import{env as envVars}from"@stacksjs/env";import{db}from"./utils";import{sqlHelpers}from"./sql-helpers";import{indexSqlForDialect,isDuplicateIndexError}from"./dialect";function getDbDriver(){return process.env.DB_CONNECTION||envVars.DB_CONNECTION||"sqlite"}export function notificationsTableSql(sql){const{bigPkColumn,bigInteger,nullableTimestamp,datetime}=sql;return`CREATE TABLE IF NOT EXISTS notifications (
2
+ ${bigPkColumn},
3
+ user_id ${bigInteger},
4
4
  type VARCHAR(255) NOT NULL,
5
5
  data TEXT NOT NULL,
6
6
  read_at ${nullableTimestamp},
7
- uuid VARCHAR(36),
7
+ uuid VARCHAR(255),
8
8
  created_at ${datetime} DEFAULT CURRENT_TIMESTAMP,
9
9
  updated_at ${nullableTimestamp}
10
- )`}export function notificationPreferencesTableSql(sql){const{pkColumn,boolTrue,nullableTimestamp,datetime}=sql;return`CREATE TABLE IF NOT EXISTS notification_preferences (
11
- ${pkColumn},
12
- user_id INTEGER NOT NULL,
10
+ )`}export function notificationPreferencesTableSql(sql){const{bigPkColumn,bigInteger,boolTrue,nullableTimestamp,datetime}=sql;return`CREATE TABLE IF NOT EXISTS notification_preferences (
11
+ ${bigPkColumn},
12
+ user_id ${bigInteger} NOT NULL,
13
13
  channel VARCHAR(50) NOT NULL,
14
14
  enabled BOOLEAN NOT NULL DEFAULT ${boolTrue},
15
15
  category VARCHAR(255),
16
16
  created_at ${datetime} DEFAULT CURRENT_TIMESTAMP,
17
17
  updated_at ${nullableTimestamp},
18
18
  UNIQUE (user_id, channel, category)
19
- )`}export function notificationDeliveriesTableSql(sql){const{pkColumn,nullableTimestamp,datetime}=sql;return`CREATE TABLE IF NOT EXISTS notification_deliveries (
20
- ${pkColumn},
19
+ )`}export function notificationDeliveriesTableSql(sql){const{bigPkColumn,nullableTimestamp,datetime}=sql;return`CREATE TABLE IF NOT EXISTS notification_deliveries (
20
+ ${bigPkColumn},
21
21
  user_id INTEGER,
22
22
  channel VARCHAR(50) NOT NULL,
23
- recipient VARCHAR(1000) NOT NULL,
23
+ recipient TEXT NOT NULL,
24
24
  subject VARCHAR(255),
25
25
  body TEXT NOT NULL,
26
26
  status VARCHAR(50) NOT NULL DEFAULT 'pending',
@@ -77,8 +77,10 @@ export declare interface SqlDialectHelpers {
77
77
  boolTrue: string
78
78
  boolFalse: string
79
79
  autoIncrement: string
80
+ bigInteger: string
80
81
  primaryKey: string
81
82
  pkColumn: string
83
+ bigPkColumn: string
82
84
  datetime: string
83
85
  nullableTimestamp: string
84
86
  param: (index: number) => string
@@ -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')",boolTrue:isPostgres?"true":"1",boolFalse:isPostgres?"false":"0",autoIncrement:isPostgres?"SERIAL":"INTEGER",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",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')",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}}}}
@@ -31,19 +31,19 @@ import{log}from"@stacksjs/logging";import{env as envVars}from"@stacksjs/env";imp
31
31
  categorizable_type VARCHAR(255) NOT NULL,
32
32
  ${createdAt(sql)},
33
33
  ${updatedAt(sql)}
34
- )`}export function taggableModelsTableSql(sql){const{pkColumn}=sql;return`CREATE TABLE IF NOT EXISTS taggable_models (
35
- ${pkColumn},
36
- tag_id INTEGER NOT NULL,
37
- taggable_id INTEGER NOT NULL,
38
- taggable_type VARCHAR(255) NOT NULL,
39
- ${createdAt(sql)},
34
+ )`}export function taggableModelsTableSql(sql){const{bigPkColumn,bigInteger}=sql;return`CREATE TABLE IF NOT EXISTS taggable_models (
35
+ ${bigPkColumn},
36
+ tag_id ${bigInteger} NOT NULL,
37
+ taggable_id ${bigInteger} NOT NULL,
38
+ taggable_type VARCHAR(255) NOT NULL DEFAULT 'posts',
39
+ created_at ${sql.datetime} NOT NULL DEFAULT CURRENT_TIMESTAMP,
40
40
  ${updatedAt(sql)}
41
- )`}export function categorizableModelsTableSql(sql){const{pkColumn}=sql;return`CREATE TABLE IF NOT EXISTS categorizable_models (
42
- ${pkColumn},
43
- category_id INTEGER NOT NULL,
44
- categorizable_id INTEGER NOT NULL,
45
- categorizable_type VARCHAR(255) NOT NULL,
46
- ${createdAt(sql)},
41
+ )`}export function categorizableModelsTableSql(sql){const{bigPkColumn,bigInteger}=sql;return`CREATE TABLE IF NOT EXISTS categorizable_models (
42
+ ${bigPkColumn},
43
+ category_id ${bigInteger} NOT NULL,
44
+ categorizable_id ${bigInteger} NOT NULL,
45
+ categorizable_type VARCHAR(255) NOT NULL DEFAULT 'posts',
46
+ created_at ${sql.datetime} NOT NULL DEFAULT CURRENT_TIMESTAMP,
47
47
  ${updatedAt(sql)}
48
48
  )`}export function likesTableSql(sql,table,foreignKey){const{pkColumn}=sql;return`CREATE TABLE IF NOT EXISTS ${table} (
49
49
  ${pkColumn},
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@stacksjs/database",
3
3
  "type": "module",
4
4
  "sideEffects": false,
5
- "version": "0.70.277",
5
+ "version": "0.70.279",
6
6
  "description": "The Stacks database integration.",
7
7
  "author": "Chris Breuer",
8
8
  "contributors": [
@@ -61,19 +61,19 @@
61
61
  },
62
62
  "dependencies": {
63
63
  "@stacksjs/ts-validation": "^0.5.0",
64
- "bun-query-builder": "^0.2.10",
64
+ "bun-query-builder": "^0.2.12",
65
65
  "dynamodb-tooling": "^0.3.2"
66
66
  },
67
67
  "devDependencies": {
68
- "@stacksjs/cli": "0.70.277",
69
- "@stacksjs/config": "0.70.277",
70
- "@stacksjs/logging": "0.70.277",
71
- "@stacksjs/router": "0.70.277",
68
+ "@stacksjs/cli": "0.70.279",
69
+ "@stacksjs/config": "0.70.279",
70
+ "@stacksjs/logging": "0.70.279",
71
+ "@stacksjs/router": "0.70.279",
72
72
  "better-dx": "^0.2.17",
73
- "@stacksjs/path": "0.70.277",
74
- "@stacksjs/query-builder": "0.70.277",
75
- "@stacksjs/storage": "0.70.277",
76
- "@stacksjs/strings": "0.70.277",
77
- "@stacksjs/utils": "0.70.277"
73
+ "@stacksjs/path": "0.70.279",
74
+ "@stacksjs/query-builder": "0.70.279",
75
+ "@stacksjs/storage": "0.70.279",
76
+ "@stacksjs/strings": "0.70.279",
77
+ "@stacksjs/utils": "0.70.279"
78
78
  }
79
79
  }