managarten/apps/uload/backend/pb_schema.json
Wuesteon ff80aeec1f refactor: restructure
monorepo with apps/ and services/
  directories
2025-11-26 03:03:24 +01:00

141 lines
2.8 KiB
JSON

{
"collections": [
{
"id": "links",
"name": "links",
"type": "base",
"system": false,
"schema": [
{
"id": "title",
"name": "title",
"type": "text",
"required": true,
"options": {
"min": 1,
"max": 200
}
},
{
"id": "url",
"name": "url",
"type": "url",
"required": true
},
{
"id": "short_code",
"name": "short_code",
"type": "text",
"required": true,
"unique": true,
"options": {
"min": 3,
"max": 50,
"pattern": "^[a-zA-Z0-9_-]+$"
}
},
{
"id": "user",
"name": "user",
"type": "relation",
"required": true,
"options": {
"collectionId": "users",
"cascadeDelete": true,
"maxSelect": 1
}
},
{
"id": "clicks",
"name": "clicks",
"type": "number",
"required": false,
"options": {
"min": 0
}
},
{
"id": "active",
"name": "active",
"type": "bool",
"required": false,
"options": {}
}
],
"listRule": "@request.auth.id = user",
"viewRule": "@request.auth.id = user || active = true",
"createRule": "@request.auth.id != ''",
"updateRule": "@request.auth.id = user",
"deleteRule": "@request.auth.id = user"
},
{
"id": "analytics",
"name": "analytics",
"type": "base",
"system": false,
"schema": [
{
"id": "link",
"name": "link",
"type": "relation",
"required": true,
"options": {
"collectionId": "links",
"cascadeDelete": true,
"maxSelect": 1
}
},
{
"id": "ip",
"name": "ip",
"type": "text",
"required": false
},
{
"id": "user_agent",
"name": "user_agent",
"type": "text",
"required": false
},
{
"id": "referer",
"name": "referer",
"type": "text",
"required": false
},
{
"id": "country",
"name": "country",
"type": "text",
"required": false
},
{
"id": "device",
"name": "device",
"type": "text",
"required": false
}
],
"listRule": "@request.auth.id = link.user",
"viewRule": "@request.auth.id = link.user",
"createRule": "",
"updateRule": null,
"deleteRule": "@request.auth.id = link.user"
}
],
"settings": {
"meta": {
"appName": "uLoad",
"appUrl": "https://your-domain.com",
"hideControls": false,
"senderName": "uLoad",
"senderAddress": "noreply@your-domain.com",
"verificationTemplate": {
"body": "Hello,\n\nPlease verify your email by clicking the link below:\n\n{ACTION_URL}\n\nThanks,\nuLoad Team"
},
"resetPasswordTemplate": {
"body": "Hello,\n\nYou requested to reset your password. Click the link below:\n\n{ACTION_URL}\n\nIf you didn't request this, please ignore this email.\n\nThanks,\nuLoad Team"
}
}
}
}