import { storeJson } from '../fileModels/storeJson' import { i18n } from '../i18n' import { sdk } from '../sdk' import { POSTGRES_PORT } from '../utils' export const showDbCredentials = sdk.Action.withoutInput( // id 'show-db-credentials', // metadata async ({ effects }) => ({ name: i18n('Show Database Credentials'), description: i18n( 'Display the PostgreSQL username, password, database, and connection URL.', ), warning: null, allowedStatuses: 'any', group: null, visibility: 'enabled', }), // run async ({ effects }) => { const dbAuth = await storeJson.read((s) => s.dbAuth).once() const username = dbAuth?.username ?? '' const password = dbAuth?.password ?? '' const database = dbAuth?.database ?? '' const url = dbAuth ? `postgres://${dbAuth.username}:${dbAuth.password}@127.0.0.1:${POSTGRES_PORT}/${dbAuth.database}` : '' return { version: '1', title: i18n('Show Database Credentials'), message: i18n( 'Use these credentials to connect to the Spaces PostgreSQL database (loopback only inside the container).', ), result: { type: 'group', value: [ { type: 'single', name: i18n('Username'), description: null, value: username, masked: false, copyable: true, qr: false, }, { type: 'single', name: i18n('Password'), description: null, value: password, masked: true, copyable: true, qr: false, }, { type: 'single', name: i18n('Database'), description: null, value: database, masked: false, copyable: true, qr: false, }, { type: 'single', name: i18n('Connection URL'), description: null, value: url, masked: true, copyable: true, qr: false, }, ], }, } }, )