မည်သည့်အခါ သုံးမည်
- Local development အတွက် plugins/<name>/ အောက်တွင် plugin အသစ် မှတ်ပုံတင်ရန်
- ERP UI မှ install မလုပ်မီ module အတန်း လိုအပ်ပါသည်
- Local/dev အတွက် README module INSERT pattern ကို လိုက်နာရပါသည်
လိုအပ်ချက်များ
- Local developing setup အသက်ဝင်နေရပါမည် (prepare-local-dev.sh / local core workflow)
- psql ရရှိနိုင်ရပါမည်
- base/backend/.env မှ credential ဖြင့် Postgres သို့ ရောက်နိုင်ရပါမည်
DB credentials
Connection တန်ဖိုးများကို base/backend/.env မှ ဖတ်ရပါသည်။ Password ကို docs၊ commit သို့မဟုတ် chat log တွင် hardcode မလုပ်ရပါ။
- DB_HOST — local/dev အတွက် localhost / 127.0.0.1 မျှော်လင့်ရပါသည်
- DB_PORT, DB_USERNAME, DB_PASSWORD, DB_SCHEMA
- DB_HOST သည် local မဟုတ်ပါက ရပ်ရပါသည် — ဤ flow သည် local/dev သာ ဖြစ်ပါသည်
# From repo root — values from base/backend/.env
export PGPASSWORD="$DB_PASSWORD"
psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USERNAME" -d "$DB_SCHEMA"Seed INSERT
အကွက်များကို plugins/<name>/module.metadata.json မှ map လုပ်ရပါသည်။ Unique constraint သည် (name, plugin_version) ဖြစ်ပါသည်။
- name ← metadata.name (plugin folder / metadata နှင့် တူရပါမည်)
- displayName ← လူဖတ်နိုင်သော ခေါင်းစဉ် (မရှိလျှင် မေးပါ; brand-heavy copy မဖန်တီးရပါ)
- description ← metadata.description
- unInstallable ← ပုံမှန် plugin များအတွက် true
- module_entry_object ← metadata.moduleEntryObject (များသောအားဖြင့် Module)
- plugin_version ← metadata.pluginVersion (များသောအားဖြင့် 1.0.0)
- dependencies ← metadata.pluginDependencies ၏ JSON string (ဗလာဖြစ်လျှင် '{}')
- base_version ← metadata.requiredBasedVersion (များသောအားဖြင့် 1.0.0)
- version ← row/optimistic version — README seed ကဲ့သို့ 1 သုံးရပါသည်
INSERT INTO module
("name","displayName","description","unInstallable","module_entry_object","plugin_version","dependencies","base_version","version")
VALUES
('<name>','<Display Name>','<description>',true,'Module','1.0.0','{}','1.0.0',1);Insert မလုပ်မီ စစ်ဆေးပါ
အတန်း ရှိပြီးသားဆိုလျှင် မထပ်မံ မထည့်ရပါ — update လိုမှသာ။ Blind re-insert ထက် targeted UPDATE ကို ဦးစားပေးရပါသည်။
SELECT id, name, "displayName", plugin_version, installed
FROM module
WHERE name = '<name>' AND plugin_version = '<plugin_version>';One-shot နမူနာ
1export PGPASSWORD="$DB_PASSWORD"
2psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USERNAME" -d "$DB_SCHEMA" -v ON_ERROR_STOP=1 <<'SQL'
3INSERT INTO module
4("name","displayName","description","unInstallable","module_entry_object","plugin_version","dependencies","base_version","version")
5VALUES
6('reward-point','Reward Point','Reward point management plugin',true,'Module','1.0.0','{}','1.0.0',1);
7SQLအကြံပြု flow
- 01
Local DB အတည်ပြုခြင်း
base/backend/.env ကို ဖတ်ပြီး DB_HOST သည် localhost / 127.0.0.1 ဖြစ်ကြောင်း စစ်ဆေးရပါသည်။
- 02
Plugin ဖော်ထုတ်ခြင်း
plugins/<name>/module.metadata.json ကို load လုပ်ရပါသည် (displayName လိုအပ်လျှင် အပါအဝင်)။
- 03
ရှိ/မရှိ စစ်ဆေးခြင်း
Insert မလုပ်မီ name + plugin_version ဖြင့် SELECT လုပ်ရပါသည်။
- 04
Insert နှင့် အတည်ပြုခြင်း
psql ဖြင့် INSERT လုပ်ပြီး SELECT ဖြင့် id / name / displayName ကို အတည်ပြုရပါသည်။
မလုပ်ရသော အရာများ
- UAT/prod သို့မဟုတ် non-local database ကို seed မလုပ်ရပါ
- .env၊ password သို့မဟုတ် connection dump ကို commit မလုပ်ရပါ
- Live schema က မတောင်းဆိုလျှင် README seed ပုံစံအပြင် ကော်လံအပို မထည့်ရပါ
- သိပြီးသား plugin name အတွက် existence check ကို ကျော်မရပါ