Email queue + async sending; legal settings and placeholders
- Add in-memory email queue with rate limiting (MAX_EMAILS_PER_HOUR) - Bulk send to event attendees now queues and returns immediately - Frontend shows 'Emails are being sent in the background' - Legal pages, settings, and placeholders updates Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -437,6 +437,25 @@ async function migrate() {
|
||||
updated_at TEXT NOT NULL
|
||||
)
|
||||
`);
|
||||
|
||||
// Legal settings table for legal page placeholder values
|
||||
await (db as any).run(sql`
|
||||
CREATE TABLE IF NOT EXISTS legal_settings (
|
||||
id TEXT PRIMARY KEY,
|
||||
company_name TEXT,
|
||||
legal_entity_name TEXT,
|
||||
ruc_number TEXT,
|
||||
company_address TEXT,
|
||||
company_city TEXT,
|
||||
company_country TEXT,
|
||||
support_email TEXT,
|
||||
legal_email TEXT,
|
||||
governing_law TEXT,
|
||||
jurisdiction_city TEXT,
|
||||
updated_at TEXT NOT NULL,
|
||||
updated_by TEXT REFERENCES users(id)
|
||||
)
|
||||
`);
|
||||
} else {
|
||||
// PostgreSQL migrations
|
||||
await (db as any).execute(sql`
|
||||
@@ -822,6 +841,25 @@ async function migrate() {
|
||||
updated_at TIMESTAMP NOT NULL
|
||||
)
|
||||
`);
|
||||
|
||||
// Legal settings table for legal page placeholder values
|
||||
await (db as any).execute(sql`
|
||||
CREATE TABLE IF NOT EXISTS legal_settings (
|
||||
id UUID PRIMARY KEY,
|
||||
company_name VARCHAR(255),
|
||||
legal_entity_name VARCHAR(255),
|
||||
ruc_number VARCHAR(50),
|
||||
company_address TEXT,
|
||||
company_city VARCHAR(100),
|
||||
company_country VARCHAR(100),
|
||||
support_email VARCHAR(255),
|
||||
legal_email VARCHAR(255),
|
||||
governing_law VARCHAR(255),
|
||||
jurisdiction_city VARCHAR(100),
|
||||
updated_at TIMESTAMP NOT NULL,
|
||||
updated_by UUID REFERENCES users(id)
|
||||
)
|
||||
`);
|
||||
}
|
||||
|
||||
console.log('Migrations completed successfully!');
|
||||
|
||||
Reference in New Issue
Block a user