Compare commits
21 Commits
Author | SHA1 | Date |
---|---|---|
Piotr Rogowski | dc49a56784 | |
Piotr Rogowski | d8a04f8f5f | |
Piotr Rogowski | 7225c76f05 | |
Piotr Rogowski | 5d838d49d4 | |
Piotr Rogowski | 362738f03a | |
Piotr Rogowski | 56acd63055 | |
Piotr Rogowski | 889aab11ce | |
dependabot[bot] | 6581bca361 | |
dependabot[bot] | 9cc1b45813 | |
dependabot[bot] | 70475b4569 | |
dependabot[bot] | bde77e655f | |
dependabot[bot] | ad0cf9a960 | |
Piotr Rogowski | 6649c2ed9c | |
Piotr Rogowski | 91f01834f3 | |
dependabot[bot] | cc895af08a | |
Piotr Rogowski | 7ec1f90264 | |
Piotr Rogowski | d6bc6240d8 | |
Piotr Rogowski | e20f8e7503 | |
dependabot[bot] | 44bd4ce4d0 | |
dependabot[bot] | 45c5918b8c | |
Piotr Rogowski | 37a5a3daf1 |
|
@ -11,19 +11,19 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
name: Set up QEMU
|
name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@v2
|
uses: docker/setup-qemu-action@v3
|
||||||
-
|
-
|
||||||
name: Set up Docker Buildx
|
name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v2
|
uses: docker/setup-buildx-action@v3
|
||||||
-
|
-
|
||||||
name: Login to Docker Hub
|
name: Login to Docker Hub
|
||||||
uses: docker/login-action@v2
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
-
|
-
|
||||||
name: Build and push
|
name: Build and push
|
||||||
uses: docker/build-push-action@v3
|
uses: docker/build-push-action@v5
|
||||||
with:
|
with:
|
||||||
push: true
|
push: true
|
||||||
tags: karniv001/hypertuner-cloud-backend
|
tags: karniv001/hypertuner-cloud-backend
|
||||||
|
|
|
@ -14,23 +14,23 @@ jobs:
|
||||||
uses: olegtarasov/get-tag@v2.1.2
|
uses: olegtarasov/get-tag@v2.1.2
|
||||||
id: tagName
|
id: tagName
|
||||||
with:
|
with:
|
||||||
tagRegex: 'v(.*)'
|
tagRegex: v(.*)
|
||||||
tagRegexGroup: 1
|
tagRegexGroup: 1
|
||||||
-
|
-
|
||||||
name: Set up QEMU
|
name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@v2
|
uses: docker/setup-qemu-action@v3
|
||||||
-
|
-
|
||||||
name: Set up Docker Buildx
|
name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v2
|
uses: docker/setup-buildx-action@v3
|
||||||
-
|
-
|
||||||
name: Login to Docker Hub
|
name: Login to Docker Hub
|
||||||
uses: docker/login-action@v2
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
-
|
-
|
||||||
name: Build and push
|
name: Build and push
|
||||||
uses: docker/build-push-action@v3
|
uses: docker/build-push-action@v5
|
||||||
with:
|
with:
|
||||||
push: true
|
push: true
|
||||||
tags: karniv001/hypertuner-cloud-backend:${{ steps.tagName.outputs.tag }}
|
tags: karniv001/hypertuner-cloud-backend:${{ steps.tagName.outputs.tag }}
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
name: Lint
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.ref }}-lint
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [master]
|
||||||
|
pull_request:
|
||||||
|
branches: [master]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
# Optional: allow read access to pull request. Use with `only-new-issues` option.
|
||||||
|
# pull-requests: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
lint:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
- name: Set up Go
|
||||||
|
uses: actions/setup-go@v4
|
||||||
|
with:
|
||||||
|
go-version: '>=1.21.4'
|
||||||
|
cache: true
|
||||||
|
- name: Install dependencies
|
||||||
|
run: go get
|
||||||
|
- name: Lint
|
||||||
|
uses: golangci/golangci-lint-action@v3
|
||||||
|
with:
|
||||||
|
version: latest
|
|
@ -11,16 +11,16 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- name: Set up Go
|
- name: Set up Go
|
||||||
uses: actions/setup-go@v3
|
uses: actions/setup-go@v4
|
||||||
with:
|
with:
|
||||||
go-version: '>=1.20.3'
|
go-version: '>=1.21.4'
|
||||||
cache: true
|
cache: true
|
||||||
- name: Go release
|
- name: Go release
|
||||||
uses: goreleaser/goreleaser-action@v4
|
uses: goreleaser/goreleaser-action@v5
|
||||||
with:
|
with:
|
||||||
distribution: goreleaser
|
distribution: goreleaser
|
||||||
version: latest
|
version: latest
|
||||||
|
|
|
@ -26,6 +26,7 @@ go.work
|
||||||
# pb_data and backups
|
# pb_data and backups
|
||||||
/backup
|
/backup
|
||||||
/pb_data
|
/pb_data
|
||||||
|
/pb_data_backup
|
||||||
/pb_data.zip
|
/pb_data.zip
|
||||||
/pb_data.tar.gz
|
/pb_data.tar.gz
|
||||||
|
|
||||||
|
@ -36,3 +37,6 @@ main
|
||||||
|
|
||||||
# docker overrides
|
# docker overrides
|
||||||
docker-compose.override.yml
|
docker-compose.override.yml
|
||||||
|
|
||||||
|
# debug artifacts
|
||||||
|
__debug_bin*
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
run:
|
||||||
|
# Default: 1m
|
||||||
|
timeout: 5m
|
||||||
|
|
||||||
|
skip-dirs:
|
||||||
|
- migrations
|
||||||
|
|
||||||
|
issues:
|
||||||
|
exclude:
|
||||||
|
- Error return value of `e.Router.AddRoute` is not checked
|
|
@ -3,6 +3,7 @@
|
||||||
"golang.go",
|
"golang.go",
|
||||||
"editorconfig.editorconfig",
|
"editorconfig.editorconfig",
|
||||||
"davidanson.vscode-markdownlint",
|
"davidanson.vscode-markdownlint",
|
||||||
"streetsidesoftware.code-spell-checker"
|
"streetsidesoftware.code-spell-checker",
|
||||||
|
"trunk.io"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
// Use IntelliSense to learn about possible attributes.
|
||||||
|
// Hover to view descriptions of existing attributes.
|
||||||
|
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "Debug",
|
||||||
|
"type": "go",
|
||||||
|
"request": "launch",
|
||||||
|
"mode": "debug",
|
||||||
|
"program": "${workspaceFolder}",
|
||||||
|
"args": ["serve", "--debug"],
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -1,12 +1,17 @@
|
||||||
{
|
{
|
||||||
"cSpell.words": [
|
"cSpell.words": [
|
||||||
|
"Automigrate",
|
||||||
"Buildx",
|
"Buildx",
|
||||||
"daos",
|
"daos",
|
||||||
"DOCKERHUB",
|
"DOCKERHUB",
|
||||||
"FOME",
|
"FOME",
|
||||||
|
"golangci",
|
||||||
|
"hypertuner",
|
||||||
"labstack",
|
"labstack",
|
||||||
"Middlewares",
|
"Middlewares",
|
||||||
|
"migratecmd",
|
||||||
"pocketbase",
|
"pocketbase",
|
||||||
|
"runtimes",
|
||||||
"unstar"
|
"unstar"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
FROM golang:1.20.3 AS builder
|
FROM golang:1.21.3 AS builder
|
||||||
|
|
||||||
RUN mkdir /app
|
RUN mkdir /app
|
||||||
COPY . /app
|
COPY . /app
|
||||||
|
|
|
@ -38,7 +38,7 @@ Now you can access the admin UI at: [https://your-instance.com/_/](https://your-
|
||||||
[https://hub.docker.com/r/karniv001/hypertuner-cloud-backend](https://hub.docker.com/r/karniv001/hypertuner-cloud-backend)
|
[https://hub.docker.com/r/karniv001/hypertuner-cloud-backend](https://hub.docker.com/r/karniv001/hypertuner-cloud-backend)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker pull karniv001/hypertuner-cloud-backend:1.3.1
|
docker pull karniv001/hypertuner-cloud-backend:1.3.6
|
||||||
```
|
```
|
||||||
|
|
||||||
## Upgrading
|
## Upgrading
|
||||||
|
|
112
go.mod
112
go.mod
|
@ -1,88 +1,90 @@
|
||||||
module main
|
module main
|
||||||
|
|
||||||
go 1.19
|
go 1.21
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/labstack/echo/v5 v5.0.0-20220201181537-ed2888cfa198
|
github.com/labstack/echo/v5 v5.0.0-20230722203903-ec5b858dab61
|
||||||
github.com/pocketbase/dbx v1.10.0
|
github.com/pocketbase/dbx v1.10.1
|
||||||
github.com/pocketbase/pocketbase v0.15.2
|
github.com/pocketbase/pocketbase v0.19.4
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/AlecAivazis/survey/v2 v2.3.6 // indirect
|
github.com/AlecAivazis/survey/v2 v2.3.7 // indirect
|
||||||
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
|
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
|
||||||
github.com/aws/aws-sdk-go v1.44.249 // indirect
|
github.com/aws/aws-sdk-go v1.46.6 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2 v1.18.0 // indirect
|
github.com/aws/aws-sdk-go-v2 v1.21.2 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.10 // indirect
|
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.14 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/config v1.18.22 // indirect
|
github.com/aws/aws-sdk-go-v2/config v1.19.1 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/credentials v1.13.21 // indirect
|
github.com/aws/aws-sdk-go-v2/credentials v1.13.43 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.3 // indirect
|
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.13 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.64 // indirect
|
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.92 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.33 // indirect
|
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.43 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.27 // indirect
|
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.37 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.34 // indirect
|
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.45 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.25 // indirect
|
github.com/aws/aws-sdk-go-v2/internal/v4a v1.1.6 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.11 // indirect
|
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.15 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.28 // indirect
|
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.38 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.27 // indirect
|
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.37 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.14.2 // indirect
|
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.15.6 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/service/s3 v1.33.0 // indirect
|
github.com/aws/aws-sdk-go-v2/service/s3 v1.40.2 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/service/sso v1.12.9 // indirect
|
github.com/aws/aws-sdk-go-v2/service/sso v1.15.2 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.9 // indirect
|
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.17.3 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/service/sts v1.18.10 // indirect
|
github.com/aws/aws-sdk-go-v2/service/sts v1.23.2 // indirect
|
||||||
github.com/aws/smithy-go v1.13.5 // indirect
|
github.com/aws/smithy-go v1.15.0 // indirect
|
||||||
github.com/disintegration/imaging v1.6.2 // indirect
|
github.com/disintegration/imaging v1.6.2 // indirect
|
||||||
github.com/domodwyer/mailyak/v3 v3.6.0 // indirect
|
github.com/domodwyer/mailyak/v3 v3.6.2 // indirect
|
||||||
github.com/dustin/go-humanize v1.0.1 // indirect
|
github.com/dustin/go-humanize v1.0.1 // indirect
|
||||||
github.com/fatih/color v1.15.0 // indirect
|
github.com/fatih/color v1.15.0 // indirect
|
||||||
github.com/gabriel-vasile/mimetype v1.4.2 // indirect
|
github.com/gabriel-vasile/mimetype v1.4.3 // indirect
|
||||||
github.com/ganigeorgiev/fexpr v0.3.0 // indirect
|
github.com/ganigeorgiev/fexpr v0.3.0 // indirect
|
||||||
github.com/go-ozzo/ozzo-validation/v4 v4.3.0 // indirect
|
github.com/go-ozzo/ozzo-validation/v4 v4.3.0 // indirect
|
||||||
|
github.com/goccy/go-json v0.10.2 // indirect
|
||||||
github.com/golang-jwt/jwt/v4 v4.5.0 // indirect
|
github.com/golang-jwt/jwt/v4 v4.5.0 // indirect
|
||||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
|
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
|
||||||
github.com/golang/protobuf v1.5.3 // indirect
|
github.com/golang/protobuf v1.5.3 // indirect
|
||||||
github.com/google/uuid v1.3.0 // indirect
|
github.com/google/uuid v1.4.0 // indirect
|
||||||
github.com/google/wire v0.5.0 // indirect
|
github.com/google/wire v0.5.0 // indirect
|
||||||
github.com/googleapis/gax-go/v2 v2.8.0 // indirect
|
github.com/googleapis/gax-go/v2 v2.12.0 // indirect
|
||||||
github.com/inconshreveable/mousetrap v1.1.0 // indirect
|
github.com/inconshreveable/mousetrap v1.1.0 // indirect
|
||||||
github.com/jmespath/go-jmespath v0.4.0 // indirect
|
github.com/jmespath/go-jmespath v0.4.0 // indirect
|
||||||
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect
|
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect
|
||||||
github.com/mattn/go-colorable v0.1.13 // indirect
|
github.com/mattn/go-colorable v0.1.13 // indirect
|
||||||
github.com/mattn/go-isatty v0.0.18 // indirect
|
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||||
github.com/mattn/go-sqlite3 v1.14.16 // indirect
|
github.com/mattn/go-sqlite3 v1.14.17 // indirect
|
||||||
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d // indirect
|
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d // indirect
|
||||||
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
|
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
|
||||||
github.com/spf13/cast v1.5.0 // indirect
|
github.com/spf13/cast v1.5.1 // indirect
|
||||||
github.com/spf13/cobra v1.7.0 // indirect
|
github.com/spf13/cobra v1.7.0 // indirect
|
||||||
github.com/spf13/pflag v1.0.5 // indirect
|
github.com/spf13/pflag v1.0.5 // indirect
|
||||||
github.com/valyala/bytebufferpool v1.0.0 // indirect
|
github.com/valyala/bytebufferpool v1.0.0 // indirect
|
||||||
github.com/valyala/fasttemplate v1.2.2 // indirect
|
github.com/valyala/fasttemplate v1.2.2 // indirect
|
||||||
go.opencensus.io v0.24.0 // indirect
|
go.opencensus.io v0.24.0 // indirect
|
||||||
gocloud.dev v0.29.0 // indirect
|
gocloud.dev v0.34.0 // indirect
|
||||||
golang.org/x/crypto v0.8.0 // indirect
|
golang.org/x/crypto v0.15.0 // indirect
|
||||||
golang.org/x/image v0.7.0 // indirect
|
golang.org/x/image v0.13.0 // indirect
|
||||||
golang.org/x/mod v0.10.0 // indirect
|
golang.org/x/mod v0.14.0 // indirect
|
||||||
golang.org/x/net v0.9.0 // indirect
|
golang.org/x/net v0.18.0 // indirect
|
||||||
golang.org/x/oauth2 v0.7.0 // indirect
|
golang.org/x/oauth2 v0.13.0 // indirect
|
||||||
golang.org/x/sys v0.7.0 // indirect
|
golang.org/x/sync v0.5.0 // indirect
|
||||||
golang.org/x/term v0.7.0 // indirect
|
golang.org/x/sys v0.14.0 // indirect
|
||||||
golang.org/x/text v0.9.0 // indirect
|
golang.org/x/term v0.14.0 // indirect
|
||||||
|
golang.org/x/text v0.14.0 // indirect
|
||||||
golang.org/x/time v0.3.0 // indirect
|
golang.org/x/time v0.3.0 // indirect
|
||||||
golang.org/x/tools v0.8.0 // indirect
|
golang.org/x/tools v0.15.0 // indirect
|
||||||
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
|
golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect
|
||||||
google.golang.org/api v0.119.0 // indirect
|
google.golang.org/api v0.148.0 // indirect
|
||||||
google.golang.org/appengine v1.6.7 // indirect
|
google.golang.org/appengine v1.6.8 // indirect
|
||||||
google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b // indirect
|
||||||
google.golang.org/grpc v1.54.0 // indirect
|
google.golang.org/grpc v1.59.0 // indirect
|
||||||
google.golang.org/protobuf v1.30.0 // indirect
|
google.golang.org/protobuf v1.31.0 // indirect
|
||||||
lukechampine.com/uint128 v1.3.0 // indirect
|
lukechampine.com/uint128 v1.3.0 // indirect
|
||||||
modernc.org/cc/v3 v3.40.0 // indirect
|
modernc.org/cc/v3 v3.41.0 // indirect
|
||||||
modernc.org/ccgo/v3 v3.16.13 // indirect
|
modernc.org/ccgo/v3 v3.16.15 // indirect
|
||||||
modernc.org/libc v1.22.5 // indirect
|
modernc.org/libc v1.28.0 // indirect
|
||||||
modernc.org/mathutil v1.5.0 // indirect
|
modernc.org/mathutil v1.6.0 // indirect
|
||||||
modernc.org/memory v1.5.0 // indirect
|
modernc.org/memory v1.7.2 // indirect
|
||||||
modernc.org/opt v0.1.3 // indirect
|
modernc.org/opt v0.1.3 // indirect
|
||||||
modernc.org/sqlite v1.22.0 // indirect
|
modernc.org/sqlite v1.26.0 // indirect
|
||||||
modernc.org/strutil v1.1.3 // indirect
|
modernc.org/strutil v1.2.0 // indirect
|
||||||
modernc.org/token v1.1.0 // indirect
|
modernc.org/token v1.1.0 // indirect
|
||||||
)
|
)
|
||||||
|
|
21
main.go
21
main.go
|
@ -3,6 +3,8 @@ package main
|
||||||
import (
|
import (
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"os"
|
||||||
|
"strings"
|
||||||
|
|
||||||
_ "main/migrations"
|
_ "main/migrations"
|
||||||
|
|
||||||
|
@ -13,6 +15,7 @@ import (
|
||||||
"github.com/pocketbase/pocketbase/core"
|
"github.com/pocketbase/pocketbase/core"
|
||||||
"github.com/pocketbase/pocketbase/daos"
|
"github.com/pocketbase/pocketbase/daos"
|
||||||
"github.com/pocketbase/pocketbase/models"
|
"github.com/pocketbase/pocketbase/models"
|
||||||
|
"github.com/pocketbase/pocketbase/plugins/migratecmd"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
@ -22,6 +25,15 @@ func main() {
|
||||||
|
|
||||||
app := pocketbase.New()
|
app := pocketbase.New()
|
||||||
|
|
||||||
|
// loosely check if it was executed using "go run"
|
||||||
|
isGoRun := strings.HasPrefix(os.Args[0], os.TempDir())
|
||||||
|
|
||||||
|
migratecmd.MustRegister(app, app.RootCmd, migratecmd.Config{
|
||||||
|
// enable auto creation of migration files when making collection changes in the Admin UI
|
||||||
|
// (the isGoRun check is to enable it only during development)
|
||||||
|
Automigrate: isGoRun,
|
||||||
|
})
|
||||||
|
|
||||||
app.OnBeforeServe().Add(func(e *core.ServeEvent) error {
|
app.OnBeforeServe().Add(func(e *core.ServeEvent) error {
|
||||||
e.Router.AddRoute(echo.Route{
|
e.Router.AddRoute(echo.Route{
|
||||||
Method: http.MethodGet,
|
Method: http.MethodGet,
|
||||||
|
@ -33,10 +45,13 @@ func main() {
|
||||||
return apis.NewNotFoundError("Tune not found", nil)
|
return apis.NewNotFoundError("Tune not found", nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
apis.EnrichRecord(c, app.Dao(), record, "author")
|
if err := apis.EnrichRecord(c, app.Dao(), record, "author"); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
return c.JSON(http.StatusOK, record)
|
return c.JSON(http.StatusOK, record)
|
||||||
},
|
},
|
||||||
|
|
||||||
Middlewares: []echo.MiddlewareFunc{
|
Middlewares: []echo.MiddlewareFunc{
|
||||||
apis.ActivityLogger(app),
|
apis.ActivityLogger(app),
|
||||||
},
|
},
|
||||||
|
@ -135,6 +150,10 @@ func main() {
|
||||||
// fetch again and return current state
|
// fetch again and return current state
|
||||||
tune, _err := app.Dao().FindFirstRecordByData(tunesCollectionName, "id", stargazer.Tune)
|
tune, _err := app.Dao().FindFirstRecordByData(tunesCollectionName, "id", stargazer.Tune)
|
||||||
|
|
||||||
|
if _err != nil {
|
||||||
|
return apis.NewNotFoundError("Tune not found", nil)
|
||||||
|
}
|
||||||
|
|
||||||
return c.JSON(http.StatusOK, map[string]any{
|
return c.JSON(http.StatusOK, map[string]any{
|
||||||
"stars": tune.Get("stars").(float64),
|
"stars": tune.Get("stars").(float64),
|
||||||
"isStarred": isStarred,
|
"isStarred": isStarred,
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
package migrations
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/pocketbase/dbx"
|
|
||||||
m "github.com/pocketbase/pocketbase/migrations"
|
|
||||||
)
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
m.Register(func(db dbx.Builder) error {
|
|
||||||
// add up queries...
|
|
||||||
db.CreateUniqueIndex("stargazers", "unique_stargazers_on_user_tune", "user", "tune").Execute()
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}, func(db dbx.Builder) error {
|
|
||||||
// add down queries...
|
|
||||||
db.DropIndex("stargazers", "unique_stargazers_on_user_tune").Execute()
|
|
||||||
|
|
||||||
return nil
|
|
||||||
})
|
|
||||||
}
|
|
|
@ -0,0 +1,110 @@
|
||||||
|
package migrations
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"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 {
|
||||||
|
dao := daos.New(db);
|
||||||
|
_, err := dao.FindCollectionByNameOrId("9eif9v40b0uw9l8")
|
||||||
|
|
||||||
|
if err == nil {
|
||||||
|
fmt.Println("collection iniFiles already exists")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
jsonData := `{
|
||||||
|
"id": "9eif9v40b0uw9l8",
|
||||||
|
"created": "2023-11-20 10:50:08.919Z",
|
||||||
|
"updated": "2023-11-20 10:50:08.919Z",
|
||||||
|
"name": "iniFiles",
|
||||||
|
"type": "base",
|
||||||
|
"system": false,
|
||||||
|
"schema": [
|
||||||
|
{
|
||||||
|
"system": false,
|
||||||
|
"id": "h9yfwmvx",
|
||||||
|
"name": "signature",
|
||||||
|
"type": "text",
|
||||||
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
|
"options": {
|
||||||
|
"min": 3,
|
||||||
|
"max": 255,
|
||||||
|
"pattern": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"system": false,
|
||||||
|
"id": "z3e1a5cl",
|
||||||
|
"name": "file",
|
||||||
|
"type": "file",
|
||||||
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
|
"options": {
|
||||||
|
"maxSelect": 1,
|
||||||
|
"maxSize": 5242880,
|
||||||
|
"mimeTypes": [
|
||||||
|
"application/gzip",
|
||||||
|
"application/octet-stream"
|
||||||
|
],
|
||||||
|
"thumbs": [],
|
||||||
|
"protected": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"system": false,
|
||||||
|
"id": "t5uayom3",
|
||||||
|
"name": "ecosystem",
|
||||||
|
"type": "select",
|
||||||
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
|
"options": {
|
||||||
|
"maxSelect": 1,
|
||||||
|
"values": [
|
||||||
|
"speeduino",
|
||||||
|
"rusefi",
|
||||||
|
"fome"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"indexes": [
|
||||||
|
"CREATE INDEX ` + "`" + `officialIniFiles_created_idx` + "`" + ` ON ` + "`" + `iniFiles` + "`" + ` (` + "`" + `created` + "`" + `)",
|
||||||
|
"CREATE UNIQUE INDEX ` + "`" + `idx_unique_h9yfwmvx` + "`" + ` ON ` + "`" + `iniFiles` + "`" + ` (` + "`" + `signature` + "`" + `)"
|
||||||
|
],
|
||||||
|
"listRule": "",
|
||||||
|
"viewRule": "",
|
||||||
|
"createRule": null,
|
||||||
|
"updateRule": null,
|
||||||
|
"deleteRule": null,
|
||||||
|
"options": {}
|
||||||
|
}`
|
||||||
|
|
||||||
|
collection := &models.Collection{}
|
||||||
|
if err := json.Unmarshal([]byte(jsonData), &collection); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return daos.New(db).SaveCollection(collection)
|
||||||
|
}, func(db dbx.Builder) error {
|
||||||
|
dao := daos.New(db);
|
||||||
|
|
||||||
|
collection, err := dao.FindCollectionByNameOrId("9eif9v40b0uw9l8")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return dao.DeleteCollection(collection)
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,92 @@
|
||||||
|
package migrations
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"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 {
|
||||||
|
dao := daos.New(db);
|
||||||
|
_, err := dao.FindCollectionByNameOrId("9eif9v40b0uw9l8")
|
||||||
|
|
||||||
|
if err == nil {
|
||||||
|
fmt.Println("collection stargazers already exists")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
jsonData := `{
|
||||||
|
"id": "z8cojwcvlyxxyll",
|
||||||
|
"created": "2023-11-20 10:50:08.921Z",
|
||||||
|
"updated": "2023-11-20 10:50:08.921Z",
|
||||||
|
"name": "stargazers",
|
||||||
|
"type": "base",
|
||||||
|
"system": false,
|
||||||
|
"schema": [
|
||||||
|
{
|
||||||
|
"system": false,
|
||||||
|
"id": "him7pbq2",
|
||||||
|
"name": "user",
|
||||||
|
"type": "relation",
|
||||||
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
|
"options": {
|
||||||
|
"collectionId": "_pb_users_auth_",
|
||||||
|
"cascadeDelete": false,
|
||||||
|
"minSelect": null,
|
||||||
|
"maxSelect": 1,
|
||||||
|
"displayFields": null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"system": false,
|
||||||
|
"id": "ny7akrmn",
|
||||||
|
"name": "tune",
|
||||||
|
"type": "relation",
|
||||||
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
|
"options": {
|
||||||
|
"collectionId": "5djmpehuiigg06b",
|
||||||
|
"cascadeDelete": false,
|
||||||
|
"minSelect": null,
|
||||||
|
"maxSelect": 1,
|
||||||
|
"displayFields": null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"indexes": [
|
||||||
|
"CREATE INDEX ` + "`" + `_z8cojwcvlyxxyll_created_idx` + "`" + ` ON ` + "`" + `stargazers` + "`" + ` (` + "`" + `created` + "`" + `)",
|
||||||
|
"CREATE UNIQUE INDEX ` + "`" + `unique_stargazers_on_user_tune` + "`" + ` ON ` + "`" + `stargazers` + "`" + ` (` + "`" + `user` + "`" + `, ` + "`" + `tune` + "`" + `)"
|
||||||
|
],
|
||||||
|
"listRule": null,
|
||||||
|
"viewRule": null,
|
||||||
|
"createRule": null,
|
||||||
|
"updateRule": null,
|
||||||
|
"deleteRule": null,
|
||||||
|
"options": {}
|
||||||
|
}`
|
||||||
|
|
||||||
|
collection := &models.Collection{}
|
||||||
|
if err := json.Unmarshal([]byte(jsonData), &collection); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return daos.New(db).SaveCollection(collection)
|
||||||
|
}, func(db dbx.Builder) error {
|
||||||
|
dao := daos.New(db);
|
||||||
|
|
||||||
|
collection, err := dao.FindCollectionByNameOrId("z8cojwcvlyxxyll")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return dao.DeleteCollection(collection)
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,455 @@
|
||||||
|
package migrations
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"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 {
|
||||||
|
dao := daos.New(db);
|
||||||
|
_, err := dao.FindCollectionByNameOrId("9eif9v40b0uw9l8")
|
||||||
|
|
||||||
|
if err == nil {
|
||||||
|
fmt.Println("collection tunes already exists")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
jsonData := `{
|
||||||
|
"id": "5djmpehuiigg06b",
|
||||||
|
"created": "2023-11-20 10:50:08.921Z",
|
||||||
|
"updated": "2023-11-20 10:50:08.921Z",
|
||||||
|
"name": "tunes",
|
||||||
|
"type": "base",
|
||||||
|
"system": false,
|
||||||
|
"schema": [
|
||||||
|
{
|
||||||
|
"system": false,
|
||||||
|
"id": "io2qgnvc",
|
||||||
|
"name": "author",
|
||||||
|
"type": "relation",
|
||||||
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
|
"options": {
|
||||||
|
"collectionId": "_pb_users_auth_",
|
||||||
|
"cascadeDelete": false,
|
||||||
|
"minSelect": null,
|
||||||
|
"maxSelect": 1,
|
||||||
|
"displayFields": null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"system": false,
|
||||||
|
"id": "pkq4wfcj",
|
||||||
|
"name": "tuneId",
|
||||||
|
"type": "text",
|
||||||
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
|
"options": {
|
||||||
|
"min": 5,
|
||||||
|
"max": 255,
|
||||||
|
"pattern": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"system": false,
|
||||||
|
"id": "6gd6tzwx",
|
||||||
|
"name": "source",
|
||||||
|
"type": "select",
|
||||||
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
|
"options": {
|
||||||
|
"maxSelect": 1,
|
||||||
|
"values": [
|
||||||
|
"web",
|
||||||
|
"app"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"system": false,
|
||||||
|
"id": "jcjunqhl",
|
||||||
|
"name": "signature",
|
||||||
|
"type": "text",
|
||||||
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
|
"options": {
|
||||||
|
"min": 3,
|
||||||
|
"max": 255,
|
||||||
|
"pattern": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"system": false,
|
||||||
|
"id": "lwbwtgmx",
|
||||||
|
"name": "stars",
|
||||||
|
"type": "number",
|
||||||
|
"required": false,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
|
"options": {
|
||||||
|
"min": 0,
|
||||||
|
"max": null,
|
||||||
|
"noDecimal": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"system": false,
|
||||||
|
"id": "g9b17t9y",
|
||||||
|
"name": "vehicleName",
|
||||||
|
"type": "text",
|
||||||
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
|
"options": {
|
||||||
|
"min": 2,
|
||||||
|
"max": 255,
|
||||||
|
"pattern": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"system": false,
|
||||||
|
"id": "w7qssd4t",
|
||||||
|
"name": "engineMake",
|
||||||
|
"type": "text",
|
||||||
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
|
"options": {
|
||||||
|
"min": 2,
|
||||||
|
"max": 255,
|
||||||
|
"pattern": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"system": false,
|
||||||
|
"id": "h47ir1bi",
|
||||||
|
"name": "engineCode",
|
||||||
|
"type": "text",
|
||||||
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
|
"options": {
|
||||||
|
"min": 2,
|
||||||
|
"max": 255,
|
||||||
|
"pattern": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"system": false,
|
||||||
|
"id": "frqzy24e",
|
||||||
|
"name": "displacement",
|
||||||
|
"type": "number",
|
||||||
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
|
"options": {
|
||||||
|
"min": 0,
|
||||||
|
"max": 100,
|
||||||
|
"noDecimal": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"system": false,
|
||||||
|
"id": "j1asw8n1",
|
||||||
|
"name": "cylindersCount",
|
||||||
|
"type": "number",
|
||||||
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
|
"options": {
|
||||||
|
"min": 0,
|
||||||
|
"max": 16,
|
||||||
|
"noDecimal": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"system": false,
|
||||||
|
"id": "0x8poyze",
|
||||||
|
"name": "aspiration",
|
||||||
|
"type": "select",
|
||||||
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
|
"options": {
|
||||||
|
"maxSelect": 1,
|
||||||
|
"values": [
|
||||||
|
"na",
|
||||||
|
"turbocharged",
|
||||||
|
"supercharged"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"system": false,
|
||||||
|
"id": "ssd9iccu",
|
||||||
|
"name": "compression",
|
||||||
|
"type": "number",
|
||||||
|
"required": false,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
|
"options": {
|
||||||
|
"min": 0,
|
||||||
|
"max": 100,
|
||||||
|
"noDecimal": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"system": false,
|
||||||
|
"id": "whk0u6fg",
|
||||||
|
"name": "fuel",
|
||||||
|
"type": "text",
|
||||||
|
"required": false,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
|
"options": {
|
||||||
|
"min": null,
|
||||||
|
"max": 255,
|
||||||
|
"pattern": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"system": false,
|
||||||
|
"id": "4ydhmn21",
|
||||||
|
"name": "ignition",
|
||||||
|
"type": "text",
|
||||||
|
"required": false,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
|
"options": {
|
||||||
|
"min": null,
|
||||||
|
"max": 255,
|
||||||
|
"pattern": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"system": false,
|
||||||
|
"id": "lti2l0im",
|
||||||
|
"name": "injectorsSize",
|
||||||
|
"type": "number",
|
||||||
|
"required": false,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
|
"options": {
|
||||||
|
"min": 0,
|
||||||
|
"max": 100000,
|
||||||
|
"noDecimal": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"system": false,
|
||||||
|
"id": "pmt4jrhm",
|
||||||
|
"name": "year",
|
||||||
|
"type": "number",
|
||||||
|
"required": false,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
|
"options": {
|
||||||
|
"min": null,
|
||||||
|
"max": 2222,
|
||||||
|
"noDecimal": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"system": false,
|
||||||
|
"id": "s9fjthhs",
|
||||||
|
"name": "hp",
|
||||||
|
"type": "number",
|
||||||
|
"required": false,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
|
"options": {
|
||||||
|
"min": 0,
|
||||||
|
"max": 100000,
|
||||||
|
"noDecimal": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"system": false,
|
||||||
|
"id": "s4csjkpt",
|
||||||
|
"name": "stockHp",
|
||||||
|
"type": "number",
|
||||||
|
"required": false,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
|
"options": {
|
||||||
|
"min": 0,
|
||||||
|
"max": 100000,
|
||||||
|
"noDecimal": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"system": false,
|
||||||
|
"id": "hfpkctpl",
|
||||||
|
"name": "readme",
|
||||||
|
"type": "text",
|
||||||
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
|
"options": {
|
||||||
|
"min": 5,
|
||||||
|
"max": 3000,
|
||||||
|
"pattern": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"system": false,
|
||||||
|
"id": "dk22rxkw",
|
||||||
|
"name": "tags",
|
||||||
|
"type": "select",
|
||||||
|
"required": false,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
|
"options": {
|
||||||
|
"maxSelect": 1,
|
||||||
|
"values": [
|
||||||
|
"base map",
|
||||||
|
"help needed"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"system": false,
|
||||||
|
"id": "d5vpizsr",
|
||||||
|
"name": "textSearch",
|
||||||
|
"type": "text",
|
||||||
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
|
"options": {
|
||||||
|
"min": 1,
|
||||||
|
"max": 2048,
|
||||||
|
"pattern": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"system": false,
|
||||||
|
"id": "1bjweixt",
|
||||||
|
"name": "visibility",
|
||||||
|
"type": "select",
|
||||||
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
|
"options": {
|
||||||
|
"maxSelect": 1,
|
||||||
|
"values": [
|
||||||
|
"public",
|
||||||
|
"unlisted"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"system": false,
|
||||||
|
"id": "roqbws6u",
|
||||||
|
"name": "tuneFile",
|
||||||
|
"type": "file",
|
||||||
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
|
"options": {
|
||||||
|
"maxSelect": 1,
|
||||||
|
"maxSize": 5242880,
|
||||||
|
"mimeTypes": [
|
||||||
|
"application/gzip",
|
||||||
|
"application/octet-stream"
|
||||||
|
],
|
||||||
|
"thumbs": [],
|
||||||
|
"protected": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"system": false,
|
||||||
|
"id": "59syvgnj",
|
||||||
|
"name": "customIniFile",
|
||||||
|
"type": "file",
|
||||||
|
"required": false,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
|
"options": {
|
||||||
|
"maxSelect": 1,
|
||||||
|
"maxSize": 5242880,
|
||||||
|
"mimeTypes": [
|
||||||
|
"application/gzip",
|
||||||
|
"application/octet-stream"
|
||||||
|
],
|
||||||
|
"thumbs": [],
|
||||||
|
"protected": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"system": false,
|
||||||
|
"id": "gzccot0l",
|
||||||
|
"name": "logFiles",
|
||||||
|
"type": "file",
|
||||||
|
"required": false,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
|
"options": {
|
||||||
|
"maxSelect": 5,
|
||||||
|
"maxSize": 5242880,
|
||||||
|
"mimeTypes": [
|
||||||
|
"application/gzip",
|
||||||
|
"application/octet-stream"
|
||||||
|
],
|
||||||
|
"thumbs": [],
|
||||||
|
"protected": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"system": false,
|
||||||
|
"id": "2z0i9ttc",
|
||||||
|
"name": "toothLogFiles",
|
||||||
|
"type": "file",
|
||||||
|
"required": false,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
|
"options": {
|
||||||
|
"maxSelect": 5,
|
||||||
|
"maxSize": 5242880,
|
||||||
|
"mimeTypes": [
|
||||||
|
"application/gzip",
|
||||||
|
"application/octet-stream"
|
||||||
|
],
|
||||||
|
"thumbs": [],
|
||||||
|
"protected": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"indexes": [
|
||||||
|
"CREATE INDEX ` + "`" + `tunes_created_idx` + "`" + ` ON ` + "`" + `tunes` + "`" + ` (` + "`" + `created` + "`" + `)",
|
||||||
|
"CREATE UNIQUE INDEX ` + "`" + `idx_unique_pkq4wfcj` + "`" + ` ON ` + "`" + `tunes` + "`" + ` (` + "`" + `tuneId` + "`" + `)"
|
||||||
|
],
|
||||||
|
"listRule": "visibility = \"public\" || (visibility = \"unlisted\" && author = @request.auth.id)",
|
||||||
|
"viewRule": null,
|
||||||
|
"createRule": "@request.auth.verified = true",
|
||||||
|
"updateRule": "@request.auth.id = author",
|
||||||
|
"deleteRule": null,
|
||||||
|
"options": {}
|
||||||
|
}`
|
||||||
|
|
||||||
|
collection := &models.Collection{}
|
||||||
|
if err := json.Unmarshal([]byte(jsonData), &collection); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return daos.New(db).SaveCollection(collection)
|
||||||
|
}, func(db dbx.Builder) error {
|
||||||
|
dao := daos.New(db);
|
||||||
|
|
||||||
|
collection, err := dao.FindCollectionByNameOrId("5djmpehuiigg06b")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return dao.DeleteCollection(collection)
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,178 @@
|
||||||
|
package migrations
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/pocketbase/dbx"
|
||||||
|
"github.com/pocketbase/pocketbase/daos"
|
||||||
|
m "github.com/pocketbase/pocketbase/migrations"
|
||||||
|
"github.com/pocketbase/pocketbase/models/schema"
|
||||||
|
"github.com/pocketbase/pocketbase/tools/types"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
m.Register(func(db dbx.Builder) error {
|
||||||
|
dao := daos.New(db);
|
||||||
|
|
||||||
|
collection, err := dao.FindCollectionByNameOrId("users")
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("collection users not found")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
collection.ListRule = nil
|
||||||
|
|
||||||
|
collection.ViewRule = types.Pointer("")
|
||||||
|
|
||||||
|
collection.UpdateRule = types.Pointer("id = @request.auth.id && @request.data.verifiedAuthor = null")
|
||||||
|
|
||||||
|
collection.DeleteRule = nil
|
||||||
|
|
||||||
|
options := map[string]any{}
|
||||||
|
json.Unmarshal([]byte(`{
|
||||||
|
"allowEmailAuth": true,
|
||||||
|
"allowOAuth2Auth": true,
|
||||||
|
"allowUsernameAuth": false,
|
||||||
|
"exceptEmailDomains": null,
|
||||||
|
"manageRule": null,
|
||||||
|
"minPasswordLength": 8,
|
||||||
|
"onlyEmailDomains": null,
|
||||||
|
"requireEmail": true
|
||||||
|
}`), &options)
|
||||||
|
collection.SetOptions(options)
|
||||||
|
|
||||||
|
json.Unmarshal([]byte(`[
|
||||||
|
"CREATE INDEX ` + "`" + `_systemprofiles0_created_idx` + "`" + ` ON ` + "`" + `users` + "`" + ` (` + "`" + `created` + "`" + `)"
|
||||||
|
]`), &collection.Indexes)
|
||||||
|
|
||||||
|
// remove
|
||||||
|
collection.Schema.RemoveField("users_name")
|
||||||
|
|
||||||
|
// add
|
||||||
|
new_verifiedAuthor := &schema.SchemaField{}
|
||||||
|
json.Unmarshal([]byte(`{
|
||||||
|
"system": false,
|
||||||
|
"id": "fqmcoapu",
|
||||||
|
"name": "verifiedAuthor",
|
||||||
|
"type": "bool",
|
||||||
|
"required": false,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
|
"options": {}
|
||||||
|
}`), new_verifiedAuthor)
|
||||||
|
collection.Schema.AddField(new_verifiedAuthor)
|
||||||
|
|
||||||
|
// update
|
||||||
|
edit_avatar := &schema.SchemaField{}
|
||||||
|
json.Unmarshal([]byte(`{
|
||||||
|
"system": false,
|
||||||
|
"id": "users_avatar",
|
||||||
|
"name": "avatar",
|
||||||
|
"type": "file",
|
||||||
|
"required": false,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
|
"options": {
|
||||||
|
"maxSelect": 1,
|
||||||
|
"maxSize": 5242880,
|
||||||
|
"mimeTypes": [
|
||||||
|
"image/jpg",
|
||||||
|
"image/jpeg",
|
||||||
|
"image/png",
|
||||||
|
"image/svg+xml",
|
||||||
|
"image/gif"
|
||||||
|
],
|
||||||
|
"thumbs": null,
|
||||||
|
"protected": false
|
||||||
|
}
|
||||||
|
}`), edit_avatar)
|
||||||
|
collection.Schema.AddField(edit_avatar)
|
||||||
|
|
||||||
|
error := dao.SaveCollection(collection)
|
||||||
|
if error != nil {
|
||||||
|
fmt.Println(error)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}, func(db dbx.Builder) error {
|
||||||
|
dao := daos.New(db);
|
||||||
|
|
||||||
|
collection, err := dao.FindCollectionByNameOrId("_pb_users_auth_")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
collection.ListRule = types.Pointer("id = @request.auth.id")
|
||||||
|
|
||||||
|
collection.ViewRule = types.Pointer("id = @request.auth.id")
|
||||||
|
|
||||||
|
collection.UpdateRule = types.Pointer("id = @request.auth.id")
|
||||||
|
|
||||||
|
collection.DeleteRule = types.Pointer("id = @request.auth.id")
|
||||||
|
|
||||||
|
options := map[string]any{}
|
||||||
|
json.Unmarshal([]byte(`{
|
||||||
|
"allowEmailAuth": true,
|
||||||
|
"allowOAuth2Auth": true,
|
||||||
|
"allowUsernameAuth": true,
|
||||||
|
"exceptEmailDomains": null,
|
||||||
|
"manageRule": null,
|
||||||
|
"minPasswordLength": 8,
|
||||||
|
"onlyEmailDomains": null,
|
||||||
|
"requireEmail": false
|
||||||
|
}`), &options)
|
||||||
|
collection.SetOptions(options)
|
||||||
|
|
||||||
|
json.Unmarshal([]byte(`[]`), &collection.Indexes)
|
||||||
|
|
||||||
|
// add
|
||||||
|
del_name := &schema.SchemaField{}
|
||||||
|
json.Unmarshal([]byte(`{
|
||||||
|
"system": false,
|
||||||
|
"id": "users_name",
|
||||||
|
"name": "name",
|
||||||
|
"type": "text",
|
||||||
|
"required": false,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
|
"options": {
|
||||||
|
"min": null,
|
||||||
|
"max": null,
|
||||||
|
"pattern": ""
|
||||||
|
}
|
||||||
|
}`), del_name)
|
||||||
|
collection.Schema.AddField(del_name)
|
||||||
|
|
||||||
|
// remove
|
||||||
|
collection.Schema.RemoveField("fqmcoapu")
|
||||||
|
|
||||||
|
// update
|
||||||
|
edit_avatar := &schema.SchemaField{}
|
||||||
|
json.Unmarshal([]byte(`{
|
||||||
|
"system": false,
|
||||||
|
"id": "users_avatar",
|
||||||
|
"name": "avatar",
|
||||||
|
"type": "file",
|
||||||
|
"required": false,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
|
"options": {
|
||||||
|
"maxSelect": 1,
|
||||||
|
"maxSize": 5242880,
|
||||||
|
"mimeTypes": [
|
||||||
|
"image/jpeg",
|
||||||
|
"image/png",
|
||||||
|
"image/svg+xml",
|
||||||
|
"image/gif",
|
||||||
|
"image/webp"
|
||||||
|
],
|
||||||
|
"thumbs": null,
|
||||||
|
"protected": false
|
||||||
|
}
|
||||||
|
}`), edit_avatar)
|
||||||
|
collection.Schema.AddField(edit_avatar)
|
||||||
|
|
||||||
|
return dao.SaveCollection(collection)
|
||||||
|
})
|
||||||
|
}
|
156
pb_schema.json
156
pb_schema.json
|
@ -6,11 +6,13 @@
|
||||||
"system": false,
|
"system": false,
|
||||||
"schema": [
|
"schema": [
|
||||||
{
|
{
|
||||||
|
"system": false,
|
||||||
"id": "h9yfwmvx",
|
"id": "h9yfwmvx",
|
||||||
"name": "signature",
|
"name": "signature",
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"system": false,
|
|
||||||
"required": true,
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
"options": {
|
"options": {
|
||||||
"min": 3,
|
"min": 3,
|
||||||
"max": 255,
|
"max": 255,
|
||||||
|
@ -18,11 +20,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"system": false,
|
||||||
"id": "z3e1a5cl",
|
"id": "z3e1a5cl",
|
||||||
"name": "file",
|
"name": "file",
|
||||||
"type": "file",
|
"type": "file",
|
||||||
"system": false,
|
|
||||||
"required": true,
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
"options": {
|
"options": {
|
||||||
"maxSelect": 1,
|
"maxSelect": 1,
|
||||||
"maxSize": 5242880,
|
"maxSize": 5242880,
|
||||||
|
@ -35,11 +39,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"system": false,
|
||||||
"id": "t5uayom3",
|
"id": "t5uayom3",
|
||||||
"name": "ecosystem",
|
"name": "ecosystem",
|
||||||
"type": "select",
|
"type": "select",
|
||||||
"system": false,
|
|
||||||
"required": true,
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
"options": {
|
"options": {
|
||||||
"maxSelect": 1,
|
"maxSelect": 1,
|
||||||
"values": [
|
"values": [
|
||||||
|
@ -68,11 +74,13 @@
|
||||||
"system": false,
|
"system": false,
|
||||||
"schema": [
|
"schema": [
|
||||||
{
|
{
|
||||||
|
"system": false,
|
||||||
"id": "pbfieldavatar",
|
"id": "pbfieldavatar",
|
||||||
"name": "avatar",
|
"name": "avatar",
|
||||||
"type": "file",
|
"type": "file",
|
||||||
"system": false,
|
|
||||||
"required": false,
|
"required": false,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
"options": {
|
"options": {
|
||||||
"maxSelect": 1,
|
"maxSelect": 1,
|
||||||
"maxSize": 5242880,
|
"maxSize": 5242880,
|
||||||
|
@ -88,11 +96,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"system": false,
|
||||||
"id": "fqmcoapu",
|
"id": "fqmcoapu",
|
||||||
"name": "verifiedAuthor",
|
"name": "verifiedAuthor",
|
||||||
"type": "bool",
|
"type": "bool",
|
||||||
"system": false,
|
|
||||||
"required": false,
|
"required": false,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
"options": {}
|
"options": {}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
@ -122,11 +132,13 @@
|
||||||
"system": false,
|
"system": false,
|
||||||
"schema": [
|
"schema": [
|
||||||
{
|
{
|
||||||
|
"system": false,
|
||||||
"id": "him7pbq2",
|
"id": "him7pbq2",
|
||||||
"name": "user",
|
"name": "user",
|
||||||
"type": "relation",
|
"type": "relation",
|
||||||
"system": false,
|
|
||||||
"required": true,
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
"options": {
|
"options": {
|
||||||
"collectionId": "systemprofiles0",
|
"collectionId": "systemprofiles0",
|
||||||
"cascadeDelete": false,
|
"cascadeDelete": false,
|
||||||
|
@ -136,11 +148,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"system": false,
|
||||||
"id": "ny7akrmn",
|
"id": "ny7akrmn",
|
||||||
"name": "tune",
|
"name": "tune",
|
||||||
"type": "relation",
|
"type": "relation",
|
||||||
"system": false,
|
|
||||||
"required": true,
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
"options": {
|
"options": {
|
||||||
"collectionId": "5djmpehuiigg06b",
|
"collectionId": "5djmpehuiigg06b",
|
||||||
"cascadeDelete": false,
|
"cascadeDelete": false,
|
||||||
|
@ -168,11 +182,13 @@
|
||||||
"system": false,
|
"system": false,
|
||||||
"schema": [
|
"schema": [
|
||||||
{
|
{
|
||||||
|
"system": false,
|
||||||
"id": "io2qgnvc",
|
"id": "io2qgnvc",
|
||||||
"name": "author",
|
"name": "author",
|
||||||
"type": "relation",
|
"type": "relation",
|
||||||
"system": false,
|
|
||||||
"required": true,
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
"options": {
|
"options": {
|
||||||
"collectionId": "systemprofiles0",
|
"collectionId": "systemprofiles0",
|
||||||
"cascadeDelete": false,
|
"cascadeDelete": false,
|
||||||
|
@ -182,11 +198,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"system": false,
|
||||||
"id": "pkq4wfcj",
|
"id": "pkq4wfcj",
|
||||||
"name": "tuneId",
|
"name": "tuneId",
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"system": false,
|
|
||||||
"required": true,
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
"options": {
|
"options": {
|
||||||
"min": 5,
|
"min": 5,
|
||||||
"max": 255,
|
"max": 255,
|
||||||
|
@ -194,11 +212,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"system": false,
|
||||||
"id": "6gd6tzwx",
|
"id": "6gd6tzwx",
|
||||||
"name": "source",
|
"name": "source",
|
||||||
"type": "select",
|
"type": "select",
|
||||||
"system": false,
|
|
||||||
"required": true,
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
"options": {
|
"options": {
|
||||||
"maxSelect": 1,
|
"maxSelect": 1,
|
||||||
"values": [
|
"values": [
|
||||||
|
@ -208,11 +228,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"system": false,
|
||||||
"id": "jcjunqhl",
|
"id": "jcjunqhl",
|
||||||
"name": "signature",
|
"name": "signature",
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"system": false,
|
|
||||||
"required": true,
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
"options": {
|
"options": {
|
||||||
"min": 3,
|
"min": 3,
|
||||||
"max": 255,
|
"max": 255,
|
||||||
|
@ -220,22 +242,27 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"system": false,
|
||||||
"id": "lwbwtgmx",
|
"id": "lwbwtgmx",
|
||||||
"name": "stars",
|
"name": "stars",
|
||||||
"type": "number",
|
"type": "number",
|
||||||
"system": false,
|
|
||||||
"required": false,
|
"required": false,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
"options": {
|
"options": {
|
||||||
"min": 0,
|
"min": 0,
|
||||||
"max": null
|
"max": null,
|
||||||
|
"noDecimal": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"system": false,
|
||||||
"id": "g9b17t9y",
|
"id": "g9b17t9y",
|
||||||
"name": "vehicleName",
|
"name": "vehicleName",
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"system": false,
|
|
||||||
"required": true,
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
"options": {
|
"options": {
|
||||||
"min": 2,
|
"min": 2,
|
||||||
"max": 255,
|
"max": 255,
|
||||||
|
@ -243,11 +270,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"system": false,
|
||||||
"id": "w7qssd4t",
|
"id": "w7qssd4t",
|
||||||
"name": "engineMake",
|
"name": "engineMake",
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"system": false,
|
|
||||||
"required": true,
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
"options": {
|
"options": {
|
||||||
"min": 2,
|
"min": 2,
|
||||||
"max": 255,
|
"max": 255,
|
||||||
|
@ -255,11 +284,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"system": false,
|
||||||
"id": "h47ir1bi",
|
"id": "h47ir1bi",
|
||||||
"name": "engineCode",
|
"name": "engineCode",
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"system": false,
|
|
||||||
"required": true,
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
"options": {
|
"options": {
|
||||||
"min": 2,
|
"min": 2,
|
||||||
"max": 255,
|
"max": 255,
|
||||||
|
@ -267,33 +298,41 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"system": false,
|
||||||
"id": "frqzy24e",
|
"id": "frqzy24e",
|
||||||
"name": "displacement",
|
"name": "displacement",
|
||||||
"type": "number",
|
"type": "number",
|
||||||
"system": false,
|
|
||||||
"required": true,
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
"options": {
|
"options": {
|
||||||
"min": 0,
|
"min": 0,
|
||||||
"max": 100
|
"max": 100,
|
||||||
|
"noDecimal": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"system": false,
|
||||||
"id": "j1asw8n1",
|
"id": "j1asw8n1",
|
||||||
"name": "cylindersCount",
|
"name": "cylindersCount",
|
||||||
"type": "number",
|
"type": "number",
|
||||||
"system": false,
|
|
||||||
"required": true,
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
"options": {
|
"options": {
|
||||||
"min": 0,
|
"min": 0,
|
||||||
"max": 16
|
"max": 16,
|
||||||
|
"noDecimal": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"system": false,
|
||||||
"id": "0x8poyze",
|
"id": "0x8poyze",
|
||||||
"name": "aspiration",
|
"name": "aspiration",
|
||||||
"type": "select",
|
"type": "select",
|
||||||
"system": false,
|
|
||||||
"required": true,
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
"options": {
|
"options": {
|
||||||
"maxSelect": 1,
|
"maxSelect": 1,
|
||||||
"values": [
|
"values": [
|
||||||
|
@ -304,22 +343,27 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"system": false,
|
||||||
"id": "ssd9iccu",
|
"id": "ssd9iccu",
|
||||||
"name": "compression",
|
"name": "compression",
|
||||||
"type": "number",
|
"type": "number",
|
||||||
"system": false,
|
|
||||||
"required": false,
|
"required": false,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
"options": {
|
"options": {
|
||||||
"min": 0,
|
"min": 0,
|
||||||
"max": 100
|
"max": 100,
|
||||||
|
"noDecimal": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"system": false,
|
||||||
"id": "whk0u6fg",
|
"id": "whk0u6fg",
|
||||||
"name": "fuel",
|
"name": "fuel",
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"system": false,
|
|
||||||
"required": false,
|
"required": false,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
"options": {
|
"options": {
|
||||||
"min": null,
|
"min": null,
|
||||||
"max": 255,
|
"max": 255,
|
||||||
|
@ -327,11 +371,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"system": false,
|
||||||
"id": "4ydhmn21",
|
"id": "4ydhmn21",
|
||||||
"name": "ignition",
|
"name": "ignition",
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"system": false,
|
|
||||||
"required": false,
|
"required": false,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
"options": {
|
"options": {
|
||||||
"min": null,
|
"min": null,
|
||||||
"max": 255,
|
"max": 255,
|
||||||
|
@ -339,55 +385,69 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"system": false,
|
||||||
"id": "lti2l0im",
|
"id": "lti2l0im",
|
||||||
"name": "injectorsSize",
|
"name": "injectorsSize",
|
||||||
"type": "number",
|
"type": "number",
|
||||||
"system": false,
|
|
||||||
"required": false,
|
"required": false,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
"options": {
|
"options": {
|
||||||
"min": 0,
|
"min": 0,
|
||||||
"max": 100000
|
"max": 100000,
|
||||||
|
"noDecimal": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"system": false,
|
||||||
"id": "pmt4jrhm",
|
"id": "pmt4jrhm",
|
||||||
"name": "year",
|
"name": "year",
|
||||||
"type": "number",
|
"type": "number",
|
||||||
"system": false,
|
|
||||||
"required": false,
|
"required": false,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
"options": {
|
"options": {
|
||||||
"min": null,
|
"min": null,
|
||||||
"max": 2222
|
"max": 2222,
|
||||||
|
"noDecimal": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"system": false,
|
||||||
"id": "s9fjthhs",
|
"id": "s9fjthhs",
|
||||||
"name": "hp",
|
"name": "hp",
|
||||||
"type": "number",
|
"type": "number",
|
||||||
"system": false,
|
|
||||||
"required": false,
|
"required": false,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
"options": {
|
"options": {
|
||||||
"min": 0,
|
"min": 0,
|
||||||
"max": 100000
|
"max": 100000,
|
||||||
|
"noDecimal": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"system": false,
|
||||||
"id": "s4csjkpt",
|
"id": "s4csjkpt",
|
||||||
"name": "stockHp",
|
"name": "stockHp",
|
||||||
"type": "number",
|
"type": "number",
|
||||||
"system": false,
|
|
||||||
"required": false,
|
"required": false,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
"options": {
|
"options": {
|
||||||
"min": 0,
|
"min": 0,
|
||||||
"max": 100000
|
"max": 100000,
|
||||||
|
"noDecimal": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"system": false,
|
||||||
"id": "hfpkctpl",
|
"id": "hfpkctpl",
|
||||||
"name": "readme",
|
"name": "readme",
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"system": false,
|
|
||||||
"required": true,
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
"options": {
|
"options": {
|
||||||
"min": 5,
|
"min": 5,
|
||||||
"max": 3000,
|
"max": 3000,
|
||||||
|
@ -395,11 +455,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"system": false,
|
||||||
"id": "dk22rxkw",
|
"id": "dk22rxkw",
|
||||||
"name": "tags",
|
"name": "tags",
|
||||||
"type": "select",
|
"type": "select",
|
||||||
"system": false,
|
|
||||||
"required": false,
|
"required": false,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
"options": {
|
"options": {
|
||||||
"maxSelect": 1,
|
"maxSelect": 1,
|
||||||
"values": [
|
"values": [
|
||||||
|
@ -409,11 +471,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"system": false,
|
||||||
"id": "d5vpizsr",
|
"id": "d5vpizsr",
|
||||||
"name": "textSearch",
|
"name": "textSearch",
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"system": false,
|
|
||||||
"required": true,
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
"options": {
|
"options": {
|
||||||
"min": 1,
|
"min": 1,
|
||||||
"max": 2048,
|
"max": 2048,
|
||||||
|
@ -421,11 +485,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"system": false,
|
||||||
"id": "1bjweixt",
|
"id": "1bjweixt",
|
||||||
"name": "visibility",
|
"name": "visibility",
|
||||||
"type": "select",
|
"type": "select",
|
||||||
"system": false,
|
|
||||||
"required": true,
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
"options": {
|
"options": {
|
||||||
"maxSelect": 1,
|
"maxSelect": 1,
|
||||||
"values": [
|
"values": [
|
||||||
|
@ -435,11 +501,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"system": false,
|
||||||
"id": "roqbws6u",
|
"id": "roqbws6u",
|
||||||
"name": "tuneFile",
|
"name": "tuneFile",
|
||||||
"type": "file",
|
"type": "file",
|
||||||
"system": false,
|
|
||||||
"required": true,
|
"required": true,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
"options": {
|
"options": {
|
||||||
"maxSelect": 1,
|
"maxSelect": 1,
|
||||||
"maxSize": 5242880,
|
"maxSize": 5242880,
|
||||||
|
@ -452,11 +520,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"system": false,
|
||||||
"id": "59syvgnj",
|
"id": "59syvgnj",
|
||||||
"name": "customIniFile",
|
"name": "customIniFile",
|
||||||
"type": "file",
|
"type": "file",
|
||||||
"system": false,
|
|
||||||
"required": false,
|
"required": false,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
"options": {
|
"options": {
|
||||||
"maxSelect": 1,
|
"maxSelect": 1,
|
||||||
"maxSize": 5242880,
|
"maxSize": 5242880,
|
||||||
|
@ -469,11 +539,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"system": false,
|
||||||
"id": "gzccot0l",
|
"id": "gzccot0l",
|
||||||
"name": "logFiles",
|
"name": "logFiles",
|
||||||
"type": "file",
|
"type": "file",
|
||||||
"system": false,
|
|
||||||
"required": false,
|
"required": false,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
"options": {
|
"options": {
|
||||||
"maxSelect": 5,
|
"maxSelect": 5,
|
||||||
"maxSize": 5242880,
|
"maxSize": 5242880,
|
||||||
|
@ -486,11 +558,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"system": false,
|
||||||
"id": "2z0i9ttc",
|
"id": "2z0i9ttc",
|
||||||
"name": "toothLogFiles",
|
"name": "toothLogFiles",
|
||||||
"type": "file",
|
"type": "file",
|
||||||
"system": false,
|
|
||||||
"required": false,
|
"required": false,
|
||||||
|
"presentable": false,
|
||||||
|
"unique": false,
|
||||||
"options": {
|
"options": {
|
||||||
"maxSelect": 5,
|
"maxSelect": 5,
|
||||||
"maxSize": 5242880,
|
"maxSize": 5242880,
|
||||||
|
|
Loading…
Reference in New Issue