diff --git a/example_dashboard/package-lock.json b/example_dashboard/package-lock.json index 5f23941..e6e6ce6 100644 --- a/example_dashboard/package-lock.json +++ b/example_dashboard/package-lock.json @@ -32,215 +32,6 @@ "vite": "^4.3.6" } }, - "../velconnect-svelte-npm": { - "name": "@velaboratory/velconnect-svelte", - "version": "1.0.4", - "license": "MIT", - "dependencies": { - "@velaboratory/velconnect": "../velconnect-npm", - "pocketbase": "^0.15.3", - "svelte": "^4.0.5" - }, - "devDependencies": { - "typescript": "^5.1.6" - } - }, - "../velconnect-svelte-npm/node_modules/@ampproject/remapping": { - "version": "2.2.1", - "license": "Apache-2.0", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "../velconnect-svelte-npm/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "../velconnect-svelte-npm/node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "../velconnect-svelte-npm/node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "../velconnect-svelte-npm/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "license": "MIT" - }, - "../velconnect-svelte-npm/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "../velconnect-svelte-npm/node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "license": "MIT" - }, - "../velconnect-svelte-npm/node_modules/@types/estree": { - "version": "1.0.1", - "license": "MIT" - }, - "../velconnect-svelte-npm/node_modules/acorn": { - "version": "8.10.0", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "../velconnect-svelte-npm/node_modules/aria-query": { - "version": "5.3.0", - "license": "Apache-2.0", - "dependencies": { - "dequal": "^2.0.3" - } - }, - "../velconnect-svelte-npm/node_modules/axobject-query": { - "version": "3.2.1", - "license": "Apache-2.0", - "dependencies": { - "dequal": "^2.0.3" - } - }, - "../velconnect-svelte-npm/node_modules/code-red": { - "version": "1.0.3", - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.14", - "@types/estree": "^1.0.0", - "acorn": "^8.8.2", - "estree-walker": "^3.0.3", - "periscopic": "^3.1.0" - } - }, - "../velconnect-svelte-npm/node_modules/css-tree": { - "version": "2.3.1", - "license": "MIT", - "dependencies": { - "mdn-data": "2.0.30", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" - } - }, - "../velconnect-svelte-npm/node_modules/dequal": { - "version": "2.0.3", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "../velconnect-svelte-npm/node_modules/estree-walker": { - "version": "3.0.3", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "../velconnect-svelte-npm/node_modules/is-reference": { - "version": "3.0.1", - "license": "MIT", - "dependencies": { - "@types/estree": "*" - } - }, - "../velconnect-svelte-npm/node_modules/locate-character": { - "version": "3.0.0", - "license": "MIT" - }, - "../velconnect-svelte-npm/node_modules/magic-string": { - "version": "0.30.1", - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" - } - }, - "../velconnect-svelte-npm/node_modules/mdn-data": { - "version": "2.0.30", - "license": "CC0-1.0" - }, - "../velconnect-svelte-npm/node_modules/periscopic": { - "version": "3.1.0", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^3.0.0", - "is-reference": "^3.0.0" - } - }, - "../velconnect-svelte-npm/node_modules/pocketbase": { - "version": "0.15.3", - "license": "MIT" - }, - "../velconnect-svelte-npm/node_modules/source-map-js": { - "version": "1.0.2", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "../velconnect-svelte-npm/node_modules/svelte": { - "version": "4.0.5", - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.2.1", - "@jridgewell/sourcemap-codec": "^1.4.15", - "@jridgewell/trace-mapping": "^0.3.18", - "acorn": "^8.9.0", - "aria-query": "^5.3.0", - "axobject-query": "^3.2.1", - "code-red": "^1.0.3", - "css-tree": "^2.3.1", - "estree-walker": "^3.0.3", - "is-reference": "^3.0.1", - "locate-character": "^3.0.0", - "magic-string": "^0.30.0", - "periscopic": "^3.1.0" - }, - "engines": { - "node": ">=16" - } - }, - "../velconnect-svelte-npm/node_modules/typescript": { - "version": "5.1.6", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, "node_modules/@aashutoshrathi/word-wrap": { "version": "1.2.6", "dev": true, @@ -251,7 +42,6 @@ }, "node_modules/@ampproject/remapping": { "version": "2.2.1", - "dev": true, "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", @@ -365,7 +155,6 @@ }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.0.1", @@ -378,7 +167,6 @@ }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.0", - "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -386,7 +174,6 @@ }, "node_modules/@jridgewell/set-array": { "version": "1.1.2", - "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -394,12 +181,10 @@ }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", - "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.18", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "3.1.0", @@ -408,7 +193,6 @@ }, "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.14", - "dev": true, "license": "MIT" }, "node_modules/@nodelib/fs.scandir": { @@ -535,7 +319,6 @@ }, "node_modules/@types/estree": { "version": "1.0.1", - "dev": true, "license": "MIT" }, "node_modules/@types/json-schema": { @@ -734,12 +517,16 @@ } }, "node_modules/@velaboratory/velconnect-svelte": { - "resolved": "../velconnect-svelte-npm", - "link": true + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@velaboratory/velconnect-svelte/-/velconnect-svelte-1.0.5.tgz", + "integrity": "sha512-DtmCob1bsL8REht71VPRwtXsRIXnm+d9uSt2AqpO0joJHSCvINU9K9zRAP2iRfhdkNIt1CNO9lqMICdFa4sbwg==", + "dependencies": { + "pocketbase": "^0.15.3", + "svelte": "^4.0.5" + } }, "node_modules/acorn": { "version": "8.10.0", - "dev": true, "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -812,7 +599,6 @@ }, "node_modules/aria-query": { "version": "5.3.0", - "dev": true, "license": "Apache-2.0", "dependencies": { "dequal": "^2.0.3" @@ -828,7 +614,6 @@ }, "node_modules/axobject-query": { "version": "3.2.1", - "dev": true, "license": "Apache-2.0", "dependencies": { "dequal": "^2.0.3" @@ -947,7 +732,6 @@ }, "node_modules/code-red": { "version": "1.0.3", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.14", @@ -1001,7 +785,6 @@ }, "node_modules/css-tree": { "version": "2.3.1", - "dev": true, "license": "MIT", "dependencies": { "mdn-data": "2.0.30", @@ -1053,7 +836,6 @@ }, "node_modules/dequal": { "version": "2.0.3", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -1360,7 +1142,6 @@ }, "node_modules/estree-walker": { "version": "3.0.3", - "dev": true, "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" @@ -1666,7 +1447,6 @@ }, "node_modules/is-reference": { "version": "3.0.1", - "dev": true, "license": "MIT", "dependencies": { "@types/estree": "*" @@ -1733,7 +1513,6 @@ }, "node_modules/locate-character": { "version": "3.0.0", - "dev": true, "license": "MIT" }, "node_modules/locate-path": { @@ -1776,7 +1555,6 @@ }, "node_modules/magic-string": { "version": "0.30.1", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" @@ -1787,7 +1565,6 @@ }, "node_modules/mdn-data": { "version": "2.0.30", - "dev": true, "license": "CC0-1.0" }, "node_modules/merge2": { @@ -2012,7 +1789,6 @@ }, "node_modules/periscopic": { "version": "3.1.0", - "dev": true, "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", @@ -2039,8 +1815,7 @@ "node_modules/pocketbase": { "version": "0.15.3", "resolved": "https://registry.npmjs.org/pocketbase/-/pocketbase-0.15.3.tgz", - "integrity": "sha512-sjM0XO4wHUlVZs94VhRJi4FeYtbLqvxFbRDJlfjFb/4FkxypbGwxLM4HDAEr8q6jdreuxAM1/n/b5HB1GjQ1Vg==", - "dev": true + "integrity": "sha512-sjM0XO4wHUlVZs94VhRJi4FeYtbLqvxFbRDJlfjFb/4FkxypbGwxLM4HDAEr8q6jdreuxAM1/n/b5HB1GjQ1Vg==" }, "node_modules/postcss": { "version": "8.4.25", @@ -2414,7 +2189,6 @@ }, "node_modules/source-map-js": { "version": "1.0.2", - "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -2473,7 +2247,6 @@ }, "node_modules/svelte": { "version": "4.0.5", - "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.1", diff --git a/example_dashboard/package.json b/example_dashboard/package.json index 79a82f2..7c4fa18 100644 --- a/example_dashboard/package.json +++ b/example_dashboard/package.json @@ -30,10 +30,8 @@ "tslib": "^2.4.1", "typescript": "^5.0.0", "vite": "^4.3.6", - "pocketbase": "^0.15.3" - }, - "type": "module", - "dependencies": { + "pocketbase": "^0.15.3", "@velaboratory/velconnect-svelte": "^1.0.3" - } + }, + "type": "module" } diff --git a/example_dashboard/src/lib/js/util.ts b/example_dashboard/src/lib/js/util.ts index 59e7c88..2805d85 100644 --- a/example_dashboard/src/lib/js/util.ts +++ b/example_dashboard/src/lib/js/util.ts @@ -15,7 +15,8 @@ export function prettyDate(date: string | Date | DateTime, includeYear = false) } // return DateTime.fromISO(date).toFormat("yyyy-LL-dd hh:mm a ZZZZ"); const fromNow = DateTime.utc().minus(d.toMillis()).toMillis(); - const yearReplace = includeYear ? '' : ', 2023'; + // TODO fix + const yearReplace = includeYear ? '' : ', 2024'; if (fromNow > 0) { return `${d.toLocaleString(DateTime.DATETIME_MED)} (${humanizeDuration(fromNow, { round: true, diff --git a/unity_package/Runtime/VELConnectManager.cs b/unity_package/Runtime/VELConnectManager.cs index 64a77e3..1a4f9e2 100644 --- a/unity_package/Runtime/VELConnectManager.cs +++ b/unity_package/Runtime/VELConnectManager.cs @@ -185,7 +185,23 @@ namespace VELConnect sb.Append("EDITOR"); #endif string id = Convert.ToBase64String(md5.ComputeHash(Encoding.UTF8.GetBytes(sb.ToString()))); - deviceId = id[..15]; + deviceId = CreateDeviceId(); + } + + // Computes 15-char device id compatibly with pocketbase + private static string CreateDeviceId() + { + MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); + StringBuilder sb = new StringBuilder(SystemInfo.deviceUniqueIdentifier); + sb.Append(Application.productName); +#if UNITY_EDITOR + // allows running multiple builds on the same computer + // return SystemInfo.deviceUniqueIdentifier + Hash128.Compute(Application.dataPath); + sb.Append(Application.dataPath); + sb.Append("EDITOR"); +#endif + string id = Convert.ToBase64String(md5.ComputeHash(Encoding.UTF8.GetBytes(sb.ToString()))); + return id[..15]; } // Start is called before the first frame update diff --git a/velconnect/Dockerfile b/velconnect/Dockerfile index 45b4f58..6cc00ae 100644 --- a/velconnect/Dockerfile +++ b/velconnect/Dockerfile @@ -1,22 +1,20 @@ -FROM alpine:latest +# syntax=docker/dockerfile:1 +FROM golang:1.21 as build +WORKDIR /src +COPY go.mod go.sum ./ +RUN go mod download -ARG PB_VERSION=0.20.7 +COPY *.go ./ +COPY pb_migrations/ ./pb_migrations -RUN apk add --no-cache \ - unzip \ - ca-certificates +# Build +RUN CGO_ENABLED=0 go build -ldflags="-s -w" -o ./velconnect +# RUN ./velconnect-pb migrate up -# download and unzip PocketBase -ADD https://github.com/pocketbase/pocketbase/releases/download/v${PB_VERSION}/pocketbase_${PB_VERSION}_linux_arm64.zip /tmp/pb.zip -RUN unzip /tmp/pb.zip -d /pb/ +FROM alpine:3.19.1 +COPY --from=build /src/velconnect /velconnect -# uncomment to copy the local pb_migrations dir into the image -# COPY ./pb_migrations /pb/pb_migrations +EXPOSE 8090 -# uncomment to copy the local pb_hooks dir into the image -# COPY ./pb_hooks /pb/pb_hooks - -EXPOSE 8092 - -# start PocketBase -CMD ["/pb/pocketbase", "serve", "--http=0.0.0.0:8092"] +# Run +ENTRYPOINT ["./velconnect", "serve", "--http=0.0.0.0:8090"] \ No newline at end of file diff --git a/velconnect/docker-compose.yml b/velconnect/docker-compose.yml index 6f4a660..9e05d25 100644 --- a/velconnect/docker-compose.yml +++ b/velconnect/docker-compose.yml @@ -4,6 +4,6 @@ services: build: . restart: always ports: - - "8091:8092" + - "8094:8090" volumes: - ./pb_data:/pb/pb_data diff --git a/velconnect/go.mod b/velconnect/go.mod index a4a0ba2..7d37805 100644 --- a/velconnect/go.mod +++ b/velconnect/go.mod @@ -4,6 +4,7 @@ go 1.18 require ( github.com/labstack/echo/v5 v5.0.0-20220201181537-ed2888cfa198 + github.com/pocketbase/dbx v1.10.0 github.com/pocketbase/pocketbase v0.16.7 ) @@ -50,7 +51,6 @@ require ( github.com/mattn/go-isatty v0.0.19 // indirect github.com/mattn/go-sqlite3 v1.14.17 // indirect github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d // indirect - github.com/pocketbase/dbx v1.10.0 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect github.com/spf13/cast v1.5.1 // indirect github.com/spf13/cobra v1.7.0 // indirect diff --git a/velconnect/main.go b/velconnect/main.go index d95aa8d..05eed1a 100644 --- a/velconnect/main.go +++ b/velconnect/main.go @@ -5,7 +5,7 @@ import ( "log" "net/http" - _ "velaboratory/velconnect/migrations" + _ "velaboratory/velconnect/pb_migrations" "github.com/labstack/echo/v5" "github.com/pocketbase/pocketbase" diff --git a/velconnect/migrations/1706737010_collections_snapshot.go b/velconnect/migrations/1706737010_collections_snapshot.go new file mode 100644 index 0000000..41db26b --- /dev/null +++ b/velconnect/migrations/1706737010_collections_snapshot.go @@ -0,0 +1,453 @@ +package migrations + +import ( + "encoding/json" + + "github.com/pocketbase/dbx" + "github.com/pocketbase/pocketbase/daos" + m "github.com/pocketbase/pocketbase/migrations" + "github.com/pocketbase/pocketbase/models" +) + +func init() { + m.Register(func(db dbx.Builder) error { + jsonData := `[ + { + "id": "ve85cwsj7syqvxu", + "created": "2023-07-06 23:08:13.962Z", + "updated": "2023-11-03 18:47:06.094Z", + "name": "UserCount", + "type": "base", + "system": false, + "schema": [ + { + "system": false, + "id": "pnhtdbcx", + "name": "app_id", + "type": "text", + "required": false, + "unique": false, + "options": { + "min": null, + "max": null, + "pattern": "" + } + }, + { + "system": false, + "id": "wkf3zyyb", + "name": "room_id", + "type": "text", + "required": false, + "unique": false, + "options": { + "min": null, + "max": null, + "pattern": "" + } + }, + { + "system": false, + "id": "f7k9hdoc", + "name": "total_users", + "type": "number", + "required": false, + "unique": false, + "options": { + "min": null, + "max": null + } + }, + { + "system": false, + "id": "uevek8os", + "name": "room_users", + "type": "number", + "required": false, + "unique": false, + "options": { + "min": null, + "max": null + } + }, + { + "system": false, + "id": "coilxuep", + "name": "version", + "type": "text", + "required": false, + "unique": false, + "options": { + "min": null, + "max": null, + "pattern": "" + } + }, + { + "system": false, + "id": "zee0a2yb", + "name": "platform", + "type": "text", + "required": false, + "unique": false, + "options": { + "min": null, + "max": null, + "pattern": "" + } + } + ], + "indexes": [], + "listRule": null, + "viewRule": null, + "createRule": "", + "updateRule": null, + "deleteRule": null, + "options": {} + }, + { + "id": "fupstz47c55s69f", + "created": "2023-07-06 23:10:31.321Z", + "updated": "2023-11-03 18:47:06.120Z", + "name": "Device", + "type": "base", + "system": false, + "schema": [ + { + "system": false, + "id": "1tkrnxqf", + "name": "os_info", + "type": "text", + "required": false, + "unique": false, + "options": { + "min": null, + "max": null, + "pattern": "" + } + }, + { + "system": false, + "id": "knspamfx", + "name": "friendly_name", + "type": "text", + "required": false, + "unique": false, + "options": { + "min": null, + "max": null, + "pattern": "" + } + }, + { + "system": false, + "id": "qfalwg3c", + "name": "modified_by", + "type": "text", + "required": false, + "unique": false, + "options": { + "min": null, + "max": null, + "pattern": "" + } + }, + { + "system": false, + "id": "x0zlup7v", + "name": "current_app", + "type": "text", + "required": false, + "unique": false, + "options": { + "min": null, + "max": null, + "pattern": "" + } + }, + { + "system": false, + "id": "vpzen2th", + "name": "current_room", + "type": "text", + "required": false, + "unique": false, + "options": { + "min": null, + "max": null, + "pattern": "" + } + }, + { + "system": false, + "id": "d0ckgjhm", + "name": "pairing_code", + "type": "text", + "required": false, + "unique": false, + "options": { + "min": null, + "max": null, + "pattern": "" + } + }, + { + "system": false, + "id": "hglbl7da", + "name": "last_online", + "type": "date", + "required": false, + "unique": false, + "options": { + "min": "", + "max": "" + } + }, + { + "system": false, + "id": "qxsvm1rf", + "name": "data", + "type": "relation", + "required": true, + "unique": false, + "options": { + "collectionId": "3qwwkz4wb0lyi78", + "cascadeDelete": false, + "minSelect": null, + "maxSelect": 1, + "displayFields": [ + "data" + ] + } + }, + { + "system": false, + "id": "nfernq2q", + "name": "owner", + "type": "relation", + "required": false, + "unique": false, + "options": { + "collectionId": "_pb_users_auth_", + "cascadeDelete": false, + "minSelect": null, + "maxSelect": 1, + "displayFields": [ + "username" + ] + } + }, + { + "system": false, + "id": "p1aruqz5", + "name": "past_owners", + "type": "relation", + "required": false, + "unique": false, + "options": { + "collectionId": "_pb_users_auth_", + "cascadeDelete": false, + "minSelect": null, + "maxSelect": null, + "displayFields": [ + "username" + ] + } + } + ], + "indexes": [], + "listRule": "", + "viewRule": "", + "createRule": null, + "updateRule": "", + "deleteRule": null, + "options": {} + }, + { + "id": "3qwwkz4wb0lyi78", + "created": "2023-07-06 23:12:11.113Z", + "updated": "2024-01-31 21:26:53.835Z", + "name": "DataBlock", + "type": "base", + "system": false, + "schema": [ + { + "system": false, + "id": "wbifl8pv", + "name": "category", + "type": "text", + "required": false, + "unique": false, + "options": { + "min": null, + "max": null, + "pattern": "" + } + }, + { + "system": false, + "id": "5a3nwg7m", + "name": "modified_by", + "type": "text", + "required": false, + "unique": false, + "options": { + "min": null, + "max": null, + "pattern": "" + } + }, + { + "system": false, + "id": "mkzyfsng", + "name": "data", + "type": "json", + "required": false, + "unique": false, + "options": {} + }, + { + "system": false, + "id": "a3d7pkoh", + "name": "owner", + "type": "relation", + "required": false, + "unique": false, + "options": { + "collectionId": "_pb_users_auth_", + "cascadeDelete": false, + "minSelect": null, + "maxSelect": 1, + "displayFields": [ + "username" + ] + } + }, + { + "system": false, + "id": "80tmi6fm", + "name": "block_id", + "type": "text", + "required": false, + "unique": false, + "options": { + "min": null, + "max": null, + "pattern": "" + } + } + ], + "indexes": [ + "CREATE INDEX ` + "`" + `idx_aYVfg1q` + "`" + ` ON ` + "`" + `DataBlock` + "`" + ` (` + "`" + `block_id` + "`" + `)" + ], + "listRule": "", + "viewRule": "", + "createRule": "", + "updateRule": "", + "deleteRule": null, + "options": {} + }, + { + "id": "_pb_users_auth_", + "created": "2023-11-03 18:47:06.067Z", + "updated": "2024-01-31 21:26:53.820Z", + "name": "Users", + "type": "auth", + "system": false, + "schema": [ + { + "system": false, + "id": "users_name", + "name": "name", + "type": "text", + "required": false, + "unique": false, + "options": { + "min": null, + "max": null, + "pattern": "" + } + }, + { + "system": false, + "id": "users_avatar", + "name": "avatar", + "type": "file", + "required": false, + "unique": false, + "options": { + "maxSelect": 1, + "maxSize": 5242880, + "mimeTypes": [ + "image/jpeg", + "image/png", + "image/svg+xml", + "image/gif", + "image/webp" + ], + "thumbs": null, + "protected": false + } + }, + { + "system": false, + "id": "1hwaooub", + "name": "devices", + "type": "relation", + "required": false, + "unique": false, + "options": { + "collectionId": "fupstz47c55s69f", + "cascadeDelete": false, + "minSelect": null, + "maxSelect": null, + "displayFields": [] + } + }, + { + "system": false, + "id": "xvw8arlm", + "name": "profiles", + "type": "relation", + "required": false, + "unique": false, + "options": { + "collectionId": "3qwwkz4wb0lyi78", + "cascadeDelete": false, + "minSelect": null, + "maxSelect": null, + "displayFields": [ + "data" + ] + } + } + ], + "indexes": [], + "listRule": "id = @request.auth.id", + "viewRule": "id = @request.auth.id", + "createRule": "", + "updateRule": "id = @request.auth.id", + "deleteRule": "id = @request.auth.id", + "options": { + "allowEmailAuth": true, + "allowOAuth2Auth": true, + "allowUsernameAuth": true, + "exceptEmailDomains": null, + "manageRule": null, + "minPasswordLength": 6, + "onlyEmailDomains": null, + "requireEmail": false + } + } + ]` + + collections := []*models.Collection{} + if err := json.Unmarshal([]byte(jsonData), &collections); err != nil { + return err + } + + return daos.New(db).ImportCollections(collections, true, nil) + }, func(db dbx.Builder) error { + return nil + }) +} diff --git a/velconnect/migrations/1688687760_velconnect.go b/velconnect/pb_migrations/1688687760_velconnect.go similarity index 100% rename from velconnect/migrations/1688687760_velconnect.go rename to velconnect/pb_migrations/1688687760_velconnect.go diff --git a/velconnect/migrations/1688688320_collections_snapshot.go b/velconnect/pb_migrations/1688688320_collections_snapshot.go similarity index 100% rename from velconnect/migrations/1688688320_collections_snapshot.go rename to velconnect/pb_migrations/1688688320_collections_snapshot.go diff --git a/velconnect/migrations/1688698903_updated_Device.go b/velconnect/pb_migrations/1688698903_updated_Device.go similarity index 100% rename from velconnect/migrations/1688698903_updated_Device.go rename to velconnect/pb_migrations/1688698903_updated_Device.go diff --git a/velconnect/migrations/1688762268_updated_Device.go b/velconnect/pb_migrations/1688762268_updated_Device.go similarity index 100% rename from velconnect/migrations/1688762268_updated_Device.go rename to velconnect/pb_migrations/1688762268_updated_Device.go diff --git a/velconnect/migrations/1688762282_updated_Device.go b/velconnect/pb_migrations/1688762282_updated_Device.go similarity index 100% rename from velconnect/migrations/1688762282_updated_Device.go rename to velconnect/pb_migrations/1688762282_updated_Device.go diff --git a/velconnect/migrations/1688764015_updated_users.go b/velconnect/pb_migrations/1688764015_updated_users.go similarity index 100% rename from velconnect/migrations/1688764015_updated_users.go rename to velconnect/pb_migrations/1688764015_updated_users.go diff --git a/velconnect/migrations/1688764331_updated_Users.go b/velconnect/pb_migrations/1688764331_updated_Users.go similarity index 100% rename from velconnect/migrations/1688764331_updated_Users.go rename to velconnect/pb_migrations/1688764331_updated_Users.go diff --git a/velconnect/migrations/1688765190_updated_Device.go b/velconnect/pb_migrations/1688765190_updated_Device.go similarity index 100% rename from velconnect/migrations/1688765190_updated_Device.go rename to velconnect/pb_migrations/1688765190_updated_Device.go diff --git a/velconnect/migrations/1688782403_updated_Device.go b/velconnect/pb_migrations/1688782403_updated_Device.go similarity index 100% rename from velconnect/migrations/1688782403_updated_Device.go rename to velconnect/pb_migrations/1688782403_updated_Device.go diff --git a/velconnect/migrations/1688783036_updated_Device.go b/velconnect/pb_migrations/1688783036_updated_Device.go similarity index 100% rename from velconnect/migrations/1688783036_updated_Device.go rename to velconnect/pb_migrations/1688783036_updated_Device.go diff --git a/velconnect/migrations/1688786744_updated_UserCount.go b/velconnect/pb_migrations/1688786744_updated_UserCount.go similarity index 100% rename from velconnect/migrations/1688786744_updated_UserCount.go rename to velconnect/pb_migrations/1688786744_updated_UserCount.go diff --git a/velconnect/migrations/1688786749_updated_UserCount.go b/velconnect/pb_migrations/1688786749_updated_UserCount.go similarity index 100% rename from velconnect/migrations/1688786749_updated_UserCount.go rename to velconnect/pb_migrations/1688786749_updated_UserCount.go diff --git a/velconnect/migrations/1689182903_updated_DataBlock.go b/velconnect/pb_migrations/1689182903_updated_DataBlock.go similarity index 100% rename from velconnect/migrations/1689182903_updated_DataBlock.go rename to velconnect/pb_migrations/1689182903_updated_DataBlock.go diff --git a/velconnect/migrations/1689182917_updated_DataBlock.go b/velconnect/pb_migrations/1689182917_updated_DataBlock.go similarity index 100% rename from velconnect/migrations/1689182917_updated_DataBlock.go rename to velconnect/pb_migrations/1689182917_updated_DataBlock.go diff --git a/velconnect/migrations/1689182928_updated_Device.go b/velconnect/pb_migrations/1689182928_updated_Device.go similarity index 100% rename from velconnect/migrations/1689182928_updated_Device.go rename to velconnect/pb_migrations/1689182928_updated_Device.go diff --git a/velconnect/migrations/1689183964_updated_Device.go b/velconnect/pb_migrations/1689183964_updated_Device.go similarity index 100% rename from velconnect/migrations/1689183964_updated_Device.go rename to velconnect/pb_migrations/1689183964_updated_Device.go diff --git a/velconnect/migrations/1689184089_updated_DataBlock.go b/velconnect/pb_migrations/1689184089_updated_DataBlock.go similarity index 100% rename from velconnect/migrations/1689184089_updated_DataBlock.go rename to velconnect/pb_migrations/1689184089_updated_DataBlock.go diff --git a/velconnect/migrations/1689184118_deleted_UserDevice.go b/velconnect/pb_migrations/1689184118_deleted_UserDevice.go similarity index 100% rename from velconnect/migrations/1689184118_deleted_UserDevice.go rename to velconnect/pb_migrations/1689184118_deleted_UserDevice.go diff --git a/velconnect/migrations/1689184532_updated_Device.go b/velconnect/pb_migrations/1689184532_updated_Device.go similarity index 100% rename from velconnect/migrations/1689184532_updated_Device.go rename to velconnect/pb_migrations/1689184532_updated_Device.go diff --git a/velconnect/migrations/1689185047_updated_DataBlock.go b/velconnect/pb_migrations/1689185047_updated_DataBlock.go similarity index 100% rename from velconnect/migrations/1689185047_updated_DataBlock.go rename to velconnect/pb_migrations/1689185047_updated_DataBlock.go diff --git a/velconnect/migrations/1689186241_updated_DataBlock.go b/velconnect/pb_migrations/1689186241_updated_DataBlock.go similarity index 100% rename from velconnect/migrations/1689186241_updated_DataBlock.go rename to velconnect/pb_migrations/1689186241_updated_DataBlock.go diff --git a/velconnect/migrations/1689186267_updated_Device.go b/velconnect/pb_migrations/1689186267_updated_Device.go similarity index 100% rename from velconnect/migrations/1689186267_updated_Device.go rename to velconnect/pb_migrations/1689186267_updated_Device.go diff --git a/velconnect/migrations/1689186346_updated_Device.go b/velconnect/pb_migrations/1689186346_updated_Device.go similarity index 100% rename from velconnect/migrations/1689186346_updated_Device.go rename to velconnect/pb_migrations/1689186346_updated_Device.go diff --git a/velconnect/migrations/1689187696_updated_DataBlock.go b/velconnect/pb_migrations/1689187696_updated_DataBlock.go similarity index 100% rename from velconnect/migrations/1689187696_updated_DataBlock.go rename to velconnect/pb_migrations/1689187696_updated_DataBlock.go diff --git a/velconnect/migrations/1689187725_updated_Device.go b/velconnect/pb_migrations/1689187725_updated_Device.go similarity index 100% rename from velconnect/migrations/1689187725_updated_Device.go rename to velconnect/pb_migrations/1689187725_updated_Device.go diff --git a/velconnect/migrations/1689432006_updated_Users.go b/velconnect/pb_migrations/1689432006_updated_Users.go similarity index 100% rename from velconnect/migrations/1689432006_updated_Users.go rename to velconnect/pb_migrations/1689432006_updated_Users.go diff --git a/velconnect/migrations/1689432678_updated_Users.go b/velconnect/pb_migrations/1689432678_updated_Users.go similarity index 100% rename from velconnect/migrations/1689432678_updated_Users.go rename to velconnect/pb_migrations/1689432678_updated_Users.go diff --git a/velconnect/migrations/1689432745_updated_Users.go b/velconnect/pb_migrations/1689432745_updated_Users.go similarity index 100% rename from velconnect/migrations/1689432745_updated_Users.go rename to velconnect/pb_migrations/1689432745_updated_Users.go diff --git a/velconnect/migrations/1689432842_updated_Users.go b/velconnect/pb_migrations/1689432842_updated_Users.go similarity index 100% rename from velconnect/migrations/1689432842_updated_Users.go rename to velconnect/pb_migrations/1689432842_updated_Users.go diff --git a/velconnect/migrations/1689438773_updated_DataBlock.go b/velconnect/pb_migrations/1689438773_updated_DataBlock.go similarity index 100% rename from velconnect/migrations/1689438773_updated_DataBlock.go rename to velconnect/pb_migrations/1689438773_updated_DataBlock.go diff --git a/velconnect/migrations/1689439744_updated_DataBlock.go b/velconnect/pb_migrations/1689439744_updated_DataBlock.go similarity index 100% rename from velconnect/migrations/1689439744_updated_DataBlock.go rename to velconnect/pb_migrations/1689439744_updated_DataBlock.go diff --git a/velconnect/migrations/1689439798_updated_DataBlock.go b/velconnect/pb_migrations/1689439798_updated_DataBlock.go similarity index 100% rename from velconnect/migrations/1689439798_updated_DataBlock.go rename to velconnect/pb_migrations/1689439798_updated_DataBlock.go diff --git a/velconnect/migrations/1689439831_updated_Users.go b/velconnect/pb_migrations/1689439831_updated_Users.go similarity index 100% rename from velconnect/migrations/1689439831_updated_Users.go rename to velconnect/pb_migrations/1689439831_updated_Users.go diff --git a/velconnect/migrations/1699037643_updated_Users.go b/velconnect/pb_migrations/1699037643_updated_Users.go similarity index 100% rename from velconnect/migrations/1699037643_updated_Users.go rename to velconnect/pb_migrations/1699037643_updated_Users.go diff --git a/velconnect/migrations/1701978583_updated_Users.go b/velconnect/pb_migrations/1701978583_updated_Users.go similarity index 100% rename from velconnect/migrations/1701978583_updated_Users.go rename to velconnect/pb_migrations/1701978583_updated_Users.go diff --git a/velconnect/migrations/1701981023_updated_Users.go b/velconnect/pb_migrations/1701981023_updated_Users.go similarity index 100% rename from velconnect/migrations/1701981023_updated_Users.go rename to velconnect/pb_migrations/1701981023_updated_Users.go