summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorBertrand Yuan <bert.yuan@outlook.com>2025-12-16 00:12:49 +0800
committerBertrand Yuan <bert.yuan@outlook.com>2025-12-16 00:12:49 +0800
commit02ae938c238c9d18448d17a8ec92c0edd8c17463 (patch)
treedcd6a30505adb52522b20af2c0ac27f713403f10 /scripts
parent48b07bc308a35734a6a7a305c8fdccbfa47de7d8 (diff)
feat(back-end): introduce payload
Payload is the next.js Headless CMS and App Framework, I would like to pick it up and modify it as it is MIT licensed. Many features in Payload is not applicable for our project. So, I modify it so that it is light and clear.
Diffstat (limited to 'scripts')
-rw-r--r--scripts/check-payload-users.mts40
-rw-r--r--scripts/create-payload-schema.mts43
2 files changed, 83 insertions, 0 deletions
diff --git a/scripts/check-payload-users.mts b/scripts/check-payload-users.mts
new file mode 100644
index 0000000..e8ab91e
--- /dev/null
+++ b/scripts/check-payload-users.mts
@@ -0,0 +1,40 @@
+import pg from 'pg';
+import { readFileSync } from 'node:fs';
+import { join } from 'node:path';
+
+// 读取 .env 文件
+const envPath = join(process.cwd(), '.env');
+const envContent = readFileSync(envPath, 'utf-8');
+const envLines = envContent.split('\n');
+for (const line of envLines) {
+ const match = line.match(/^([^=]+)=(.*)$/);
+ if (match) {
+ const key = match[1]?.trim();
+ let value = match[2]?.trim() || '';
+ if ((value.startsWith('"') && value.endsWith('"')) || (value.startsWith("'") && value.endsWith("'"))) {
+ value = value.slice(1, -1);
+ }
+ if (key) {
+ process.env[key] = value;
+ }
+ }
+}
+
+const { Pool } = pg;
+
+async function checkUsers() {
+ const pool = new Pool({
+ connectionString: process.env.DATABASE_URL,
+ });
+
+ try {
+ const result = await pool.query('SELECT id, email, name FROM payload.users');
+ console.log('Payload users:', result.rows);
+ } catch (error) {
+ console.error('Error:', error);
+ } finally {
+ await pool.end();
+ }
+}
+
+checkUsers();
diff --git a/scripts/create-payload-schema.mts b/scripts/create-payload-schema.mts
new file mode 100644
index 0000000..35c13a6
--- /dev/null
+++ b/scripts/create-payload-schema.mts
@@ -0,0 +1,43 @@
+import { config } from 'node:process';
+import pg from 'pg';
+import { readFileSync } from 'node:fs';
+import { join } from 'node:path';
+
+// 读取 .env 文件
+const envPath = join(process.cwd(), '.env');
+const envContent = readFileSync(envPath, 'utf-8');
+const envLines = envContent.split('\n');
+for (const line of envLines) {
+ const match = line.match(/^([^=]+)=(.*)$/);
+ if (match) {
+ const key = match[1]?.trim();
+ let value = match[2]?.trim() || '';
+ // 移除引号
+ if ((value.startsWith('"') && value.endsWith('"')) || (value.startsWith("'") && value.endsWith("'"))) {
+ value = value.slice(1, -1);
+ }
+ if (key) {
+ process.env[key] = value;
+ }
+ }
+}
+
+const { Pool } = pg;
+
+async function createPayloadSchema() {
+ const pool = new Pool({
+ connectionString: process.env.DATABASE_URL,
+ });
+
+ try {
+ await pool.query('CREATE SCHEMA IF NOT EXISTS payload');
+ console.log('✅ Payload schema created successfully');
+ } catch (error) {
+ console.error('❌ Error creating schema:', error);
+ process.exit(1);
+ } finally {
+ await pool.end();
+ }
+}
+
+createPayloadSchema();