@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.
- package/dist/notification-tables.js +10 -10
- package/dist/sql-helpers.d.ts +2 -0
- package/dist/sql-helpers.js +1 -1
- package/dist/trait-tables.js +12 -12
- package/package.json +11 -11
|
@@ -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{
|
|
2
|
-
${
|
|
3
|
-
user_id
|
|
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(
|
|
7
|
+
uuid VARCHAR(255),
|
|
8
8
|
created_at ${datetime} DEFAULT CURRENT_TIMESTAMP,
|
|
9
9
|
updated_at ${nullableTimestamp}
|
|
10
|
-
)`}export function notificationPreferencesTableSql(sql){const{
|
|
11
|
-
${
|
|
12
|
-
user_id
|
|
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{
|
|
20
|
-
${
|
|
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
|
|
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',
|
package/dist/sql-helpers.d.ts
CHANGED
|
@@ -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
|
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')",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}}}}
|
package/dist/trait-tables.js
CHANGED
|
@@ -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{
|
|
35
|
-
${
|
|
36
|
-
tag_id
|
|
37
|
-
taggable_id
|
|
38
|
-
taggable_type VARCHAR(255) NOT NULL,
|
|
39
|
-
${
|
|
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{
|
|
42
|
-
${
|
|
43
|
-
category_id
|
|
44
|
-
categorizable_id
|
|
45
|
-
categorizable_type VARCHAR(255) NOT NULL,
|
|
46
|
-
${
|
|
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.
|
|
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.
|
|
64
|
+
"bun-query-builder": "^0.2.12",
|
|
65
65
|
"dynamodb-tooling": "^0.3.2"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
|
-
"@stacksjs/cli": "0.70.
|
|
69
|
-
"@stacksjs/config": "0.70.
|
|
70
|
-
"@stacksjs/logging": "0.70.
|
|
71
|
-
"@stacksjs/router": "0.70.
|
|
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.
|
|
74
|
-
"@stacksjs/query-builder": "0.70.
|
|
75
|
-
"@stacksjs/storage": "0.70.
|
|
76
|
-
"@stacksjs/strings": "0.70.
|
|
77
|
-
"@stacksjs/utils": "0.70.
|
|
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
|
}
|