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,
\nWe noticed a login to your {APP_NAME} account from a new location.
\nIf this was you, you may disregard this email.
\nIf 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
Hello,
\nClick on the button below to confirm your new email address.
\n\n Confirm new email\n
\nIf you didn't ask to change your email address, you can ignore this email.
\n\n Thanks,
\n {APP_NAME} team\n
Hello,
\nYour one-time password is: {OTP}
\nIf you didn't ask for the one-time password, you can ignore this email.
\n\n Thanks,
\n {APP_NAME} team\n
Hello,
\nClick on the button below to reset your password.
\n\n Reset password\n
\nIf you didn't ask to reset your password, you can ignore this email.
\n\n Thanks,
\n {APP_NAME} team\n
Hello,
\nThank you for joining us at {APP_NAME}.
\nClick on the button below to verify your email address.
\n\n Verify\n
\n\n Thanks,
\n {APP_NAME} team\n
Hello,
\nWe noticed a login to your {APP_NAME} account from a new location.
\nIf this was you, you may disregard this email.
\nIf 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
Hello,
\nClick on the button below to confirm your new email address.
\n\n Confirm new email\n
\nIf you didn't ask to change your email address, you can ignore this email.
\n\n Thanks,
\n {APP_NAME} team\n
Hello,
\nYour one-time password is: {OTP}
\nIf you didn't ask for the one-time password, you can ignore this email.
\n\n Thanks,
\n {APP_NAME} team\n
Hello,
\nClick on the button below to reset your password.
\n\n Reset password\n
\nIf you didn't ask to reset your password, you can ignore this email.
\n\n Thanks,
\n {APP_NAME} team\n
Hello,
\nThank you for joining us at {APP_NAME}.
\nClick on the button below to verify your email address.
\n\n Verify\n
\n\n Thanks,
\n {APP_NAME} team\n