Iniciativa Cidadã Independente · Transparência Parlamentar
TS38 linhas1.283 bytes

apps/worker/src/runtime/node/env.ts

SHA-256

e5ad6fe1a6662abea7cdb344993f42635b08faca7ed96631c1accec021630afb

Somente leiturafonte-acf635076da2
import 'dotenv/config'
import Database from 'better-sqlite3'
import { mkdirSync } from 'node:fs'
import { dirname } from 'node:path'
import type { Env } from '../../types'
import { FsKV } from './kv-fs'
import { SqliteD1 } from './d1-sqlite'

function required(name: string): string {
  const v = process.env[name]
  if (!v) throw new Error(`missing env: ${name}`)
  return v
}

const dbPath = required('SENADO_DB_PATH')
const cachePath = required('SENADO_CACHE_PATH')

mkdirSync(dirname(dbPath), { recursive: true })
mkdirSync(cachePath, { recursive: true })

const sqlite = new Database(dbPath)
sqlite.pragma('journal_mode = WAL')
sqlite.pragma('synchronous = NORMAL')
sqlite.pragma('busy_timeout = 5000')

export const env: Env = {
  SENADO_DB: new SqliteD1(sqlite) as unknown as Env['SENADO_DB'],
  SENADO_CACHE: new FsKV(cachePath) as unknown as Env['SENADO_CACHE'],
  ADM_BASE_URL: process.env.ADM_BASE_URL || 'https://adm.senado.gov.br/adm-dadosabertos',
  LEGIS_BASE_URL: process.env.LEGIS_BASE_URL || 'https://legis.senado.leg.br/dadosabertos',
  CACHE_TTL: process.env.CACHE_TTL || '21600',
  ENVIRONMENT: process.env.ENVIRONMENT || 'production',
  ADMIN_SECRET: required('ADMIN_SECRET'),
  RESEND_API_KEY: process.env.RESEND_API_KEY,
}

export const sqliteHandle = sqlite