e0d53d6e74
Introduce database config, MongoDB and JSON store implementations, and a datastore factory that connects to MongoDB by default and falls back to a local JSON file when MongoDB is unavailable. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
26 lines
904 B
JavaScript
26 lines
904 B
JavaScript
const boolFromEnv = (value, fallback = false) => {
|
|
if (value === undefined || value === '') return fallback
|
|
return ['1', 'true', 'yes', 'on'].includes(value.toLowerCase())
|
|
}
|
|
|
|
const numberFromEnv = (value, fallback) => {
|
|
if (value === undefined || value === '') return fallback
|
|
const parsed = Number(value)
|
|
return Number.isFinite(parsed) ? parsed : fallback
|
|
}
|
|
|
|
const config = {
|
|
uri: process.env.MONGO_URI || 'mongodb://127.0.0.1:27017',
|
|
dbName: process.env.MONGO_DB || 'chatapp',
|
|
options: {
|
|
user: process.env.MONGO_USER || undefined,
|
|
pass: process.env.MONGO_PASSWORD || undefined,
|
|
socketTimeoutMS: numberFromEnv(process.env.MONGO_SOCKET_TIMEOUT, 45000),
|
|
connectTimeoutMS: numberFromEnv(process.env.MONGO_CONNECT_TIMEOUT, 30000),
|
|
replicaSet: process.env.MONGO_REPLICA_SET || undefined,
|
|
tls: boolFromEnv(process.env.MONGO_TLS, false),
|
|
},
|
|
}
|
|
|
|
module.exports = config
|