Files
supabase/apps/studio/pages/api/projects/[ref]/settings.ts
Alaister Young 12cc4e5fbc chore: use service versions endpoint (#30352)
* chore: use service versions endpoint

* update types

* fix types

* fallback postgres version for unknown images
2024-11-08 11:17:16 +08:00

65 lines
2.0 KiB
TypeScript

import { NextApiRequest, NextApiResponse } from 'next'
import { components } from 'api-types'
import apiWrapper from 'lib/api/apiWrapper'
import { PROJECT_ENDPOINT, PROJECT_ENDPOINT_PROTOCOL } from 'pages/api/constants'
type ProjectAppConfig = components['schemas']['ProjectAppConfigResponse'] & { protocol?: string }
export type ProjectSettings = components['schemas']['ProjectSettingsResponse'] & {
app_config?: ProjectAppConfig
}
export default (req: NextApiRequest, res: NextApiResponse) => apiWrapper(req, res, handler)
async function handler(req: NextApiRequest, res: NextApiResponse) {
const { method } = req
switch (method) {
case 'GET':
return handleGetAll(req, res)
default:
res.setHeader('Allow', ['GET'])
res.status(405).json({ data: null, error: { message: `Method ${method} Not Allowed` } })
}
}
const handleGetAll = async (req: NextApiRequest, res: NextApiResponse) => {
const response: ProjectSettings = {
app_config: {
db_schema: 'public',
endpoint: PROJECT_ENDPOINT,
// manually added to force the frontend to use the correct URL
protocol: PROJECT_ENDPOINT_PROTOCOL,
},
cloud_provider: 'AWS',
db_dns_name: '-',
db_host: 'localhost',
db_ip_addr_config: 'legacy' as const,
db_name: 'postgres',
db_port: 5432,
db_user: 'postgres',
inserted_at: '2021-08-02T06:40:40.646Z',
jwt_secret:
process.env.AUTH_JWT_SECRET ?? 'super-secret-jwt-token-with-at-least-32-characters-long',
name: process.env.DEFAULT_PROJECT_NAME || 'Default Project',
ref: 'default',
region: 'ap-southeast-1',
service_api_keys: [
{
api_key: process.env.SUPABASE_SERVICE_KEY ?? '',
name: 'service_role key',
tags: 'service_role',
},
{
api_key: process.env.SUPABASE_ANON_KEY ?? '',
name: 'anon key',
tags: 'anon',
},
],
ssl_enforced: false,
status: 'ACTIVE_HEALTHY',
}
return res.status(200).json(response)
}