Skip to content

Database

Postgres, satu engine. Tidak ada sistem migrasi schema — schema adalah file entity.

Cara halaman ini diverifikasi

Dibaca pada 2026-09-15 dari src/database/database-config.service.ts dan file entity modul di def-exsport-backend.

Satu engine

Exsport hanya Postgres (TypeORM + pg). Tidak ada aturan SQL lintas-driver INACT yang berlaku di sini — SQL Postgres biasa sudah cukup.

Schema adalah entity

Backend menjalankan TypeORM dengan synchronize: true (src/database/database-config.service.ts). Saat boot ia memuat setiap *.model.ts / *.entity.ts (entities: [__dirname + '/../**/*.{entity,model}{.ts,.js}'], autoLoadEntities: true) dan membuat atau meng-alter tabel agar cocok.

Yang mengikuti dari itu:

  • Tidak ada folder migrations dan tidak ada seed script. Sebuah tabel ada karena file entity berkata @Entity({ name: '...' }). Untuk mengubah schema, ubah entity.
  • synchronize: true akan meng-alter schema live agar cocok dengan kode. Hati-hati mengarahkan branch dengan perubahan entity ke snapshot yang kamu pedulikan; ia bisa men-drop atau mengubah kolom.
  • "Seeding" adalah sekumpulan endpoint REST, bukan script: POST admins/seed-settings, POST vouchers/seed-voucher-types, POST vouchers/seed-payment-methods, POST vouchers/seed-shipping-couriers, POST discounts/seed-discount-types.

Ukuran pool adalah 20; tabel metadata TypeORM adalah typeorm_metadata.

Tabel, per modul

Nama tabel berasal dari @Entity({ name }) masing-masing entity. Grup utamanya:

  • catalogsproducts, product_articles (varian SKU / size / color), product_heads, product_types, product_subtypes, categories, sub_categories, brands, series, collaborations, tags, icons, color_codes, narratives, size_charts, product_on_sales, product_recommendations, dan tabel image/banner.
  • usersmembers, member_addresses, member_carts, member_cart_items, member_cart_shipping_methods, stores, dan ref_countries / ref_provinces / ref_cities / ref_districts / ref_subdistricts.
  • ordersorders, order_items, order_addresses.
  • deliveriesdeliveries.
  • promotionsvouchers (+ voucher_types, voucher_couriers, voucher_payment_methods, dan tabel anak per-jenis), discounts (+ discount_types, tabel anak tier/bundle/gift), order_discounts, flash_sales, flash_sales_products.
  • journalsjournals, journal_categories, journal_tags, journal_products.
  • adminsadmins, roles, menus, roles_menus, departments, settings, promo_banners, highlight_subcategories.

Kolom dwibahasa sering ada: nameId/nameEn, descId/descEn, metaTitleId/metaTitleEn.

Snapshot dan database live

  • Lokal (Mac): Postgres di localhost:5432, user postgres, menyimpan snapshot bertanggal exsport_prod_YYYYMMDD dan exsport_dev_*. DB_NAME di .env backend memilih salah satu — baca, jangan asumsikan; ia sering berubah (ia adalah exsport_dev_20250921 pada 2026-09-15). Snapshot prod adalah data produksi asli.
  • Live: AWS RDS. Produksi dijangkau lewat bastion bastion.prod.exsport.bdt.dev. TablePlus punya koneksi exsport_dev / exsport_stg / exsport_prod.