gitch
290 строк · 6.0 Кб
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:37:11.823Z",
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-16 13:06:40.854Z",
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"system": false,
140"id": "vagdzusl",
141"name": "service",
142"type": "relation",
143"required": false,
144"presentable": false,
145"unique": false,
146"options": {
147"collectionId": "t14vqfls0q3yiv2",
148"cascadeDelete": false,
149"minSelect": null,
150"maxSelect": 1,
151"displayFields": null
152}
153}
154],
155"indexes": [],
156"listRule": null,
157"viewRule": null,
158"createRule": null,
159"updateRule": null,
160"deleteRule": null,
161"options": {}
162},
163{
164"id": "t9t4ngqknmzg2zw",
165"created": "2024-09-12 20:54:57.694Z",
166"updated": "2024-09-12 21:37:11.824Z",
167"name": "settings",
168"type": "base",
169"system": false,
170"schema": [
171{
172"system": false,
173"id": "fls8wlww",
174"name": "key",
175"type": "text",
176"required": true,
177"presentable": false,
178"unique": false,
179"options": {
180"min": null,
181"max": null,
182"pattern": ""
183}
184},
185{
186"system": false,
187"id": "vqstkr9u",
188"name": "value",
189"type": "text",
190"required": false,
191"presentable": false,
192"unique": false,
193"options": {
194"min": null,
195"max": null,
196"pattern": ""
197}
198}
199],
200"indexes": [
201"CREATE UNIQUE INDEX ` + "`" + `idx_fig8mm1` + "`" + ` ON ` + "`" + `settings` + "`" + ` (` + "`" + `key` + "`" + `)"
202],
203"listRule": null,
204"viewRule": null,
205"createRule": null,
206"updateRule": null,
207"deleteRule": null,
208"options": {}
209},
210{
211"id": "t14vqfls0q3yiv2",
212"created": "2024-09-16 13:04:55.796Z",
213"updated": "2024-09-16 13:04:55.796Z",
214"name": "services",
215"type": "base",
216"system": false,
217"schema": [
218{
219"system": false,
220"id": "7dmnsdzh",
221"name": "name",
222"type": "text",
223"required": false,
224"presentable": false,
225"unique": false,
226"options": {
227"min": null,
228"max": null,
229"pattern": ""
230}
231},
232{
233"system": false,
234"id": "sxbwhuds",
235"name": "period",
236"type": "text",
237"required": false,
238"presentable": false,
239"unique": false,
240"options": {
241"min": null,
242"max": null,
243"pattern": ""
244}
245},
246{
247"system": false,
248"id": "bxbxk2aw",
249"name": "key",
250"type": "text",
251"required": false,
252"presentable": false,
253"unique": false,
254"options": {
255"min": null,
256"max": null,
257"pattern": ""
258}
259},
260{
261"system": false,
262"id": "vnfj39v8",
263"name": "enabled",
264"type": "bool",
265"required": false,
266"presentable": false,
267"unique": false,
268"options": {}
269}
270],
271"indexes": [],
272"listRule": null,
273"viewRule": null,
274"createRule": null,
275"updateRule": null,
276"deleteRule": null,
277"options": {}
278}
279]`
280
281collections := []*models.Collection{}
282if err := json.Unmarshal([]byte(jsonData), &collections); err != nil {
283return err
284}
285
286return daos.New(db).ImportCollections(collections, true, nil)
287}, func(db dbx.Builder) error {
288return nil
289})
290}
291