--- title: Configuration Schema tags: v2 --- [ToC] ## 情境 - 情境 1 - - light / dark mode - 情境 2 - - 封存整個 project - 情境 3 - - 切換語言, currency, 顯示時間 Use relative times For example: 30 minutes ago. - 情境 4 - - email 通知 - 情境 5 - - 開啟 api-key 給別人使用 - 情境 6 - - read only - 情境 7 - - 設定合約地址 - 情境 8 - - 上傳/下載 限制 ## 預計做法 ### 將設定檔分成兩種 1. 前端顯示用, 呈現要設定的 title, description, option, 將資料寫進一個 JSON 檔 2. 在資料庫儲存設定過後的值 ### JSON 檔依照 acccount / project / system 做切分 - account_config.json - project_config.json - system_config.json ### JSON 檔格式 - project_config.json ``` 格式 { title: string description: string category_key: NFT_CREATOR_V2 key: NFT_CREATOR_V2_CONTRACT display: false default_value: [] }, Example 1 { title: nft contract description: set your nft contract address category_key: NFT_CREATOR_V2 key: NFT_CREATOR_V2_CONTRACT display: false default_value: [] }, Example 2 account_config.json { title: currency display description: what kind of currency would show on the page category_key: PREFERENCE key: PREFERENCE_CURRENCY display: true default_value: [] }, Example 3 { title: upload whitelist description: only one the whitelist can upload data to the project category_key: WHITELIST key: WHITELIST_UPLOAD display: true default_value: [] } ``` ### DB Schema ``` 格式 { category_key: NFT_CREATOR_V2 key: NFT_CREATOR_V2_CONTRACT, value: [] project_id: ObjejctId, account_id: ObjectId, enable: true } ``` ### 規則 - 在根據 key 拿資料的時候, 看到 key 就應該知道要拿到什麼資料 - 例如 IPFS_ISENCRYPT, 看到就知道會是一個 boolean 值, 所以拿到就會做相對應的操作 - NFT_MINT_START_DATE, 看到就知道是 date ### 0615 筆記 - 暫時不要管前端顯示畫面, 因為前端顯示的畫面跟後端存資料的方式不一樣 - 後端存 DB 就用一個叫 value 的 array 去接值, 因為我可以透過 key 的名字去解析他 - boolean 就存成 string 的 0 or 1 ex: ['0'] ### 設定檔 - 目前我將設定檔切成 3 份, 每一份檔案都要有預設值 - system_config 就是固定的, 後端不會有存值 - account_config, project_config 是可以做更改的, 所以要在 DB 存資料 ### 待辦清單 - 畫架構圖 - 定義規則(key 命名, 使用方法...)