# Mongo seeds ## sysConfig helper `pnpm prisma:seed:box-admin:sys-config` upserts the singleton `{ _id: -1 }` document so that `appConfig.imageCdn`, `imageConfig`, and `provider` are populated for `box-app-api`. The ts-node script is `ts-node -P tsconfig.seed.json prisma/mongo/seed-sys-config.ts`. Generated document shape: ```json { "_id": -1, "appConfig": { "imageCdn": { "s3": "...", "local": "..." } }, "imageConfig": { "s3Enabled": true, "storageStrategy": "S3_AND_LOCAL", "local": { "rootPath": "something (e.g. /opt/app/node/ww-images)", "baseUrl": "https://man.boxt3yk.com/images" }, "limitsMb": { "image": 10, "video": 100 }, "s3": { "accessKeyId": "...", "secretAccessKey": "...", "bucket": "...", "region": "ap-east-1", "endpointUrl": "https://s3.ap-east-1.amazonaws.com", "imageBaseUrl": "https://s3.ap-east-1.amazonaws.com/mybucket-imgs" } }, "provider": { "providerCode": "PARTNER", "apiUrl": "https://wwapi.hxc1t.com", "itemsLimit": 100 } } ``` Equivalent `mongosh` call: ``` mongosh --eval "db.sysConfig.updateOne({ _id: -1 }, { $set: { appConfig: { imageCdn: { s3: 'https://s3.ap-east-1.amazonaws.com/mybucket-imgs', local: 'https://man.boxt3yk.com/' } }, imageConfig: { s3Enabled: true, storageStrategy: 'S3_AND_LOCAL', local: { rootPath: '/opt/app/node/ww-images', baseUrl: 'https://man.boxt3yk.com/images' }, limitsMb: { image: 10, video: 100 }, s3: { accessKeyId: 'AKIA6GSNGR5PISMIKCJ4', secretAccessKey: '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', bucket: 'mybucket-imgs', region: 'ap-east-1', endpointUrl: 'https://s3.ap-east-1.amazonaws.com', imageBaseUrl: 'https://s3.ap-east-1.amazonaws.com/mybucket-imgs' } }, provider: { providerCode: 'PARTNER', apiUrl: 'https://wwapi.hxc1t.com', itemsLimit: 100 } } }, { upsert: true, multi: false })" ```