Files
greatbear/pb/migrations/1788500000_menu_items_v2.js
T
tanshu bcb41353ce Load the real food menu (11 categories, 137 items)
- app/src/data/menu-data.mjs: single source for PB sync + offline fallback
- pb/migrations/1788500000_menu_items_v2.js: price number -> text (supports
  ranges like 449/549), adds group field for veg/non-veg badges
- scripts/update-menu.mjs: replaces menu_categories/menu_items in any
  PocketBase (local dev or https://admin.greatbear.in)
- menu cards: category icons when no image, FSSAI-style dietary badge,
  text prices, optional pairing/tag footer
- content.json drops placeholder menu arrays (menu now lives in code)
2026-09-03 18:04:46 +05:30

71 lines
2.3 KiB
JavaScript

/// <reference path="../pb_data/types.d.ts" />
migrate(
(app) => {
// The real food menu uses text prices ("449/549" for Veg/Chicken variants)
// and needs a veg/non-veg badge field. The previous menu_items collection
// only held placeholder content, so we recreate it with the final schema.
try {
const oldCollection = app.findCollectionByNameOrId('menu_items')
app.delete(oldCollection)
} catch (e) {
// collection may not exist on a fresh database — nothing to migrate
}
const collection = new Collection({
name: 'menu_items',
type: 'base',
listRule: '',
viewRule: '',
createRule: null,
updateRule: null,
deleteRule: null,
fields: [
{ name: 'uid', type: 'text', required: true },
{ name: 'category', type: 'text', required: true },
{ name: 'name', type: 'text', required: true },
{ name: 'description', type: 'text' },
{ name: 'price', type: 'text' },
{ name: 'pairing', type: 'text' },
{ name: 'tag', type: 'text' },
{ name: 'image', type: 'text' },
{ name: 'group', type: 'text' },
{ name: 'sort', type: 'number' },
],
indexes: ['CREATE UNIQUE INDEX idx_menu_items_uid ON menu_items (uid)'],
})
return app.save(collection)
},
(app) => {
// Revert to the original placeholder schema.
try {
const newCollection = app.findCollectionByNameOrId('menu_items')
app.delete(newCollection)
} catch (e) {
// nothing to revert
}
const collection = new Collection({
name: 'menu_items',
type: 'base',
listRule: '',
viewRule: '',
createRule: null,
updateRule: null,
deleteRule: null,
fields: [
{ name: 'uid', type: 'text', required: true },
{ name: 'category', type: 'text', required: true },
{ name: 'name', type: 'text', required: true },
{ name: 'description', type: 'text' },
{ name: 'price', type: 'number' },
{ name: 'pairing', type: 'text' },
{ name: 'tag', type: 'text' },
{ name: 'image', type: 'text' },
{ name: 'sort', type: 'number' },
],
indexes: ['CREATE UNIQUE INDEX idx_menu_items_uid ON menu_items (uid)'],
})
return app.save(collection)
}
)