content.tsx 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import { SimpleCodeBlock } from 'ui-patterns/SimpleCodeBlock'
  2. import type { ContentFileProps } from '@/components/interfaces/Connect/Connect.types'
  3. import {
  4. ConnectTabContent,
  5. ConnectTabs,
  6. ConnectTabTrigger,
  7. ConnectTabTriggers,
  8. } from '@/components/interfaces/Connect/ConnectTabs'
  9. const ContentFile = ({ connectionStringPooler }: ContentFileProps) => {
  10. return (
  11. <ConnectTabs>
  12. <ConnectTabTriggers>
  13. <ConnectTabTrigger value=".env" />
  14. <ConnectTabTrigger value="drizzle/schema.tsx" />
  15. <ConnectTabTrigger value="index.tsx" />
  16. </ConnectTabTriggers>
  17. <ConnectTabContent value=".env">
  18. <SimpleCodeBlock className="bash" parentClassName="min-h-72">
  19. {connectionStringPooler.ipv4SupportedForDedicatedPooler &&
  20. connectionStringPooler.transactionDedicated
  21. ? `
  22. DATABASE_URL="${connectionStringPooler.transactionDedicated}"
  23. `
  24. : connectionStringPooler.transactionDedicated &&
  25. !connectionStringPooler.ipv4SupportedForDedicatedPooler
  26. ? `
  27. # Use Shared connection pooler (supports both IPv4/IPv6)
  28. DATABASE_URL="${connectionStringPooler.transactionShared}"
  29. # If your network supports IPv6 or you purchased IPv4 addon, use dedicated pooler
  30. # DATABASE_URL="${connectionStringPooler.transactionDedicated}"
  31. `
  32. : `
  33. DATABASE_URL="${connectionStringPooler.transactionShared}"
  34. `}
  35. </SimpleCodeBlock>
  36. </ConnectTabContent>
  37. <ConnectTabContent value="drizzle/schema.tsx">
  38. <SimpleCodeBlock className="tsx" parentClassName="min-h-72">
  39. {`
  40. import { pgTable, serial, text, varchar } from "drizzle-orm/pg-core";
  41. export const users = pgTable('users', {
  42. id: serial('id').primaryKey(),
  43. fullName: text('full_name'),
  44. phone: varchar('phone', { length: 256 }),
  45. });
  46. `}
  47. </SimpleCodeBlock>
  48. </ConnectTabContent>
  49. <ConnectTabContent value="index.tsx">
  50. <SimpleCodeBlock className="tsx" parentClassName="min-h-72">
  51. {`
  52. import { drizzle } from 'drizzle-orm/postgres-js'
  53. import postgres from 'postgres'
  54. import { users } from './schema'
  55. const connectionString = process.env.DATABASE_URL
  56. // Disable prefetch as it is not supported for "Transaction" pool mode
  57. const client = postgres(connectionString, { prepare: false })
  58. const db = drizzle(client);
  59. const allUsers = await db.select().from(users);
  60. `}
  61. </SimpleCodeBlock>
  62. </ConnectTabContent>
  63. </ConnectTabs>
  64. )
  65. }
  66. export default ContentFile