mirror of
https://github.com/beilunyang/moemail.git
synced 2026-08-28 11:26:39 +08:00
feat: Add optional environment variables for database and KV namespace configuration
This commit is contained in:
@@ -482,8 +482,10 @@ const data = await res.json();
|
|||||||
- `CLOUDFLARE_API_TOKEN`: Cloudflare API Token
|
- `CLOUDFLARE_API_TOKEN`: Cloudflare API Token
|
||||||
- `CLOUDFLARE_ACCOUNT_ID`: Cloudflare Account ID
|
- `CLOUDFLARE_ACCOUNT_ID`: Cloudflare Account ID
|
||||||
- `DATABASE_NAME`: D1 数据库名称
|
- `DATABASE_NAME`: D1 数据库名称
|
||||||
- `DATABASE_ID`: D1 数据库 ID
|
- `DATABASE_ID`: D1 数据库 ID (可选, 如果不填, 则会自动通过 Cloudflare API 获取)
|
||||||
- `KV_NAMESPACE_ID`: Cloudflare KV namespace ID,用于存储网站配置
|
- `KV_NAMESPACE_NAME`: Cloudflare KV namespace 名称,用于存储网站配置
|
||||||
|
- `KV_NAMESPACE_ID`: Cloudflare KV namespace ID,用于存储网站配置 (可选, 如果不填, 则会自动通过 Cloudflare API 获取)
|
||||||
|
- `CUSTOM_DOMAIN`: 网站自定义域名,用于访问 MoeMail (可选, 如果不填, 则会使用 Cloudflare Pages 默认域名)
|
||||||
|
|
||||||
## Github OAuth App 配置
|
## Github OAuth App 配置
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ const CUSTOM_DOMAIN = process.env.CUSTOM_DOMAIN;
|
|||||||
const PROJECT_NAME = process.env.PROJECT_NAME || "moemail";
|
const PROJECT_NAME = process.env.PROJECT_NAME || "moemail";
|
||||||
const DATABASE_NAME = process.env.DATABASE_NAME || "moemail-db";
|
const DATABASE_NAME = process.env.DATABASE_NAME || "moemail-db";
|
||||||
const KV_NAMESPACE_NAME = process.env.KV_NAMESPACE_NAME || "moemail-kv";
|
const KV_NAMESPACE_NAME = process.env.KV_NAMESPACE_NAME || "moemail-kv";
|
||||||
|
const DATABASE_ID = process.env.DATABASE_ID;
|
||||||
|
|
||||||
const client = new Cloudflare({
|
const client = new Cloudflare({
|
||||||
apiKey: CF_API_TOKEN,
|
apiKey: CF_API_TOKEN,
|
||||||
@@ -46,6 +47,12 @@ export const createPages = async () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const getDatabase = async () => {
|
export const getDatabase = async () => {
|
||||||
|
if (DATABASE_ID) {
|
||||||
|
return {
|
||||||
|
uuid: DATABASE_ID,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const database = await client.d1.database.get(DATABASE_NAME, {
|
const database = await client.d1.database.get(DATABASE_NAME, {
|
||||||
account_id: CF_ACCOUNT_ID,
|
account_id: CF_ACCOUNT_ID,
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ const DATABASE_NAME = process.env.DATABASE_NAME || "moemail-db";
|
|||||||
const KV_NAMESPACE_NAME = process.env.KV_NAMESPACE_NAME || "moemail-kv";
|
const KV_NAMESPACE_NAME = process.env.KV_NAMESPACE_NAME || "moemail-kv";
|
||||||
const CUSTOM_DOMAIN = process.env.CUSTOM_DOMAIN;
|
const CUSTOM_DOMAIN = process.env.CUSTOM_DOMAIN;
|
||||||
|
|
||||||
|
const KV_NAMESPACE_ID = process.env.KV_NAMESPACE_ID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 验证必要的环境变量
|
* 验证必要的环境变量
|
||||||
*/
|
*/
|
||||||
@@ -195,6 +197,12 @@ const migrateDatabase = () => {
|
|||||||
const checkAndCreateKVNamespace = async () => {
|
const checkAndCreateKVNamespace = async () => {
|
||||||
console.log(`🔍 Checking if KV namespace "${KV_NAMESPACE_NAME}" exists...`);
|
console.log(`🔍 Checking if KV namespace "${KV_NAMESPACE_NAME}" exists...`);
|
||||||
|
|
||||||
|
if (KV_NAMESPACE_ID) {
|
||||||
|
updateKVConfig(KV_NAMESPACE_ID);
|
||||||
|
console.log(`✅ User specified KV namespace (ID: ${KV_NAMESPACE_ID})`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
let namespace;
|
let namespace;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user