package migrations import ( "github.com/pocketbase/pocketbase/core" m "github.com/pocketbase/pocketbase/migrations" ) func init() { m.Register(func(app core.App) error { jsonData := `[ { "createRule": "@request.auth.id != \"\" && (@request.body.author = @request.auth.id)", "deleteRule": "author = @request.auth.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" }, { "autogeneratePattern": "", "hidden": false, "id": "wquvuytd", "max": 0, "min": 0, "name": "name", "pattern": "", "presentable": false, "primaryKey": false, "required": true, "system": false, "type": "text" }, { "autogeneratePattern": "", "hidden": false, "id": "6kkucam1", "max": 0, "min": 0, "name": "description", "pattern": "", "presentable": false, "primaryKey": false, "required": false, "system": false, "type": "text" }, { "autogeneratePattern": "", "hidden": false, "id": "8x74ba26", "max": 0, "min": 0, "name": "location", "pattern": "", "presentable": false, "primaryKey": false, "required": false, "system": false, "type": "text" }, { "hidden": false, "id": "ehrmydva", "name": "public", "presentable": false, "required": false, "system": false, "type": "bool" }, { "hidden": false, "id": "epgmtyxy", "max": null, "min": 0, "name": "distance", "onlyInt": false, "presentable": false, "required": false, "system": false, "type": "number" }, { "hidden": false, "id": "5wxdt3aj", "max": null, "min": null, "name": "elevation_gain", "onlyInt": false, "presentable": false, "required": false, "system": false, "type": "number" }, { "hidden": false, "id": "xutbwpq4", "max": null, "min": null, "name": "elevation_loss", "onlyInt": false, "presentable": false, "required": false, "system": false, "type": "number" }, { "hidden": false, "id": "ukr9rqz4", "max": null, "min": 0, "name": "duration", "onlyInt": false, "presentable": false, "required": false, "system": false, "type": "number" }, { "hidden": false, "id": "eqeqja1s", "max": null, "min": null, "name": "lat", "onlyInt": false, "presentable": false, "required": false, "system": false, "type": "number" }, { "hidden": false, "id": "y6dbfyw6", "max": null, "min": null, "name": "lon", "onlyInt": false, "presentable": false, "required": false, "system": false, "type": "number" }, { "hidden": false, "id": "aqbpyawe", "maxSelect": 99, "maxSize": 20971520, "mimeTypes": [ "image/jpeg", "image/vnd.mozilla.apng", "image/png", "image/webp", "image/svg+xml", "image/heic", "video/mp4", "video/webm", "video/ogg" ], "name": "photos", "presentable": false, "protected": false, "required": false, "system": false, "thumbs": null, "type": "file" }, { "hidden": false, "id": "k8xdrsyv", "maxSelect": 1, "maxSize": 5242880, "mimeTypes": null, "name": "gpx", "presentable": false, "protected": false, "required": false, "system": false, "thumbs": null, "type": "file" }, { "cascadeDelete": false, "collectionId": "kjxvi8asj2igqwf", "hidden": false, "id": "b49obm5u", "maxSelect": 1, "minSelect": 0, "name": "category", "presentable": false, "required": false, "system": false, "type": "relation" }, { "cascadeDelete": true, "collectionId": "_pb_users_auth_", "hidden": false, "id": "1utgul91", "maxSelect": 1, "minSelect": 0, "name": "author", "presentable": false, "required": true, "system": false, "type": "relation" }, { "cascadeDelete": false, "collectionId": "dd2l9a4vxpy2ni8", "hidden": false, "id": "e1lwowvd", "maxSelect": 2147483647, "minSelect": 0, "name": "summit_logs", "presentable": false, "required": false, "system": false, "type": "relation" }, { "cascadeDelete": false, "collectionId": "goeo2ubp103rzp9", "hidden": false, "id": "ppq2sist", "maxSelect": 2147483647, "minSelect": 0, "name": "waypoints", "presentable": false, "required": false, "system": false, "type": "relation" }, { "hidden": false, "id": "k2giqyjq", "max": null, "min": null, "name": "thumbnail", "onlyInt": false, "presentable": false, "required": false, "system": false, "type": "number" }, { "hidden": false, "id": "dywtnynw", "maxSelect": 1, "name": "difficulty", "presentable": false, "required": false, "system": false, "type": "select", "values": [ "easy", "moderate", "difficult" ] }, { "hidden": false, "id": "hovyvbtt", "max": "", "min": "", "name": "date", "presentable": false, "required": false, "system": false, "type": "date" }, { "autogeneratePattern": "", "hidden": false, "id": "sajmiuau", "max": 0, "min": 0, "name": "external_id", "pattern": "", "presentable": false, "primaryKey": false, "required": false, "system": false, "type": "text" }, { "hidden": false, "id": "htr35nha", "maxSelect": 1, "name": "external_provider", "presentable": false, "required": false, "system": false, "type": "select", "values": [ "strava", "komoot" ] }, { "hidden": false, "id": "autodate2990389176", "name": "created", "onCreate": true, "onUpdate": false, "presentable": false, "system": false, "type": "autodate" }, { "hidden": false, "id": "autodate3332085495", "name": "updated", "onCreate": true, "onUpdate": true, "presentable": false, "system": false, "type": "autodate" } ], "id": "e864strfxo14pm4", "indexes": [], "listRule": "author = @request.auth.id || public = true || (@request.auth.id != \"\" && trail_share_via_trail.user ?= @request.auth.id)", "name": "trails", "system": false, "type": "base", "updateRule": "author = @request.auth.id || (@request.auth.id != \"\" && trail_share_via_trail.trail = id && trail_share_via_trail.user ?= @request.auth.id && trail_share_via_trail.permission = \"edit\")", "viewRule": "author = @request.auth.id || public = true || (@request.auth.id != \"\" && trail_share_via_trail.user ?= @request.auth.id)" }, { "createRule": null, "deleteRule": null, "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" }, { "autogeneratePattern": "", "hidden": false, "id": "38tbd8u4", "max": 0, "min": 0, "name": "name", "pattern": "", "presentable": false, "primaryKey": false, "required": false, "system": false, "type": "text" }, { "hidden": false, "id": "64dsnxtb", "maxSelect": 1, "maxSize": 5242880, "mimeTypes": null, "name": "img", "presentable": false, "protected": false, "required": false, "system": false, "thumbs": null, "type": "file" }, { "hidden": false, "id": "autodate2990389176", "name": "created", "onCreate": true, "onUpdate": false, "presentable": false, "system": false, "type": "autodate" }, { "hidden": false, "id": "autodate3332085495", "name": "updated", "onCreate": true, "onUpdate": true, "presentable": false, "system": false, "type": "autodate" } ], "id": "kjxvi8asj2igqwf", "indexes": [], "listRule": "", "name": "categories", "system": false, "type": "base", "updateRule": null, "viewRule": "" }, { "createRule": "@request.auth.id != \"\"", "deleteRule": "@request.auth.id != \"\" && ((@collection.trails.waypoints.id ?= id && @collection.trails.author = @request.auth.id) || author = @request.auth.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" }, { "autogeneratePattern": "", "hidden": false, "id": "2yegzjtk", "max": 0, "min": 0, "name": "name", "pattern": "", "presentable": false, "primaryKey": false, "required": false, "system": false, "type": "text" }, { "autogeneratePattern": "", "hidden": false, "id": "3xtcjtxv", "max": 0, "min": 0, "name": "description", "pattern": "", "presentable": false, "primaryKey": false, "required": false, "system": false, "type": "text" }, { "hidden": false, "id": "ygotgxzy", "max": null, "min": null, "name": "lat", "onlyInt": false, "presentable": false, "required": false, "system": false, "type": "number" }, { "hidden": false, "id": "q0ygnxd2", "max": null, "min": null, "name": "lon", "onlyInt": false, "presentable": false, "required": false, "system": false, "type": "number" }, { "hidden": false, "id": "s1prb3fx", "max": null, "min": 0, "name": "distance_from_start", "onlyInt": false, "presentable": false, "required": false, "system": false, "type": "number" }, { "autogeneratePattern": "", "hidden": false, "id": "rnjgm2tk", "max": 0, "min": 0, "name": "icon", "pattern": "", "presentable": false, "primaryKey": false, "required": false, "system": false, "type": "text" }, { "hidden": false, "id": "tfhs3juh", "maxSelect": 99, "maxSize": 20971520, "mimeTypes": [ "image/jpeg", "image/png", "image/vnd.mozilla.apng", "image/webp", "image/svg+xml", "video/ogg", "video/mp4", "video/webm" ], "name": "photos", "presentable": false, "protected": false, "required": false, "system": false, "thumbs": null, "type": "file" }, { "cascadeDelete": true, "collectionId": "_pb_users_auth_", "hidden": false, "id": "8qbxrsd8", "maxSelect": 1, "minSelect": 0, "name": "author", "presentable": false, "required": true, "system": false, "type": "relation" }, { "hidden": false, "id": "autodate2990389176", "name": "created", "onCreate": true, "onUpdate": false, "presentable": false, "system": false, "type": "autodate" }, { "hidden": false, "id": "autodate3332085495", "name": "updated", "onCreate": true, "onUpdate": true, "presentable": false, "system": false, "type": "autodate" } ], "id": "goeo2ubp103rzp9", "indexes": [], "listRule": "(@request.auth.id != \"\" && @collection.trails.waypoints.id ?= id && @collection.trails.author ?= @request.auth.id) || (@collection.trails.waypoints.id ?= id && @collection.trails.public ?= true) || \n(@collection.trail_share.trail.waypoints.id ?= id && @collection.trail_share.user ?= @request.auth.id) ||\n(author = @request.auth.id)", "name": "waypoints", "system": false, "type": "base", "updateRule": "@request.auth.id != \"\" && ((@collection.trails.waypoints.id ?= id && @collection.trails.author = @request.auth.id) || author = @request.auth.id)", "viewRule": "(@request.auth.id != \"\" && @collection.trails.waypoints.id ?= id && @collection.trails.author ?= @request.auth.id) || (@collection.trails.waypoints.id ?= id && @collection.trails.public ?= true) || \n(@collection.trail_share.trail.waypoints.id ?= id && @collection.trail_share.user ?= @request.auth.id) ||\n(author = @request.auth.id)" }, { "createRule": "@request.auth.id != \"\"", "deleteRule": "@request.auth.id != \"\" && @collection.trails.summit_logs.id ?= id && (@collection.trails.author ?= @request.auth.id) || (author = @request.auth.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" }, { "hidden": false, "id": "gxq1yeld", "max": "", "min": "", "name": "date", "presentable": false, "required": false, "system": false, "type": "date" }, { "autogeneratePattern": "", "hidden": false, "id": "0ykzwuia", "max": 0, "min": 0, "name": "text", "pattern": "", "presentable": false, "primaryKey": false, "required": false, "system": false, "type": "text" }, { "hidden": false, "id": "rfwmdcpt", "maxSelect": 1, "maxSize": 5242880, "mimeTypes": null, "name": "gpx", "presentable": false, "protected": false, "required": false, "system": false, "thumbs": null, "type": "file" }, { "hidden": false, "id": "ixnksbkt", "maxSelect": 99, "maxSize": 20971520, "mimeTypes": [ "image/jpeg", "image/png", "image/vnd.mozilla.apng", "image/webp", "image/svg+xml", "image/heic", "video/ogg", "video/mp4", "video/webm" ], "name": "photos", "presentable": false, "protected": false, "required": false, "system": false, "thumbs": null, "type": "file" }, { "hidden": false, "id": "jovws28m", "max": null, "min": 0, "name": "distance", "onlyInt": false, "presentable": false, "required": false, "system": false, "type": "number" }, { "hidden": false, "id": "m2kndtwn", "max": null, "min": 0, "name": "elevation_gain", "onlyInt": false, "presentable": false, "required": false, "system": false, "type": "number" }, { "hidden": false, "id": "uqqo9cws", "max": null, "min": 0, "name": "elevation_loss", "onlyInt": false, "presentable": false, "required": false, "system": false, "type": "number" }, { "hidden": false, "id": "vwxjsrae", "max": null, "min": 0, "name": "duration", "onlyInt": false, "presentable": false, "required": false, "system": false, "type": "number" }, { "cascadeDelete": true, "collectionId": "_pb_users_auth_", "hidden": false, "id": "r0mj3tkr", "maxSelect": 1, "minSelect": 0, "name": "author", "presentable": false, "required": true, "system": false, "type": "relation" }, { "hidden": false, "id": "autodate2990389176", "name": "created", "onCreate": true, "onUpdate": false, "presentable": false, "system": false, "type": "autodate" }, { "hidden": false, "id": "autodate3332085495", "name": "updated", "onCreate": true, "onUpdate": true, "presentable": false, "system": false, "type": "autodate" } ], "id": "dd2l9a4vxpy2ni8", "indexes": [], "listRule": "(@request.auth.id != \"\" && @collection.trails.summit_logs.id ?= id && @collection.trails.author ?= @request.auth.id) || (@collection.trails.summit_logs.id ?= id && @collection.trails.public ?= true) ||\n(@collection.trail_share.trail.summit_logs.id ?= id && @collection.trail_share.user ?= @request.auth.id) ||\n(author = @request.auth.id)", "name": "summit_logs", "system": false, "type": "base", "updateRule": "@request.auth.id != \"\" && @collection.trails.summit_logs.id ?= id && (@collection.trails.author ?= @request.auth.id) || (author = @request.auth.id)", "viewRule": "(@request.auth.id != \"\" && @collection.trails.summit_logs.id ?= id && @collection.trails.author ?= @request.auth.id) || (@collection.trails.summit_logs.id ?= id && @collection.trails.public ?= true) || \n(@collection.trail_share.trail.summit_logs.id ?= id && @collection.trail_share.user ?= @request.auth.id) ||\n(author = @request.auth.id)" }, { "createRule": "@request.auth.id != \"\" && (@request.body.author = @request.auth.id)", "deleteRule": "author = @request.auth.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" }, { "autogeneratePattern": "", "hidden": false, "id": "0goi1ipa", "max": 0, "min": 1, "name": "name", "pattern": "", "presentable": false, "primaryKey": false, "required": true, "system": false, "type": "text" }, { "autogeneratePattern": "", "hidden": false, "id": "3v3pwnqn", "max": 0, "min": 0, "name": "description", "pattern": "", "presentable": false, "primaryKey": false, "required": false, "system": false, "type": "text" }, { "hidden": false, "id": "decatj0h", "maxSelect": 1, "maxSize": 5242880, "mimeTypes": [ "image/png", "image/vnd.mozilla.apng", "image/jpeg", "image/webp", "image/svg+xml" ], "name": "avatar", "presentable": false, "protected": false, "required": false, "system": false, "thumbs": null, "type": "file" }, { "cascadeDelete": false, "collectionId": "e864strfxo14pm4", "hidden": false, "id": "jqtcrcnq", "maxSelect": 2147483647, "minSelect": 0, "name": "trails", "presentable": false, "required": false, "system": false, "type": "relation" }, { "cascadeDelete": true, "collectionId": "_pb_users_auth_", "hidden": false, "id": "kwm6zdet", "maxSelect": 1, "minSelect": 0, "name": "author", "presentable": false, "required": true, "system": false, "type": "relation" }, { "hidden": false, "id": "rolk3q3j", "name": "public", "presentable": false, "required": false, "system": false, "type": "bool" }, { "hidden": false, "id": "autodate2990389176", "name": "created", "onCreate": true, "onUpdate": false, "presentable": false, "system": false, "type": "autodate" }, { "hidden": false, "id": "autodate3332085495", "name": "updated", "onCreate": true, "onUpdate": true, "presentable": false, "system": false, "type": "autodate" } ], "id": "r6gu2ajyidy1x69", "indexes": [], "listRule": "author = @request.auth.id || public = true || (@request.auth.id != \"\" && list_share_via_list.user ?= @request.auth.id)", "name": "lists", "system": false, "type": "base", "updateRule": "author = @request.auth.id || (@request.auth.id != \"\" && list_share_via_list.list = id && list_share_via_list.user ?= @request.auth.id && list_share_via_list.permission = \"edit\")", "viewRule": "author = @request.auth.id || public = true || (@request.auth.id != \"\" && list_share_via_list.user ?= @request.auth.id)" }, { "createRule": null, "deleteRule": null, "fields": [ { "autogeneratePattern": "", "hidden": false, "id": "text3208210256", "max": 0, "min": 0, "name": "id", "pattern": "^[a-z0-9]+$", "presentable": false, "primaryKey": true, "required": true, "system": true, "type": "text" }, { "hidden": false, "id": "json1840770130", "maxSize": 1, "name": "max_distance", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "json2471616556", "maxSize": 1, "name": "max_elevation_gain", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "json2649087013", "maxSize": 1, "name": "max_elevation_loss", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "json4152030739", "maxSize": 1, "name": "max_duration", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "json4257545400", "maxSize": 1, "name": "min_distance", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "json3237476552", "maxSize": 1, "name": "min_elevation_gain", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "json3460547777", "maxSize": 1, "name": "min_elevation_loss", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "json1728702201", "maxSize": 1, "name": "min_duration", "presentable": false, "required": false, "system": false, "type": "json" } ], "id": "4wbv9tz5zjdrjh1", "indexes": [], "listRule": null, "name": "trails_filter", "system": false, "type": "view", "updateRule": null, "viewQuery": "SELECT users.id, COALESCE(printf(\"%.2f\", MAX(trails.distance)), 0) AS max_distance,\n COALESCE(printf(\"%.2f\", MAX(trails.elevation_gain)), 0) AS max_elevation_gain, \n COALESCE(printf(\"%.2f\", MAX(trails.elevation_loss)), 0) AS max_elevation_loss, \n COALESCE(printf(\"%.2f\", MAX(trails.duration)), 0) AS max_duration, \n COALESCE(printf(\"%.2f\", MIN(trails.distance)), 0) AS min_distance, \n COALESCE(printf(\"%.2f\", MIN(trails.elevation_gain)), 0) AS min_elevation_gain, \n COALESCE(printf(\"%.2f\", MIN(trails.elevation_loss)), 0) AS min_elevation_loss, \n COALESCE(printf(\"%.2f\", MIN(trails.duration)), 0) AS min_duration \nFROM users \n LEFT JOIN trails ON \n users.id = trails.author OR \n trails.public = 1 OR \n EXISTS (\n SELECT 1 \n FROM trail_share \n WHERE trail_share.trail = trails.id \n AND trail_share.user = users.id\n ) GROUP BY users.id;", "viewRule": "@request.auth.id = id" }, { "createRule": "@request.auth.id != \"\" && (trail.author = @request.auth.id || trail.public = true || trail.trail_share_via_trail.user ?= @request.auth.id)", "deleteRule": "@request.auth.id = author", "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" }, { "autogeneratePattern": "", "hidden": false, "id": "0udwb0kl", "max": 0, "min": 0, "name": "text", "pattern": "", "presentable": false, "primaryKey": false, "required": false, "system": false, "type": "text" }, { "hidden": false, "id": "fhgxdiam", "max": null, "min": null, "name": "rating", "onlyInt": false, "presentable": false, "required": false, "system": false, "type": "number" }, { "cascadeDelete": true, "collectionId": "_pb_users_auth_", "hidden": false, "id": "7lwo1mxx", "maxSelect": 1, "minSelect": 0, "name": "author", "presentable": false, "required": false, "system": false, "type": "relation" }, { "cascadeDelete": true, "collectionId": "e864strfxo14pm4", "hidden": false, "id": "snrlpxar", "maxSelect": 1, "minSelect": 0, "name": "trail", "presentable": false, "required": false, "system": false, "type": "relation" }, { "hidden": false, "id": "autodate2990389176", "name": "created", "onCreate": true, "onUpdate": false, "presentable": false, "system": false, "type": "autodate" }, { "hidden": false, "id": "autodate3332085495", "name": "updated", "onCreate": true, "onUpdate": true, "presentable": false, "system": false, "type": "autodate" } ], "id": "lf06qip3f4d11yk", "indexes": [], "listRule": "((@request.auth.id != \"\" && trail.author = @request.auth.id) || trail.public = true) || author = @request.auth.id || trail.trail_share_via_trail.user ?= @request.auth.id", "name": "comments", "system": false, "type": "base", "updateRule": "@request.auth.id = author", "viewRule": "((@request.auth.id != \"\" && trail.author = @request.auth.id) || trail.public = true) || author = @request.auth.id || trail.trail_share_via_trail.user ?= @request.auth.id" }, { "createRule": "", "deleteRule": null, "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" }, { "hidden": false, "id": "0sepzvkh", "maxSelect": 1, "name": "language", "presentable": false, "required": false, "system": false, "type": "select", "values": [ "en", "de", "fr", "hu", "it", "nl", "pl", "pt", "zh", "es" ] }, { "autogeneratePattern": "", "hidden": false, "id": "pd2cq8sq", "max": 10000, "min": 0, "name": "bio", "pattern": "", "presentable": false, "primaryKey": false, "required": false, "system": false, "type": "text" }, { "hidden": false, "id": "zwg1jl0d", "maxSelect": 1, "name": "unit", "presentable": false, "required": false, "system": false, "type": "select", "values": [ "metric", "imperial" ] }, { "hidden": false, "id": "jo1zcsbu", "maxSelect": 1, "name": "mapFocus", "presentable": false, "required": false, "system": false, "type": "select", "values": [ "trails", "location" ] }, { "hidden": false, "id": "ufhepjxo", "maxSize": 2000000, "name": "location", "presentable": false, "required": false, "system": false, "type": "json" }, { "cascadeDelete": false, "collectionId": "kjxvi8asj2igqwf", "hidden": false, "id": "owlyzl1x", "maxSelect": 1, "minSelect": 0, "name": "category", "presentable": false, "required": false, "system": false, "type": "relation" }, { "hidden": false, "id": "xdbayoqg", "maxSize": 2000000, "name": "tilesets", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "unsh0qsp", "maxSize": 2000000, "name": "terrain", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "slurqh9q", "maxSize": 2000000, "name": "privacy", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "sbwmk0q2", "maxSize": 2000000, "name": "notifications", "presentable": false, "required": false, "system": false, "type": "json" }, { "cascadeDelete": true, "collectionId": "_pb_users_auth_", "hidden": false, "id": "5uip7a4p", "maxSelect": 1, "minSelect": 0, "name": "user", "presentable": false, "required": false, "system": false, "type": "relation" }, { "hidden": false, "id": "autodate2990389176", "name": "created", "onCreate": true, "onUpdate": false, "presentable": false, "system": false, "type": "autodate" }, { "hidden": false, "id": "autodate3332085495", "name": "updated", "onCreate": true, "onUpdate": true, "presentable": false, "system": false, "type": "autodate" } ], "id": "uavt73rsqcn1n13", "indexes": [], "listRule": "user = @request.auth.id", "name": "settings", "system": false, "type": "base", "updateRule": "user = @request.auth.id", "viewRule": "user = @request.auth.id" }, { "createRule": null, "deleteRule": null, "fields": [ { "autogeneratePattern": "", "hidden": false, "id": "text3208210256", "max": 0, "min": 0, "name": "id", "pattern": "^[a-z0-9]+$", "presentable": false, "primaryKey": true, "required": true, "system": true, "type": "text" }, { "hidden": false, "id": "json2217363417", "maxSize": 1, "name": "max_lat", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "json3888878381", "maxSize": 1, "name": "max_lon", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "json2279188374", "maxSize": 1, "name": "min_lat", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "json3828904802", "maxSize": 1, "name": "min_lon", "presentable": false, "required": false, "system": false, "type": "json" } ], "id": "urytyc428mwlbqq", "indexes": [], "listRule": null, "name": "trails_bounding_box", "system": false, "type": "view", "updateRule": null, "viewQuery": "SELECT \n users.id, \n COALESCE(MAX(trails.lat), 0) AS max_lat, \n COALESCE(MAX(trails.lon), 0) AS max_lon, \n COALESCE(MIN(trails.lat), 0) AS min_lat, \n COALESCE(MIN(trails.lon), 0) AS min_lon \nFROM users \nLEFT JOIN trails \n ON users.id = trails.author \n OR trails.public = TRUE \n OR EXISTS (\n SELECT 1 \n FROM trail_share \n WHERE trail_share.trail = trails.id \n AND trail_share.user = users.id\n ) \nGROUP BY users.id;", "viewRule": "@request.auth.id = id" }, { "createRule": null, "deleteRule": null, "fields": [ { "autogeneratePattern": "", "hidden": false, "id": "text3208210256", "max": 0, "min": 0, "name": "id", "pattern": "^[a-z0-9]+$", "presentable": false, "primaryKey": true, "required": true, "system": true, "type": "text" }, { "autogeneratePattern": "users[0-9]{6}", "hidden": false, "id": "_clone_XKek", "max": 150, "min": 3, "name": "username", "pattern": "^[\\w][\\w\\.\\-]*$", "presentable": false, "primaryKey": false, "required": true, "system": false, "type": "text" }, { "hidden": false, "id": "_clone_zJ4t", "maxSelect": 1, "maxSize": 5242880, "mimeTypes": [ "image/jpeg", "image/png", "image/svg+xml", "image/gif", "image/webp" ], "name": "avatar", "presentable": false, "protected": false, "required": false, "system": false, "thumbs": null, "type": "file" }, { "hidden": false, "id": "json3709889147", "maxSize": 1, "name": "bio", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "_clone_i4BC", "name": "created", "onCreate": true, "onUpdate": false, "presentable": false, "system": false, "type": "autodate" }, { "hidden": false, "id": "bool3523658193", "name": "private", "presentable": false, "required": false, "system": false, "type": "bool" } ], "id": "xku110v5a5xbufa", "indexes": [], "listRule": "", "name": "users_anonymous", "system": false, "type": "view", "updateRule": null, "viewQuery": "SELECT users.id, username, avatar, bio, users.created, CAST(COALESCE(json_extract(privacy, '$.account') = 'private', false) as BOOL) as private FROM users LEFT JOIN settings ON settings.user = users.id", "viewRule": "" }, { "createRule": "trail.author = @request.auth.id", "deleteRule": "trail.author = @request.auth.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": "e864strfxo14pm4", "hidden": false, "id": "eskurfx6", "maxSelect": 1, "minSelect": 0, "name": "trail", "presentable": false, "required": true, "system": false, "type": "relation" }, { "cascadeDelete": true, "collectionId": "_pb_users_auth_", "hidden": false, "id": "yyzimwee", "maxSelect": 1, "minSelect": 0, "name": "user", "presentable": false, "required": true, "system": false, "type": "relation" }, { "hidden": false, "id": "zr7aaqxl", "maxSelect": 1, "name": "permission", "presentable": false, "required": true, "system": false, "type": "select", "values": [ "view", "edit" ] }, { "hidden": false, "id": "autodate2990389176", "name": "created", "onCreate": true, "onUpdate": false, "presentable": false, "system": false, "type": "autodate" }, { "hidden": false, "id": "autodate3332085495", "name": "updated", "onCreate": true, "onUpdate": true, "presentable": false, "system": false, "type": "autodate" } ], "id": "1mns8mlal6uf9ku", "indexes": [], "listRule": "trail.author = @request.auth.id || user = @request.auth.id", "name": "trail_share", "system": false, "type": "base", "updateRule": "trail.author = @request.auth.id", "viewRule": "trail.author = @request.auth.id || user = @request.auth.id" }, { "authAlert": { "emailTemplate": { "body": "

Hello,

\n

We noticed a login to your {APP_NAME} account from a new location.

\n

If this was you, you may disregard this email.

\n

If this wasn't you, you should immediately change your {APP_NAME} account password to revoke access from all other locations.

\n

\n Thanks,
\n {APP_NAME} team\n

", "subject": "Login from a new location" }, "enabled": true }, "authRule": "", "authToken": { "duration": 1209600 }, "confirmEmailChangeTemplate": { "body": "

Hello,

\n

Click on the button below to confirm your new email address.

\n

\n Confirm new email\n

\n

If you didn't ask to change your email address, you can ignore this email.

\n

\n Thanks,
\n {APP_NAME} team\n

", "subject": "Confirm your {APP_NAME} new email address" }, "createRule": "", "deleteRule": "id = @request.auth.id", "emailChangeToken": { "duration": 1800 }, "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" }, { "cost": 10, "hidden": true, "id": "password901924565", "max": 0, "min": 8, "name": "password", "pattern": "", "presentable": false, "required": true, "system": true, "type": "password" }, { "autogeneratePattern": "[a-zA-Z0-9_]{50}", "hidden": true, "id": "text2504183744", "max": 60, "min": 30, "name": "tokenKey", "pattern": "", "presentable": false, "primaryKey": false, "required": true, "system": true, "type": "text" }, { "exceptDomains": null, "hidden": false, "id": "email3885137012", "name": "email", "onlyDomains": null, "presentable": false, "required": false, "system": true, "type": "email" }, { "hidden": false, "id": "bool1547992806", "name": "emailVisibility", "presentable": false, "required": false, "system": true, "type": "bool" }, { "hidden": false, "id": "bool256245529", "name": "verified", "presentable": false, "required": false, "system": true, "type": "bool" }, { "autogeneratePattern": "users[0-9]{6}", "hidden": false, "id": "text4166911607", "max": 150, "min": 3, "name": "username", "pattern": "^[\\w][\\w\\.\\-]*$", "presentable": false, "primaryKey": false, "required": true, "system": false, "type": "text" }, { "autogeneratePattern": "", "hidden": false, "id": "dlzhxcn2", "max": 0, "min": 0, "name": "token", "pattern": "", "presentable": false, "primaryKey": false, "required": false, "system": false, "type": "text" }, { "hidden": false, "id": "users_avatar", "maxSelect": 1, "maxSize": 5242880, "mimeTypes": [ "image/jpeg", "image/png", "image/svg+xml", "image/gif", "image/webp" ], "name": "avatar", "presentable": false, "protected": false, "required": false, "system": false, "thumbs": null, "type": "file" }, { "hidden": false, "id": "autodate2990389176", "name": "created", "onCreate": true, "onUpdate": false, "presentable": false, "system": false, "type": "autodate" }, { "hidden": false, "id": "autodate3332085495", "name": "updated", "onCreate": true, "onUpdate": true, "presentable": false, "system": false, "type": "autodate" } ], "fileToken": { "duration": 120 }, "id": "_pb_users_auth_", "indexes": [ "CREATE UNIQUE INDEX ` + "`" + `__pb_users_auth__username_idx` + "`" + ` ON ` + "`" + `users` + "`" + ` (username COLLATE NOCASE)", "CREATE UNIQUE INDEX ` + "`" + `__pb_users_auth__email_idx` + "`" + ` ON ` + "`" + `users` + "`" + ` (` + "`" + `email` + "`" + `) WHERE ` + "`" + `email` + "`" + ` != ''", "CREATE UNIQUE INDEX ` + "`" + `__pb_users_auth__tokenKey_idx` + "`" + ` ON ` + "`" + `users` + "`" + ` (` + "`" + `tokenKey` + "`" + `)" ], "listRule": "id = @request.auth.id", "manageRule": null, "mfa": { "duration": 1800, "enabled": false, "rule": "" }, "name": "users", "oauth2": { "enabled": false, "mappedFields": { "avatarURL": "", "id": "", "name": "", "username": "username" } }, "otp": { "duration": 180, "emailTemplate": { "body": "

Hello,

\n

Your one-time password is: {OTP}

\n

If you didn't ask for the one-time password, you can ignore this email.

\n

\n Thanks,
\n {APP_NAME} team\n

", "subject": "OTP for {APP_NAME}" }, "enabled": false, "length": 8 }, "passwordAuth": { "enabled": true, "identityFields": [ "email", "username" ] }, "passwordResetToken": { "duration": 1800 }, "resetPasswordTemplate": { "body": "

Hello,

\n

Click on the button below to reset your password.

\n

\n Reset password\n

\n

If you didn't ask to reset your password, you can ignore this email.

\n

\n Thanks,
\n {APP_NAME} team\n

", "subject": "Reset your {APP_NAME} password" }, "system": false, "type": "auth", "updateRule": "id = @request.auth.id", "verificationTemplate": { "body": "

Hello,

\n

Thank you for joining us at {APP_NAME}.

\n

Click on the button below to verify your email address.

\n

\n Verify\n

\n

\n Thanks,
\n {APP_NAME} team\n

", "subject": "Verify your {APP_NAME} email" }, "verificationToken": { "duration": 604800 }, "viewRule": "id = @request.auth.id" }, { "createRule": "list.author = @request.auth.id", "deleteRule": "list.author = @request.auth.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": "r6gu2ajyidy1x69", "hidden": false, "id": "luqrtipy", "maxSelect": 1, "minSelect": 0, "name": "list", "presentable": false, "required": true, "system": false, "type": "relation" }, { "cascadeDelete": true, "collectionId": "_pb_users_auth_", "hidden": false, "id": "mix12kkh", "maxSelect": 1, "minSelect": 0, "name": "user", "presentable": false, "required": true, "system": false, "type": "relation" }, { "hidden": false, "id": "n9rjdx5g", "maxSelect": 1, "name": "permission", "presentable": false, "required": true, "system": false, "type": "select", "values": [ "view", "edit" ] }, { "hidden": false, "id": "autodate2990389176", "name": "created", "onCreate": true, "onUpdate": false, "presentable": false, "system": false, "type": "autodate" }, { "hidden": false, "id": "autodate3332085495", "name": "updated", "onCreate": true, "onUpdate": true, "presentable": false, "system": false, "type": "autodate" } ], "id": "1kot7t9na3hi0gl", "indexes": [], "listRule": "list.author = @request.auth.id || user = @request.auth.id", "name": "list_share", "system": false, "type": "base", "updateRule": "list.author = @request.auth.id", "viewRule": "list.author = @request.auth.id || user = @request.auth.id" }, { "createRule": null, "deleteRule": null, "fields": [ { "autogeneratePattern": "", "hidden": false, "id": "text3208210256", "max": 0, "min": 0, "name": "id", "pattern": "^[a-z0-9]+$", "presentable": false, "primaryKey": true, "required": true, "system": true, "type": "text" }, { "hidden": false, "id": "json2310347867", "maxSize": 1, "name": "trail_id", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "json2862495610", "maxSize": 1, "name": "date", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "json1579384326", "maxSize": 1, "name": "name", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "json1843675174", "maxSize": 1, "name": "description", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "json3275261007", "maxSize": 1, "name": "gpx", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "json3182418120", "maxSize": 1, "name": "author", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "json142008537", "maxSize": 1, "name": "photos", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "json479369857", "maxSize": 1, "name": "distance", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "json2254405824", "maxSize": 1, "name": "duration", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "json3015100073", "maxSize": 1, "name": "elevation_gain", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "json3171089056", "maxSize": 1, "name": "elevation_loss", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "json2990389176", "maxSize": 1, "name": "created", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "json2363381545", "maxSize": 1, "name": "type", "presentable": false, "required": false, "system": false, "type": "json" } ], "id": "t9lphichi5xwyeu", "indexes": [], "listRule": "(\n @request.auth.id = author || \n (@collection.users_anonymous.id ?= author && @collection.users_anonymous.private ?= false)\n)\n&&\n(\n @collection.trails.id ?= trail_id && \n (\n @collection.trails.author ?= @request.auth.id ||\n @collection.trails.public ?= true || \n (@request.auth.id != \"\" && @collection.trails.trail_share_via_trail.user ?= @request.auth.id)\n )\n)", "name": "activities", "system": false, "type": "view", "updateRule": null, "viewQuery": "SELECT id,trail_id,date,name,description,gpx,author,photos,distance,duration,elevation_gain,elevation_loss,created,type \nFROM (\n SELECT summit_logs.id,trails.id as trail_id,summit_logs.date,trails.name,text as description,summit_logs.gpx,summit_logs.author,summit_logs.photos,summit_logs.distance,summit_logs.duration,summit_logs.elevation_gain,summit_logs.elevation_loss,summit_logs.created,\"summit_log\" as type \n FROM summit_logs\n JOIN trails ON summit_logs.id IN (\n SELECT value\n FROM json_each(trails.summit_logs)\n )\n UNION\n SELECT id,id as trail_id,date,name,description,gpx,author,photos,distance,duration,elevation_gain,elevation_loss,created,\"trail\" as type \n FROM trails\n)\nORDER BY created DESC", "viewRule": "(\n @request.auth.id = author || \n (@collection.users_anonymous.id ?= author && @collection.users_anonymous.private ?= false)\n)\n&&\n(\n @collection.trails.id ?= trail_id && \n (\n @collection.trails.author ?= @request.auth.id ||\n @collection.trails.public ?= true || \n (@request.auth.id != \"\" && @collection.trails.trail_share_via_trail.user ?= @request.auth.id)\n )\n)" }, { "createRule": "@request.auth.id = follower.id && (@collection.users_anonymous.id ?= followee && @collection.users_anonymous.private ?= false)", "deleteRule": "@request.auth.id = follower.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": "_pb_users_auth_", "hidden": false, "id": "in1traur", "maxSelect": 1, "minSelect": 0, "name": "follower", "presentable": false, "required": false, "system": false, "type": "relation" }, { "cascadeDelete": true, "collectionId": "_pb_users_auth_", "hidden": false, "id": "wxwomfd5", "maxSelect": 1, "minSelect": 0, "name": "followee", "presentable": false, "required": false, "system": false, "type": "relation" }, { "hidden": false, "id": "autodate2990389176", "name": "created", "onCreate": true, "onUpdate": false, "presentable": false, "system": false, "type": "autodate" }, { "hidden": false, "id": "autodate3332085495", "name": "updated", "onCreate": true, "onUpdate": true, "presentable": false, "system": false, "type": "autodate" } ], "id": "8obn1ukumze565i", "indexes": [], "listRule": "@request.auth.id = follower.id || @request.auth.id = followee.id", "name": "follows", "system": false, "type": "base", "updateRule": "@request.auth.id = follower.id", "viewRule": "@request.auth.id = follower.id || @request.auth.id = followee.id" }, { "createRule": null, "deleteRule": null, "fields": [ { "autogeneratePattern": "", "hidden": false, "id": "text3208210256", "max": 0, "min": 0, "name": "id", "pattern": "^[a-z0-9]+$", "presentable": false, "primaryKey": true, "required": true, "system": true, "type": "text" }, { "hidden": false, "id": "json2215181735", "maxSize": 1, "name": "followers", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "json1908379107", "maxSize": 1, "name": "following", "presentable": false, "required": false, "system": false, "type": "json" } ], "id": "j6w72f0kb5ivd7x", "indexes": [], "listRule": "@request.auth.id = id || (@collection.users_anonymous.id ?= id && @collection.users_anonymous.private ?= false)", "name": "follow_counts", "system": false, "type": "view", "updateRule": null, "viewQuery": "SELECT \n users.id,\n COALESCE(followers.count, 0) AS followers,\n COALESCE(following.count, 0) AS following\nFROM users\nLEFT JOIN (\n SELECT followee AS user_id, COUNT(*) AS count\n FROM follows\n GROUP BY followee\n) AS followers ON users.id = followers.user_id\nLEFT JOIN (\n SELECT follower AS user_id, COUNT(*) AS count\n FROM follows\n GROUP BY follower\n) AS following ON users.id = following.user_id", "viewRule": "@request.auth.id = id || (@collection.users_anonymous.id ?= id && @collection.users_anonymous.private ?= false)" }, { "createRule": null, "deleteRule": null, "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" }, { "hidden": false, "id": "b57prsbu", "maxSelect": 1, "name": "type", "presentable": false, "required": true, "system": false, "type": "select", "values": [ "trail_create", "list_create", "new_follower", "trail_comment", "trail_share", "list_share" ] }, { "hidden": false, "id": "1i2ycgle", "maxSize": 2000000, "name": "metadata", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "pyimxu85", "name": "seen", "presentable": false, "required": false, "system": false, "type": "bool" }, { "cascadeDelete": true, "collectionId": "_pb_users_auth_", "hidden": false, "id": "tmghd4vo", "maxSelect": 1, "minSelect": 0, "name": "recipient", "presentable": false, "required": true, "system": false, "type": "relation" }, { "cascadeDelete": true, "collectionId": "_pb_users_auth_", "hidden": false, "id": "exqo1whj", "maxSelect": 1, "minSelect": 0, "name": "author", "presentable": false, "required": true, "system": false, "type": "relation" }, { "hidden": false, "id": "autodate2990389176", "name": "created", "onCreate": true, "onUpdate": false, "presentable": false, "system": false, "type": "autodate" }, { "hidden": false, "id": "autodate3332085495", "name": "updated", "onCreate": true, "onUpdate": true, "presentable": false, "system": false, "type": "autodate" } ], "id": "khrcci2uqknny8h", "indexes": [], "listRule": "@request.auth.id = recipient", "name": "notifications", "system": false, "type": "base", "updateRule": "@request.auth.id = recipient && (@request.body.type = null||@request.body.type = type) && (@request.body.metadata = null||@request.body.metadata = metadata) && (@request.body.recipient = null||@request.body.recipient = recipient) && (@request.body.author = null||@request.body.author = author) && @request.body.seen = true", "viewRule": "@request.auth.id = recipient" }, { "createRule": "@request.auth.id = user.id", "deleteRule": "@request.auth.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" }, { "hidden": false, "id": "yhqqdtrf", "maxSize": 2000000, "name": "strava", "presentable": false, "required": false, "system": false, "type": "json" }, { "hidden": false, "id": "6s0oxqgp", "maxSize": 2000000, "name": "komoot", "presentable": false, "required": false, "system": false, "type": "json" }, { "cascadeDelete": true, "collectionId": "_pb_users_auth_", "hidden": false, "id": "bmktyzqz", "maxSelect": 1, "minSelect": 0, "name": "user", "presentable": false, "required": true, "system": false, "type": "relation" }, { "hidden": false, "id": "autodate2990389176", "name": "created", "onCreate": true, "onUpdate": false, "presentable": false, "system": false, "type": "autodate" }, { "hidden": false, "id": "autodate3332085495", "name": "updated", "onCreate": true, "onUpdate": true, "presentable": false, "system": false, "type": "autodate" } ], "id": "iz4sezoehde64wp", "indexes": [ "CREATE UNIQUE INDEX ` + "`" + `idx_qMhw0Em` + "`" + ` ON ` + "`" + `integrations` + "`" + ` (` + "`" + `user` + "`" + `)" ], "listRule": "@request.auth.id = user.id", "name": "integrations", "system": false, "type": "base", "updateRule": "@request.auth.id = user.id", "viewRule": "@request.auth.id = user.id" }, { "authAlert": { "emailTemplate": { "body": "

Hello,

\n

We noticed a login to your {APP_NAME} account from a new location.

\n

If this was you, you may disregard this email.

\n

If this wasn't you, you should immediately change your {APP_NAME} account password to revoke access from all other locations.

\n

\n Thanks,
\n {APP_NAME} team\n

", "subject": "Login from a new location" }, "enabled": true }, "authRule": "", "authToken": { "duration": 1209600 }, "confirmEmailChangeTemplate": { "body": "

Hello,

\n

Click on the button below to confirm your new email address.

\n

\n Confirm new email\n

\n

If you didn't ask to change your email address, you can ignore this email.

\n

\n Thanks,
\n {APP_NAME} team\n

", "subject": "Confirm your {APP_NAME} new email address" }, "createRule": null, "deleteRule": null, "emailChangeToken": { "duration": 1800 }, "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" }, { "cost": 0, "hidden": true, "id": "password901924565", "max": 0, "min": 8, "name": "password", "pattern": "", "presentable": false, "required": true, "system": true, "type": "password" }, { "autogeneratePattern": "[a-zA-Z0-9]{50}", "hidden": true, "id": "text2504183744", "max": 60, "min": 30, "name": "tokenKey", "pattern": "", "presentable": false, "primaryKey": false, "required": true, "system": true, "type": "text" }, { "exceptDomains": null, "hidden": false, "id": "email3885137012", "name": "email", "onlyDomains": null, "presentable": false, "required": true, "system": true, "type": "email" }, { "hidden": false, "id": "bool1547992806", "name": "emailVisibility", "presentable": false, "required": false, "system": true, "type": "bool" }, { "hidden": false, "id": "bool256245529", "name": "verified", "presentable": false, "required": false, "system": true, "type": "bool" }, { "hidden": false, "id": "autodate2990389176", "name": "created", "onCreate": true, "onUpdate": false, "presentable": false, "system": true, "type": "autodate" }, { "hidden": false, "id": "autodate3332085495", "name": "updated", "onCreate": true, "onUpdate": true, "presentable": false, "system": true, "type": "autodate" } ], "fileToken": { "duration": 120 }, "id": "pbc_3142635823", "indexes": [ "CREATE UNIQUE INDEX ` + "`" + `idx_tokenKey_pbc_3142635823` + "`" + ` ON ` + "`" + `_superusers` + "`" + ` (` + "`" + `tokenKey` + "`" + `)", "CREATE UNIQUE INDEX ` + "`" + `idx_email_pbc_3142635823` + "`" + ` ON ` + "`" + `_superusers` + "`" + ` (` + "`" + `email` + "`" + `) WHERE ` + "`" + `email` + "`" + ` != ''" ], "listRule": null, "manageRule": null, "mfa": { "duration": 1800, "enabled": false, "rule": "" }, "name": "_superusers", "oauth2": { "enabled": false, "mappedFields": { "avatarURL": "", "id": "", "name": "", "username": "" } }, "otp": { "duration": 180, "emailTemplate": { "body": "

Hello,

\n

Your one-time password is: {OTP}

\n

If you didn't ask for the one-time password, you can ignore this email.

\n

\n Thanks,
\n {APP_NAME} team\n

", "subject": "OTP for {APP_NAME}" }, "enabled": false, "length": 8 }, "passwordAuth": { "enabled": true, "identityFields": [ "email" ] }, "passwordResetToken": { "duration": 1800 }, "resetPasswordTemplate": { "body": "

Hello,

\n

Click on the button below to reset your password.

\n

\n Reset password\n

\n

If you didn't ask to reset your password, you can ignore this email.

\n

\n Thanks,
\n {APP_NAME} team\n

", "subject": "Reset your {APP_NAME} password" }, "system": true, "type": "auth", "updateRule": null, "verificationTemplate": { "body": "

Hello,

\n

Thank you for joining us at {APP_NAME}.

\n

Click on the button below to verify your email address.

\n

\n Verify\n

\n

\n Thanks,
\n {APP_NAME} team\n

", "subject": "Verify your {APP_NAME} email" }, "verificationToken": { "duration": 259200 }, "viewRule": null }, { "createRule": null, "deleteRule": "@request.auth.id != '' && recordRef = @request.auth.id && collectionRef = @request.auth.collectionId", "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" }, { "autogeneratePattern": "", "hidden": false, "id": "text455797646", "max": 0, "min": 0, "name": "collectionRef", "pattern": "", "presentable": false, "primaryKey": false, "required": true, "system": true, "type": "text" }, { "autogeneratePattern": "", "hidden": false, "id": "text127846527", "max": 0, "min": 0, "name": "recordRef", "pattern": "", "presentable": false, "primaryKey": false, "required": true, "system": true, "type": "text" }, { "autogeneratePattern": "", "hidden": false, "id": "text2462348188", "max": 0, "min": 0, "name": "provider", "pattern": "", "presentable": false, "primaryKey": false, "required": true, "system": true, "type": "text" }, { "autogeneratePattern": "", "hidden": false, "id": "text1044722854", "max": 0, "min": 0, "name": "providerId", "pattern": "", "presentable": false, "primaryKey": false, "required": true, "system": true, "type": "text" }, { "hidden": false, "id": "autodate2990389176", "name": "created", "onCreate": true, "onUpdate": false, "presentable": false, "system": true, "type": "autodate" }, { "hidden": false, "id": "autodate3332085495", "name": "updated", "onCreate": true, "onUpdate": true, "presentable": false, "system": true, "type": "autodate" } ], "id": "pbc_2281828961", "indexes": [ "CREATE UNIQUE INDEX ` + "`" + `idx_externalAuths_record_provider` + "`" + ` ON ` + "`" + `_externalAuths` + "`" + ` (collectionRef, recordRef, provider)", "CREATE UNIQUE INDEX ` + "`" + `idx_externalAuths_collection_provider` + "`" + ` ON ` + "`" + `_externalAuths` + "`" + ` (collectionRef, provider, providerId)" ], "listRule": "@request.auth.id != '' && recordRef = @request.auth.id && collectionRef = @request.auth.collectionId", "name": "_externalAuths", "system": true, "type": "base", "updateRule": null, "viewRule": "@request.auth.id != '' && recordRef = @request.auth.id && collectionRef = @request.auth.collectionId" }, { "createRule": null, "deleteRule": null, "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" }, { "autogeneratePattern": "", "hidden": false, "id": "text455797646", "max": 0, "min": 0, "name": "collectionRef", "pattern": "", "presentable": false, "primaryKey": false, "required": true, "system": true, "type": "text" }, { "autogeneratePattern": "", "hidden": false, "id": "text127846527", "max": 0, "min": 0, "name": "recordRef", "pattern": "", "presentable": false, "primaryKey": false, "required": true, "system": true, "type": "text" }, { "autogeneratePattern": "", "hidden": false, "id": "text1582905952", "max": 0, "min": 0, "name": "method", "pattern": "", "presentable": false, "primaryKey": false, "required": true, "system": true, "type": "text" }, { "hidden": false, "id": "autodate2990389176", "name": "created", "onCreate": true, "onUpdate": false, "presentable": false, "system": true, "type": "autodate" }, { "hidden": false, "id": "autodate3332085495", "name": "updated", "onCreate": true, "onUpdate": true, "presentable": false, "system": true, "type": "autodate" } ], "id": "pbc_2279338944", "indexes": [ "CREATE INDEX ` + "`" + `idx_mfas_collectionRef_recordRef` + "`" + ` ON ` + "`" + `_mfas` + "`" + ` (collectionRef,recordRef)" ], "listRule": "@request.auth.id != '' && recordRef = @request.auth.id && collectionRef = @request.auth.collectionId", "name": "_mfas", "system": true, "type": "base", "updateRule": null, "viewRule": "@request.auth.id != '' && recordRef = @request.auth.id && collectionRef = @request.auth.collectionId" }, { "createRule": null, "deleteRule": null, "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" }, { "autogeneratePattern": "", "hidden": false, "id": "text455797646", "max": 0, "min": 0, "name": "collectionRef", "pattern": "", "presentable": false, "primaryKey": false, "required": true, "system": true, "type": "text" }, { "autogeneratePattern": "", "hidden": false, "id": "text127846527", "max": 0, "min": 0, "name": "recordRef", "pattern": "", "presentable": false, "primaryKey": false, "required": true, "system": true, "type": "text" }, { "cost": 8, "hidden": true, "id": "password901924565", "max": 0, "min": 0, "name": "password", "pattern": "", "presentable": false, "required": true, "system": true, "type": "password" }, { "autogeneratePattern": "", "hidden": true, "id": "text3866985172", "max": 0, "min": 0, "name": "sentTo", "pattern": "", "presentable": false, "primaryKey": false, "required": false, "system": true, "type": "text" }, { "hidden": false, "id": "autodate2990389176", "name": "created", "onCreate": true, "onUpdate": false, "presentable": false, "system": true, "type": "autodate" }, { "hidden": false, "id": "autodate3332085495", "name": "updated", "onCreate": true, "onUpdate": true, "presentable": false, "system": true, "type": "autodate" } ], "id": "pbc_1638494021", "indexes": [ "CREATE INDEX ` + "`" + `idx_otps_collectionRef_recordRef` + "`" + ` ON ` + "`" + `_otps` + "`" + ` (collectionRef, recordRef)" ], "listRule": "@request.auth.id != '' && recordRef = @request.auth.id && collectionRef = @request.auth.collectionId", "name": "_otps", "system": true, "type": "base", "updateRule": null, "viewRule": "@request.auth.id != '' && recordRef = @request.auth.id && collectionRef = @request.auth.collectionId" }, { "createRule": null, "deleteRule": "@request.auth.id != '' && recordRef = @request.auth.id && collectionRef = @request.auth.collectionId", "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" }, { "autogeneratePattern": "", "hidden": false, "id": "text455797646", "max": 0, "min": 0, "name": "collectionRef", "pattern": "", "presentable": false, "primaryKey": false, "required": true, "system": true, "type": "text" }, { "autogeneratePattern": "", "hidden": false, "id": "text127846527", "max": 0, "min": 0, "name": "recordRef", "pattern": "", "presentable": false, "primaryKey": false, "required": true, "system": true, "type": "text" }, { "autogeneratePattern": "", "hidden": false, "id": "text4228609354", "max": 0, "min": 0, "name": "fingerprint", "pattern": "", "presentable": false, "primaryKey": false, "required": true, "system": true, "type": "text" }, { "hidden": false, "id": "autodate2990389176", "name": "created", "onCreate": true, "onUpdate": false, "presentable": false, "system": true, "type": "autodate" }, { "hidden": false, "id": "autodate3332085495", "name": "updated", "onCreate": true, "onUpdate": true, "presentable": false, "system": true, "type": "autodate" } ], "id": "pbc_4275539003", "indexes": [ "CREATE UNIQUE INDEX ` + "`" + `idx_authOrigins_unique_pairs` + "`" + ` ON ` + "`" + `_authOrigins` + "`" + ` (collectionRef, recordRef, fingerprint)" ], "listRule": "@request.auth.id != '' && recordRef = @request.auth.id && collectionRef = @request.auth.collectionId", "name": "_authOrigins", "system": true, "type": "base", "updateRule": null, "viewRule": "@request.auth.id != '' && recordRef = @request.auth.id && collectionRef = @request.auth.collectionId" } ]` return app.ImportCollectionsByMarshaledJSON([]byte(jsonData), false) }, func(app core.App) error { return nil }) }