mirror of
https://github.com/Dvorinka/beszel.git
synced 2026-06-03 21:02:56 +00:00
854 lines
19 KiB
Go
854 lines
19 KiB
Go
package migrations
|
|
|
|
import (
|
|
"github.com/pocketbase/pocketbase/core"
|
|
m "github.com/pocketbase/pocketbase/migrations"
|
|
)
|
|
|
|
func init() {
|
|
m.Register(func(app core.App) error {
|
|
jsonData := `[
|
|
{
|
|
"id": "monitors_collection_001",
|
|
"name": "monitors",
|
|
"type": "base",
|
|
"listRule": "@request.auth.id != '' && user = @request.auth.id",
|
|
"viewRule": "@request.auth.id != '' && user = @request.auth.id",
|
|
"createRule": "@request.auth.id != '' && user = @request.auth.id && @request.auth.role != 'readonly'",
|
|
"updateRule": "@request.auth.id != '' && user = @request.auth.id && @request.auth.role != 'readonly'",
|
|
"deleteRule": "@request.auth.id != '' && user = @request.auth.id && @request.auth.role != 'readonly'",
|
|
"fields": [
|
|
{
|
|
"id": "id_field",
|
|
"name": "id",
|
|
"type": "text",
|
|
"system": true,
|
|
"required": true,
|
|
"primaryKey": true,
|
|
"autogeneratePattern": "[a-z0-9]{15}",
|
|
"max": 15,
|
|
"min": 15,
|
|
"pattern": "^[a-z0-9]+$"
|
|
},
|
|
{
|
|
"id": "name_field",
|
|
"name": "name",
|
|
"type": "text",
|
|
"required": true
|
|
},
|
|
{
|
|
"id": "type_field",
|
|
"name": "type",
|
|
"type": "select",
|
|
"required": true,
|
|
"values": ["http", "https", "tcp", "ping", "dns", "keyword", "json-query", "docker"]
|
|
},
|
|
{
|
|
"id": "url_field",
|
|
"name": "url",
|
|
"type": "text",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "hostname_field",
|
|
"name": "hostname",
|
|
"type": "text",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "port_field",
|
|
"name": "port",
|
|
"type": "number",
|
|
"required": false,
|
|
"onlyInt": true
|
|
},
|
|
{
|
|
"id": "method_field",
|
|
"name": "method",
|
|
"type": "select",
|
|
"required": false,
|
|
"values": ["GET", "POST", "PUT", "DELETE", "HEAD", "OPTIONS", "PATCH"]
|
|
},
|
|
{
|
|
"id": "headers_field",
|
|
"name": "headers",
|
|
"type": "text",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "body_field",
|
|
"name": "body",
|
|
"type": "text",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "interval_field",
|
|
"name": "interval",
|
|
"type": "number",
|
|
"required": true,
|
|
"onlyInt": true,
|
|
"min": 20,
|
|
"max": 86400
|
|
},
|
|
{
|
|
"id": "timeout_field",
|
|
"name": "timeout",
|
|
"type": "number",
|
|
"required": true,
|
|
"onlyInt": true,
|
|
"min": 1,
|
|
"max": 300
|
|
},
|
|
{
|
|
"id": "retries_field",
|
|
"name": "retries",
|
|
"type": "number",
|
|
"required": true,
|
|
"onlyInt": true,
|
|
"min": 0,
|
|
"max": 10
|
|
},
|
|
{
|
|
"id": "retry_interval_field",
|
|
"name": "retry_interval",
|
|
"type": "number",
|
|
"required": false,
|
|
"onlyInt": true
|
|
},
|
|
{
|
|
"id": "max_redirects_field",
|
|
"name": "max_redirects",
|
|
"type": "number",
|
|
"required": false,
|
|
"onlyInt": true
|
|
},
|
|
{
|
|
"id": "keyword_field",
|
|
"name": "keyword",
|
|
"type": "text",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "json_query_field",
|
|
"name": "json_query",
|
|
"type": "text",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "expected_value_field",
|
|
"name": "expected_value",
|
|
"type": "text",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "invert_keyword_field",
|
|
"name": "invert_keyword",
|
|
"type": "bool",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "dns_resolve_server_field",
|
|
"name": "dns_resolve_server",
|
|
"type": "text",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "dns_resolver_mode_field",
|
|
"name": "dns_resolver_mode",
|
|
"type": "select",
|
|
"required": false,
|
|
"values": ["A", "AAAA", "CNAME", "MX", "NS", "SOA", "SRV", "TXT", "PTR"]
|
|
},
|
|
{
|
|
"id": "status_field",
|
|
"name": "status",
|
|
"type": "select",
|
|
"required": false,
|
|
"values": ["up", "down", "pending", "paused", "maintenance"]
|
|
},
|
|
{
|
|
"id": "active_field",
|
|
"name": "active",
|
|
"type": "bool",
|
|
"required": true
|
|
},
|
|
{
|
|
"id": "user_field",
|
|
"name": "user",
|
|
"type": "relation",
|
|
"required": true,
|
|
"collectionId": "_pb_users_auth_",
|
|
"maxSelect": 1
|
|
},
|
|
{
|
|
"id": "description_field",
|
|
"name": "description",
|
|
"type": "text",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "cert_expiry_notification_field",
|
|
"name": "cert_expiry_notification",
|
|
"type": "bool",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "cert_expiry_days_field",
|
|
"name": "cert_expiry_days",
|
|
"type": "number",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "ignore_tls_error_field",
|
|
"name": "ignore_tls_error",
|
|
"type": "bool",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "last_check_field",
|
|
"name": "last_check",
|
|
"type": "date",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "uptime_stats_field",
|
|
"name": "uptime_stats",
|
|
"type": "json",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "tags_field",
|
|
"name": "tags",
|
|
"type": "json",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "created_field",
|
|
"name": "created",
|
|
"type": "autodate",
|
|
"onCreate": true,
|
|
"onUpdate": false
|
|
},
|
|
{
|
|
"id": "updated_field",
|
|
"name": "updated",
|
|
"type": "autodate",
|
|
"onCreate": true,
|
|
"onUpdate": true
|
|
}
|
|
],
|
|
"indexes": [
|
|
"CREATE INDEX idx_monitor_user ON monitors (user)",
|
|
"CREATE INDEX idx_monitor_status ON monitors (status)",
|
|
"CREATE INDEX idx_monitor_active ON monitors (active)"
|
|
]
|
|
},
|
|
{
|
|
"id": "heartbeats_collection_001",
|
|
"name": "monitor_heartbeats",
|
|
"type": "base",
|
|
"listRule": "@request.auth.id != '' && monitor.user = @request.auth.id",
|
|
"viewRule": "@request.auth.id != '' && monitor.user = @request.auth.id",
|
|
"createRule": null,
|
|
"updateRule": null,
|
|
"deleteRule": "@request.auth.id != '' && monitor.user = @request.auth.id",
|
|
"fields": [
|
|
{
|
|
"id": "id_field",
|
|
"name": "id",
|
|
"type": "text",
|
|
"system": true,
|
|
"required": true,
|
|
"primaryKey": true,
|
|
"autogeneratePattern": "[a-z0-9]{15}",
|
|
"max": 15,
|
|
"min": 15,
|
|
"pattern": "^[a-z0-9]+$"
|
|
},
|
|
{
|
|
"id": "monitor_field",
|
|
"name": "monitor",
|
|
"type": "relation",
|
|
"required": true,
|
|
"collectionId": "monitors_collection_001",
|
|
"maxSelect": 1,
|
|
"cascadeDelete": true
|
|
},
|
|
{
|
|
"id": "status_field",
|
|
"name": "status",
|
|
"type": "select",
|
|
"required": true,
|
|
"values": ["up", "down", "pending"]
|
|
},
|
|
{
|
|
"id": "ping_field",
|
|
"name": "ping",
|
|
"type": "number",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "msg_field",
|
|
"name": "msg",
|
|
"type": "text",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "cert_expiry_field",
|
|
"name": "cert_expiry",
|
|
"type": "number",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "cert_valid_field",
|
|
"name": "cert_valid",
|
|
"type": "bool",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "time_field",
|
|
"name": "time",
|
|
"type": "date",
|
|
"required": true
|
|
}
|
|
],
|
|
"indexes": [
|
|
"CREATE INDEX idx_heartbeat_monitor ON monitor_heartbeats (monitor)",
|
|
"CREATE INDEX idx_heartbeat_time ON monitor_heartbeats (time)"
|
|
]
|
|
},
|
|
{
|
|
"id": "domains_collection_001",
|
|
"name": "domains",
|
|
"type": "base",
|
|
"listRule": "@request.auth.id != '' && user = @request.auth.id",
|
|
"viewRule": "@request.auth.id != '' && user = @request.auth.id",
|
|
"createRule": "@request.auth.id != '' && user = @request.auth.id && @request.auth.role != 'readonly'",
|
|
"updateRule": "@request.auth.id != '' && user = @request.auth.id && @request.auth.role != 'readonly'",
|
|
"deleteRule": "@request.auth.id != '' && user = @request.auth.id && @request.auth.role != 'readonly'",
|
|
"fields": [
|
|
{
|
|
"id": "id_field",
|
|
"name": "id",
|
|
"type": "text",
|
|
"system": true,
|
|
"required": true,
|
|
"primaryKey": true,
|
|
"autogeneratePattern": "[a-z0-9]{15}",
|
|
"max": 15,
|
|
"min": 15,
|
|
"pattern": "^[a-z0-9]+$"
|
|
},
|
|
{
|
|
"id": "domain_name_field",
|
|
"name": "domain_name",
|
|
"type": "text",
|
|
"required": true
|
|
},
|
|
{
|
|
"id": "status_field",
|
|
"name": "status",
|
|
"type": "select",
|
|
"required": false,
|
|
"values": ["active", "expiring", "expired", "unknown", "paused"]
|
|
},
|
|
{
|
|
"id": "active_field",
|
|
"name": "active",
|
|
"type": "bool",
|
|
"required": true
|
|
},
|
|
{
|
|
"id": "expiry_date_field",
|
|
"name": "expiry_date",
|
|
"type": "date",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "creation_date_field",
|
|
"name": "creation_date",
|
|
"type": "date",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "updated_date_field",
|
|
"name": "updated_date",
|
|
"type": "date",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "registrar_name_field",
|
|
"name": "registrar_name",
|
|
"type": "text",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "registrar_id_field",
|
|
"name": "registrar_id",
|
|
"type": "text",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "registrar_url_field",
|
|
"name": "registrar_url",
|
|
"type": "text",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "dnssec_field",
|
|
"name": "dnssec",
|
|
"type": "text",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "name_servers_field",
|
|
"name": "name_servers",
|
|
"type": "json",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "mx_records_field",
|
|
"name": "mx_records",
|
|
"type": "json",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "txt_records_field",
|
|
"name": "txt_records",
|
|
"type": "json",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "ipv4_addresses_field",
|
|
"name": "ipv4_addresses",
|
|
"type": "json",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "ipv6_addresses_field",
|
|
"name": "ipv6_addresses",
|
|
"type": "json",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "ssl_issuer_field",
|
|
"name": "ssl_issuer",
|
|
"type": "text",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "ssl_valid_to_field",
|
|
"name": "ssl_valid_to",
|
|
"type": "date",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "host_country_field",
|
|
"name": "host_country",
|
|
"type": "text",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "host_isp_field",
|
|
"name": "host_isp",
|
|
"type": "text",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "purchase_price_field",
|
|
"name": "purchase_price",
|
|
"type": "number",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "current_value_field",
|
|
"name": "current_value",
|
|
"type": "number",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "renewal_cost_field",
|
|
"name": "renewal_cost",
|
|
"type": "number",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "auto_renew_field",
|
|
"name": "auto_renew",
|
|
"type": "bool",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "alert_days_before_field",
|
|
"name": "alert_days_before",
|
|
"type": "number",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "ssl_alert_enabled_field",
|
|
"name": "ssl_alert_enabled",
|
|
"type": "bool",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "tags_field",
|
|
"name": "tags",
|
|
"type": "json",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "notes_field",
|
|
"name": "notes",
|
|
"type": "text",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "favicon_url_field",
|
|
"name": "favicon_url",
|
|
"type": "text",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "user_field",
|
|
"name": "user",
|
|
"type": "relation",
|
|
"required": true,
|
|
"collectionId": "_pb_users_auth_",
|
|
"maxSelect": 1
|
|
},
|
|
{
|
|
"id": "last_checked_field",
|
|
"name": "last_checked",
|
|
"type": "date",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "created_field",
|
|
"name": "created",
|
|
"type": "autodate",
|
|
"onCreate": true,
|
|
"onUpdate": false
|
|
},
|
|
{
|
|
"id": "updated_field",
|
|
"name": "updated",
|
|
"type": "autodate",
|
|
"onCreate": true,
|
|
"onUpdate": true
|
|
}
|
|
],
|
|
"indexes": [
|
|
"CREATE INDEX idx_domain_user ON domains (user)",
|
|
"CREATE INDEX idx_domain_status ON domains (status)",
|
|
"CREATE INDEX idx_domain_expiry ON domains (expiry_date)"
|
|
]
|
|
},
|
|
{
|
|
"id": "domain_history_collection_001",
|
|
"name": "domain_history",
|
|
"type": "base",
|
|
"listRule": "@request.auth.id != '' && user = @request.auth.id",
|
|
"viewRule": "@request.auth.id != '' && user = @request.auth.id",
|
|
"createRule": null,
|
|
"updateRule": null,
|
|
"deleteRule": "@request.auth.id != '' && user = @request.auth.id",
|
|
"fields": [
|
|
{
|
|
"id": "id_field",
|
|
"name": "id",
|
|
"type": "text",
|
|
"system": true,
|
|
"required": true,
|
|
"primaryKey": true,
|
|
"autogeneratePattern": "[a-z0-9]{15}",
|
|
"max": 15,
|
|
"min": 15,
|
|
"pattern": "^[a-z0-9]+$"
|
|
},
|
|
{
|
|
"id": "domain_field",
|
|
"name": "domain",
|
|
"type": "relation",
|
|
"required": true,
|
|
"collectionId": "domains_collection_001",
|
|
"maxSelect": 1,
|
|
"cascadeDelete": true
|
|
},
|
|
{
|
|
"id": "change_type_field",
|
|
"name": "change_type",
|
|
"type": "select",
|
|
"required": true,
|
|
"values": ["expiry", "ssl", "dns", "registrar", "ip", "host", "status"]
|
|
},
|
|
{
|
|
"id": "field_name_field",
|
|
"name": "field_name",
|
|
"type": "text",
|
|
"required": true
|
|
},
|
|
{
|
|
"id": "old_value_field",
|
|
"name": "old_value",
|
|
"type": "text",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "new_value_field",
|
|
"name": "new_value",
|
|
"type": "text",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "user_field",
|
|
"name": "user",
|
|
"type": "relation",
|
|
"required": true,
|
|
"collectionId": "_pb_users_auth_",
|
|
"maxSelect": 1
|
|
},
|
|
{
|
|
"id": "created_at_field",
|
|
"name": "created_at",
|
|
"type": "date",
|
|
"required": true
|
|
}
|
|
],
|
|
"indexes": [
|
|
"CREATE INDEX idx_history_domain ON domain_history (domain)",
|
|
"CREATE INDEX idx_history_created ON domain_history (created_at)"
|
|
]
|
|
},
|
|
{
|
|
"id": "incidents_collection_001",
|
|
"name": "incidents",
|
|
"type": "base",
|
|
"listRule": "@request.auth.id != '' && user = @request.auth.id",
|
|
"viewRule": "@request.auth.id != '' && user = @request.auth.id",
|
|
"createRule": "@request.auth.id != '' && user = @request.auth.id",
|
|
"updateRule": "@request.auth.id != '' && user = @request.auth.id",
|
|
"deleteRule": "@request.auth.id != '' && user = @request.auth.id",
|
|
"fields": [
|
|
{
|
|
"id": "id_field",
|
|
"name": "id",
|
|
"type": "text",
|
|
"system": true,
|
|
"required": true,
|
|
"primaryKey": true,
|
|
"autogeneratePattern": "[a-z0-9]{15}",
|
|
"max": 15,
|
|
"min": 15,
|
|
"pattern": "^[a-z0-9]+$"
|
|
},
|
|
{
|
|
"id": "title_field",
|
|
"name": "title",
|
|
"type": "text",
|
|
"required": true
|
|
},
|
|
{
|
|
"id": "description_field",
|
|
"name": "description",
|
|
"type": "text",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "type_field",
|
|
"name": "type",
|
|
"type": "select",
|
|
"required": true,
|
|
"values": ["monitor_down", "monitor_up", "domain_expiring", "domain_expired", "ssl_expiring", "system_offline", "system_online"]
|
|
},
|
|
{
|
|
"id": "severity_field",
|
|
"name": "severity",
|
|
"type": "select",
|
|
"required": true,
|
|
"values": ["critical", "high", "medium", "low"]
|
|
},
|
|
{
|
|
"id": "status_field",
|
|
"name": "status",
|
|
"type": "select",
|
|
"required": true,
|
|
"values": ["open", "acknowledged", "resolved", "closed"]
|
|
},
|
|
{
|
|
"id": "monitor_field",
|
|
"name": "monitor",
|
|
"type": "relation",
|
|
"required": false,
|
|
"collectionId": "monitors_collection_001",
|
|
"maxSelect": 1
|
|
},
|
|
{
|
|
"id": "domain_field",
|
|
"name": "domain",
|
|
"type": "relation",
|
|
"required": false,
|
|
"collectionId": "domains_collection_001",
|
|
"maxSelect": 1
|
|
},
|
|
{
|
|
"id": "assigned_to_field",
|
|
"name": "assigned_to",
|
|
"type": "relation",
|
|
"required": false,
|
|
"collectionId": "_pb_users_auth_",
|
|
"maxSelect": 1
|
|
},
|
|
{
|
|
"id": "started_at_field",
|
|
"name": "started_at",
|
|
"type": "date",
|
|
"required": true
|
|
},
|
|
{
|
|
"id": "acknowledged_at_field",
|
|
"name": "acknowledged_at",
|
|
"type": "date",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "resolved_at_field",
|
|
"name": "resolved_at",
|
|
"type": "date",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "closed_at_field",
|
|
"name": "closed_at",
|
|
"type": "date",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "resolution_field",
|
|
"name": "resolution",
|
|
"type": "text",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "root_cause_field",
|
|
"name": "root_cause",
|
|
"type": "text",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "user_field",
|
|
"name": "user",
|
|
"type": "relation",
|
|
"required": true,
|
|
"collectionId": "_pb_users_auth_",
|
|
"maxSelect": 1
|
|
},
|
|
{
|
|
"id": "created_field",
|
|
"name": "created",
|
|
"type": "autodate",
|
|
"onCreate": true,
|
|
"onUpdate": false
|
|
},
|
|
{
|
|
"id": "updated_field",
|
|
"name": "updated",
|
|
"type": "autodate",
|
|
"onCreate": true,
|
|
"onUpdate": true
|
|
}
|
|
],
|
|
"indexes": [
|
|
"CREATE INDEX idx_incident_user ON incidents (user)",
|
|
"CREATE INDEX idx_incident_status ON incidents (status)",
|
|
"CREATE INDEX idx_incident_severity ON incidents (severity)",
|
|
"CREATE INDEX idx_incident_started ON incidents (started_at)"
|
|
]
|
|
},
|
|
{
|
|
"id": "incident_updates_collection_001",
|
|
"name": "incident_updates",
|
|
"type": "base",
|
|
"listRule": "@request.auth.id != '' && incident.user = @request.auth.id",
|
|
"viewRule": "@request.auth.id != '' && incident.user = @request.auth.id",
|
|
"createRule": null,
|
|
"updateRule": null,
|
|
"deleteRule": "@request.auth.id != '' && incident.user = @request.auth.id",
|
|
"fields": [
|
|
{
|
|
"id": "id_field",
|
|
"name": "id",
|
|
"type": "text",
|
|
"system": true,
|
|
"required": true,
|
|
"primaryKey": true,
|
|
"autogeneratePattern": "[a-z0-9]{15}",
|
|
"max": 15,
|
|
"min": 15,
|
|
"pattern": "^[a-z0-9]+$"
|
|
},
|
|
{
|
|
"id": "incident_field",
|
|
"name": "incident",
|
|
"type": "relation",
|
|
"required": true,
|
|
"collectionId": "incidents_collection_001",
|
|
"maxSelect": 1,
|
|
"cascadeDelete": true
|
|
},
|
|
{
|
|
"id": "message_field",
|
|
"name": "message",
|
|
"type": "text",
|
|
"required": true
|
|
},
|
|
{
|
|
"id": "update_type_field",
|
|
"name": "update_type",
|
|
"type": "select",
|
|
"required": true,
|
|
"values": ["note", "status_change", "assignment"]
|
|
},
|
|
{
|
|
"id": "old_status_field",
|
|
"name": "old_status",
|
|
"type": "text",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "new_status_field",
|
|
"name": "new_status",
|
|
"type": "text",
|
|
"required": false
|
|
},
|
|
{
|
|
"id": "created_by_field",
|
|
"name": "created_by",
|
|
"type": "relation",
|
|
"required": true,
|
|
"collectionId": "_pb_users_auth_",
|
|
"maxSelect": 1
|
|
},
|
|
{
|
|
"id": "created_at_field",
|
|
"name": "created_at",
|
|
"type": "date",
|
|
"required": true
|
|
}
|
|
],
|
|
"indexes": [
|
|
"CREATE INDEX idx_update_incident ON incident_updates (incident)",
|
|
"CREATE INDEX idx_update_created ON incident_updates (created_at)"
|
|
]
|
|
}
|
|
]`
|
|
|
|
err := app.ImportCollectionsByMarshaledJSON([]byte(jsonData), false)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}, func(app core.App) error {
|
|
return nil
|
|
})
|
|
}
|