importCollections() kompiliert Access-Rules in PocketBase v0.38 nicht korrekt → HTTP 400 bei jedem List-Request. Alle anderen Migrationen (nachrichten, mitglieder, etc.) verwenden new Collection() + app.save() und funktionieren einwandfrei. Gleiche Methode jetzt auch für neuigkeiten und reaktionen. Außerdem: Makefile um staging-reset-Target erweitert (löscht PB-Daten), staging-deploy synchronisiert Migrations und Hooks jetzt vollständig (nicht nur neue Dateien).
190 lines
5.2 KiB
JavaScript
190 lines
5.2 KiB
JavaScript
/// <reference path="../pb_data/types.d.ts" />
|
||
migrate((app) => {
|
||
|
||
// neuigkeiten: new Collection() + app.save() – genau wie nachrichten/mitglieder.
|
||
// importCollections() kompiliert Rules in PB v0.38 NICHT korrekt → HTTP 400.
|
||
const neuigkeiten = new Collection({
|
||
"id": "pbc_1779230901",
|
||
"name": "neuigkeiten",
|
||
"type": "base",
|
||
"system": false,
|
||
"listRule": "@request.auth.verein_id = verein_id",
|
||
"viewRule": "@request.auth.verein_id = verein_id",
|
||
"createRule": "@request.auth.verein_id = verein_id",
|
||
"updateRule": "@request.auth.verein_id = verein_id && autor_id = @request.auth.id",
|
||
"deleteRule": "@request.auth.verein_id = verein_id && autor_id = @request.auth.id",
|
||
"indexes": [],
|
||
"fields": [
|
||
{
|
||
"autogeneratePattern": "[a-z0-9]{15}",
|
||
"hidden": false,
|
||
"id": "text3208210256",
|
||
"max": 15,
|
||
"min": 15,
|
||
"name": "id",
|
||
"pattern": "^[a-z0-9]+$",
|
||
"presentable": false,
|
||
"primaryKey": true,
|
||
"required": true,
|
||
"system": true,
|
||
"type": "text"
|
||
},
|
||
{
|
||
"cascadeDelete": true,
|
||
"collectionId": "pbc_3589557411",
|
||
"hidden": false,
|
||
"id": "relation3100049688",
|
||
"maxSelect": 1,
|
||
"minSelect": 0,
|
||
"name": "verein_id",
|
||
"presentable": false,
|
||
"required": true,
|
||
"system": false,
|
||
"type": "relation"
|
||
},
|
||
{
|
||
"autogeneratePattern": "",
|
||
"hidden": false,
|
||
"id": "text2300079512",
|
||
"max": 0,
|
||
"min": 0,
|
||
"name": "autor_id",
|
||
"pattern": "",
|
||
"presentable": false,
|
||
"primaryKey": false,
|
||
"required": true,
|
||
"system": false,
|
||
"type": "text"
|
||
},
|
||
{
|
||
"autogeneratePattern": "",
|
||
"hidden": false,
|
||
"id": "text1546895374",
|
||
"max": 0,
|
||
"min": 0,
|
||
"name": "autor_name",
|
||
"pattern": "",
|
||
"presentable": false,
|
||
"primaryKey": false,
|
||
"required": false,
|
||
"system": false,
|
||
"type": "text"
|
||
},
|
||
{
|
||
"autogeneratePattern": "",
|
||
"hidden": false,
|
||
"id": "text1059453555",
|
||
"max": 0,
|
||
"min": 0,
|
||
"name": "text",
|
||
"pattern": "",
|
||
"presentable": false,
|
||
"primaryKey": false,
|
||
"required": false,
|
||
"system": false,
|
||
"type": "text"
|
||
},
|
||
{
|
||
"hidden": false,
|
||
"id": "file5103562148",
|
||
"maxSelect": 10,
|
||
"maxSize": 15728640,
|
||
"mimeTypes": ["image/jpeg","image/png","image/gif","image/webp","video/mp4","video/quicktime"],
|
||
"name": "medien",
|
||
"presentable": false,
|
||
"required": false,
|
||
"system": false,
|
||
"type": "file"
|
||
},
|
||
{
|
||
"cascadeDelete": false,
|
||
"collectionId": "pbc_3099069179",
|
||
"hidden": false,
|
||
"id": "relation3177861730",
|
||
"maxSelect": 99,
|
||
"minSelect": 0,
|
||
"name": "gruppe_ids",
|
||
"presentable": false,
|
||
"required": false,
|
||
"system": false,
|
||
"type": "relation"
|
||
},
|
||
{
|
||
"cascadeDelete": false,
|
||
"collectionId": "pbc_2279568741",
|
||
"hidden": false,
|
||
"id": "relation2143897900",
|
||
"maxSelect": 1,
|
||
"minSelect": 0,
|
||
"name": "termin_id",
|
||
"presentable": false,
|
||
"required": false,
|
||
"system": false,
|
||
"type": "relation"
|
||
}
|
||
]
|
||
});
|
||
app.save(neuigkeiten);
|
||
|
||
const neuigkeitenId = app.findCollectionByNameOrId("neuigkeiten").id;
|
||
|
||
const reaktionen = new Collection({
|
||
"id": "pbc_1779230902",
|
||
"name": "reaktionen",
|
||
"type": "base",
|
||
"system": false,
|
||
"createRule": "@request.auth.id != ''",
|
||
"deleteRule": "@request.auth.id = user_id",
|
||
"listRule": "@request.auth.verein_id = beitrag_id.verein_id",
|
||
"viewRule": "@request.auth.verein_id = beitrag_id.verein_id",
|
||
"updateRule": null,
|
||
"indexes": ["CREATE UNIQUE INDEX idx_reaktion_unique ON reaktionen (beitrag_id, user_id)"],
|
||
"fields": [
|
||
{
|
||
"autogeneratePattern": "[a-z0-9]{15}",
|
||
"hidden": false,
|
||
"id": "text3208210256",
|
||
"max": 15,
|
||
"min": 15,
|
||
"name": "id",
|
||
"pattern": "^[a-z0-9]+$",
|
||
"presentable": false,
|
||
"primaryKey": true,
|
||
"required": true,
|
||
"system": true,
|
||
"type": "text"
|
||
},
|
||
{
|
||
"cascadeDelete": true,
|
||
"collectionId": neuigkeitenId,
|
||
"hidden": false,
|
||
"id": "relation4196188140",
|
||
"maxSelect": 1,
|
||
"minSelect": 0,
|
||
"name": "beitrag_id",
|
||
"presentable": false,
|
||
"required": true,
|
||
"system": false,
|
||
"type": "relation"
|
||
},
|
||
{
|
||
"cascadeDelete": true,
|
||
"collectionId": "_pb_users_auth_",
|
||
"hidden": false,
|
||
"id": "relation3255232538",
|
||
"maxSelect": 1,
|
||
"minSelect": 0,
|
||
"name": "user_id",
|
||
"presentable": false,
|
||
"required": true,
|
||
"system": false,
|
||
"type": "relation"
|
||
}
|
||
]
|
||
});
|
||
app.save(reaktionen);
|
||
|
||
}, (app) => {
|
||
try { app.delete(app.findCollectionByNameOrId("reaktionen")) } catch(_) {}
|
||
try { app.delete(app.findCollectionByNameOrId("neuigkeiten")) } catch(_) {}
|
||
})
|