gitch
205 строк · 4.3 Кб
1package migrations
2
3import (
4"encoding/json"
5
6"github.com/pocketbase/dbx"
7"github.com/pocketbase/pocketbase/daos"
8m "github.com/pocketbase/pocketbase/migrations"
9"github.com/pocketbase/pocketbase/models"
10)
11
12func init() {
13m.Register(func(db dbx.Builder) error {
14jsonData := `[
15{
16"id": "_pb_users_auth_",
17"created": "2024-09-12 20:52:11.896Z",
18"updated": "2024-09-12 21:00:18.272Z",
19"name": "users",
20"type": "auth",
21"system": false,
22"schema": [
23{
24"system": false,
25"id": "users_name",
26"name": "name",
27"type": "text",
28"required": false,
29"presentable": false,
30"unique": false,
31"options": {
32"min": null,
33"max": null,
34"pattern": ""
35}
36},
37{
38"system": false,
39"id": "users_avatar",
40"name": "avatar",
41"type": "file",
42"required": false,
43"presentable": false,
44"unique": false,
45"options": {
46"mimeTypes": [
47"image/jpeg",
48"image/png",
49"image/svg+xml",
50"image/gif",
51"image/webp"
52],
53"thumbs": null,
54"maxSelect": 1,
55"maxSize": 5242880,
56"protected": false
57}
58}
59],
60"indexes": [],
61"listRule": "id = @request.auth.id",
62"viewRule": "id = @request.auth.id",
63"createRule": "",
64"updateRule": "id = @request.auth.id",
65"deleteRule": "id = @request.auth.id",
66"options": {
67"allowEmailAuth": true,
68"allowOAuth2Auth": true,
69"allowUsernameAuth": true,
70"exceptEmailDomains": null,
71"manageRule": null,
72"minPasswordLength": 8,
73"onlyEmailDomains": null,
74"onlyVerified": false,
75"requireEmail": false
76}
77},
78{
79"id": "igxbyc464ycs1s7",
80"created": "2024-09-12 20:53:56.741Z",
81"updated": "2024-09-12 21:00:34.979Z",
82"name": "projects",
83"type": "base",
84"system": false,
85"schema": [
86{
87"system": false,
88"id": "beduevxv",
89"name": "name",
90"type": "text",
91"required": false,
92"presentable": false,
93"unique": false,
94"options": {
95"min": null,
96"max": null,
97"pattern": ""
98}
99},
100{
101"system": false,
102"id": "58lvf09w",
103"name": "from",
104"type": "text",
105"required": false,
106"presentable": false,
107"unique": false,
108"options": {
109"min": null,
110"max": null,
111"pattern": ""
112}
113},
114{
115"system": false,
116"id": "1anftqzv",
117"name": "to",
118"type": "text",
119"required": false,
120"presentable": false,
121"unique": false,
122"options": {
123"min": null,
124"max": null,
125"pattern": ""
126}
127},
128{
129"system": false,
130"id": "25thpav4",
131"name": "enabled",
132"type": "bool",
133"required": false,
134"presentable": false,
135"unique": false,
136"options": {}
137}
138],
139"indexes": [],
140"listRule": null,
141"viewRule": null,
142"createRule": null,
143"updateRule": null,
144"deleteRule": null,
145"options": {}
146},
147{
148"id": "t9t4ngqknmzg2zw",
149"created": "2024-09-12 20:54:57.694Z",
150"updated": "2024-09-12 21:00:18.272Z",
151"name": "settings",
152"type": "base",
153"system": false,
154"schema": [
155{
156"system": false,
157"id": "fls8wlww",
158"name": "key",
159"type": "text",
160"required": true,
161"presentable": false,
162"unique": false,
163"options": {
164"min": null,
165"max": null,
166"pattern": ""
167}
168},
169{
170"system": false,
171"id": "vqstkr9u",
172"name": "value",
173"type": "text",
174"required": false,
175"presentable": false,
176"unique": false,
177"options": {
178"min": null,
179"max": null,
180"pattern": ""
181}
182}
183],
184"indexes": [
185"CREATE UNIQUE INDEX ` + "`" + `idx_fig8mm1` + "`" + ` ON ` + "`" + `settings` + "`" + ` (` + "`" + `key` + "`" + `)"
186],
187"listRule": null,
188"viewRule": null,
189"createRule": null,
190"updateRule": null,
191"deleteRule": null,
192"options": {}
193}
194]`
195
196collections := []*models.Collection{}
197if err := json.Unmarshal([]byte(jsonData), &collections); err != nil {
198return err
199}
200
201return daos.New(db).ImportCollections(collections, true, nil)
202}, func(db dbx.Builder) error {
203return nil
204})
205}
206