✅ Complete Astro migration - PDPA compliant website
- Migrated all pages from Next.js to Astro - Added PDPA-compliant Privacy Policy (Thai) - Added PDPA-compliant Terms & Conditions (Thai) - Added Cookie Policy with disclosure (Thai) - Implemented cookie consent banner (client-side) - Integrated Umami Analytics placeholder - Blog system with 3 posts - Optimized Docker configuration for production - Static site build (184KB, 11 pages) - Ready for Easypanel deployment Backup: /Users/kunthawatgreethong/Gitea/dealplustech-backup-nextjs-20260309.tar.gz
This commit is contained in:
121
dealplustech-astro/node_modules/@astrojs/db/dist/runtime/index.js
generated
vendored
Normal file
121
dealplustech-astro/node_modules/@astrojs/db/dist/runtime/index.js
generated
vendored
Normal file
@@ -0,0 +1,121 @@
|
||||
import { sql } from "drizzle-orm";
|
||||
import {
|
||||
customType,
|
||||
index,
|
||||
integer,
|
||||
sqliteTable,
|
||||
text
|
||||
} from "drizzle-orm/sqlite-core";
|
||||
import { isSerializedSQL } from "./types.js";
|
||||
import { hasPrimaryKey, pathToFileURL } from "./utils.js";
|
||||
import { hasPrimaryKey as hasPrimaryKey2 } from "./utils.js";
|
||||
const isISODateString = (str) => /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z/.test(str);
|
||||
const dateType = customType({
|
||||
dataType() {
|
||||
return "text";
|
||||
},
|
||||
toDriver(value) {
|
||||
return value.toISOString();
|
||||
},
|
||||
fromDriver(value) {
|
||||
if (!isISODateString(value)) {
|
||||
value += "Z";
|
||||
}
|
||||
return new Date(value);
|
||||
}
|
||||
});
|
||||
const jsonType = customType({
|
||||
dataType() {
|
||||
return "text";
|
||||
},
|
||||
toDriver(value) {
|
||||
return JSON.stringify(value);
|
||||
},
|
||||
fromDriver(value) {
|
||||
return JSON.parse(value);
|
||||
}
|
||||
});
|
||||
function asDrizzleTable(name, table) {
|
||||
const columns = {};
|
||||
if (!Object.entries(table.columns).some(([, column]) => hasPrimaryKey(column))) {
|
||||
columns["_id"] = integer("_id").primaryKey();
|
||||
}
|
||||
for (const [columnName, column] of Object.entries(table.columns)) {
|
||||
columns[columnName] = columnMapper(columnName, column);
|
||||
}
|
||||
const drizzleTable = sqliteTable(name, columns, (ormTable) => {
|
||||
const indexes = [];
|
||||
for (const [indexName, indexProps] of Object.entries(table.indexes ?? {})) {
|
||||
const onColNames = Array.isArray(indexProps.on) ? indexProps.on : [indexProps.on];
|
||||
const onCols = onColNames.map((colName) => ormTable[colName]);
|
||||
if (!atLeastOne(onCols)) continue;
|
||||
indexes.push(index(indexName).on(...onCols));
|
||||
}
|
||||
return indexes;
|
||||
});
|
||||
return drizzleTable;
|
||||
}
|
||||
function atLeastOne(arr) {
|
||||
return arr.length > 0;
|
||||
}
|
||||
function columnMapper(columnName, column) {
|
||||
let c;
|
||||
switch (column.type) {
|
||||
case "text": {
|
||||
c = text(columnName, { enum: column.schema.enum });
|
||||
if (column.schema.default !== void 0)
|
||||
c = c.default(handleSerializedSQL(column.schema.default));
|
||||
if (column.schema.primaryKey === true) c = c.primaryKey();
|
||||
break;
|
||||
}
|
||||
case "number": {
|
||||
c = integer(columnName);
|
||||
if (column.schema.default !== void 0)
|
||||
c = c.default(handleSerializedSQL(column.schema.default));
|
||||
if (column.schema.primaryKey === true) c = c.primaryKey();
|
||||
break;
|
||||
}
|
||||
case "boolean": {
|
||||
c = integer(columnName, { mode: "boolean" });
|
||||
if (column.schema.default !== void 0)
|
||||
c = c.default(handleSerializedSQL(column.schema.default));
|
||||
break;
|
||||
}
|
||||
case "json":
|
||||
c = jsonType(columnName);
|
||||
if (column.schema.default !== void 0) c = c.default(column.schema.default);
|
||||
break;
|
||||
case "date": {
|
||||
c = dateType(columnName);
|
||||
if (column.schema.default !== void 0) {
|
||||
const def = handleSerializedSQL(column.schema.default);
|
||||
c = c.default(typeof def === "string" ? new Date(def) : def);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!column.schema.optional) c = c.notNull();
|
||||
if (column.schema.unique) c = c.unique();
|
||||
return c;
|
||||
}
|
||||
function handleSerializedSQL(def) {
|
||||
if (isSerializedSQL(def)) {
|
||||
return sql.raw(def.sql);
|
||||
}
|
||||
return def;
|
||||
}
|
||||
function normalizeDatabaseUrl(envDbUrl, defaultDbUrl) {
|
||||
if (envDbUrl) {
|
||||
if (envDbUrl.startsWith("file://")) {
|
||||
return envDbUrl;
|
||||
}
|
||||
return new URL(envDbUrl, pathToFileURL(process.cwd()) + "/").toString();
|
||||
} else {
|
||||
return defaultDbUrl;
|
||||
}
|
||||
}
|
||||
export {
|
||||
asDrizzleTable,
|
||||
hasPrimaryKey2 as hasPrimaryKey,
|
||||
normalizeDatabaseUrl
|
||||
};
|
||||
Reference in New Issue
Block a user