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: trueakan 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:
- catalogs —
products,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. - users —
members,member_addresses,member_carts,member_cart_items,member_cart_shipping_methods,stores, danref_countries/ref_provinces/ref_cities/ref_districts/ref_subdistricts. - orders —
orders,order_items,order_addresses. - deliveries —
deliveries. - promotions —
vouchers(+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. - journals —
journals,journal_categories,journal_tags,journal_products. - admins —
admins,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, userpostgres, menyimpan snapshot bertanggalexsport_prod_YYYYMMDDdanexsport_dev_*.DB_NAMEdi.envbackend memilih salah satu — baca, jangan asumsikan; ia sering berubah (ia adalahexsport_dev_20250921pada 2026-09-15). Snapshot prod adalah data produksi asli. - Live: AWS RDS. Produksi dijangkau lewat bastion
bastion.prod.exsport.bdt.dev. TablePlus punya koneksiexsport_dev/exsport_stg/exsport_prod.