Skip to content

Commit 4cf4289

Browse files
committed
initial commit
0 parents  commit 4cf4289

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+7002
-0
lines changed

backend/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
pb_data

backend/Dockerfile.backend

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
FROM alpine:latest
2+
3+
ARG PB_VERSION=0.28.2
4+
5+
RUN apk add --no-cache \
6+
unzip \
7+
ca-certificates
8+
9+
# download and unzip PocketBase
10+
ADD https://github.com/pocketbase/pocketbase/releases/download/v${PB_VERSION}/pocketbase_${PB_VERSION}_linux_amd64.zip /tmp/pb.zip
11+
RUN unzip /tmp/pb.zip -d /pb/
12+
13+
COPY ./pb_migrations /pb/pb_migrations
14+
COPY ./pb_hooks /pb/pb_hooks
15+
16+
EXPOSE 8080
17+
18+
# start PocketBase
19+
CMD ["/pb/pocketbase", "serve", "--http=0.0.0.0:8080"]

backend/pb_hooks/main.pb.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/// <reference path="../pb_data/types.d.ts" />
2+
3+
onRecordCreate((e) => {
4+
$app.findRecordsByIds("pets", e.record.get("pets")).forEach((pet) => {
5+
pet.set("status", "pending");
6+
$app.save(pet);
7+
});
8+
9+
e.next();
10+
}, "orders");
11+
12+
onRecordUpdate((e) => {
13+
if (e.record.getString("status") === "approved") {
14+
$app.findRecordsByIds("pets", e.record.get("pets")).forEach((pet) => {
15+
pet.set("status", "sold");
16+
$app.save(pet);
17+
});
18+
}
19+
20+
e.next();
21+
}, "orders");
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
/// <reference path="../pb_data/types.d.ts" />
2+
migrate((app) => {
3+
const collection = new Collection({
4+
"createRule": null,
5+
"deleteRule": null,
6+
"fields": [
7+
{
8+
"autogeneratePattern": "[a-z0-9]{15}",
9+
"hidden": false,
10+
"id": "text3208210256",
11+
"max": 15,
12+
"min": 15,
13+
"name": "id",
14+
"pattern": "^[a-z0-9]+$",
15+
"presentable": false,
16+
"primaryKey": true,
17+
"required": true,
18+
"system": true,
19+
"type": "text"
20+
},
21+
{
22+
"autogeneratePattern": "",
23+
"hidden": false,
24+
"id": "text1579384326",
25+
"max": 0,
26+
"min": 0,
27+
"name": "name",
28+
"pattern": "",
29+
"presentable": false,
30+
"primaryKey": false,
31+
"required": true,
32+
"system": false,
33+
"type": "text"
34+
},
35+
{
36+
"hidden": false,
37+
"id": "file142008537",
38+
"maxSelect": 5,
39+
"maxSize": 0,
40+
"mimeTypes": [
41+
"image/jpeg",
42+
"image/png",
43+
"image/svg+xml",
44+
"image/gif",
45+
"image/webp"
46+
],
47+
"name": "photos",
48+
"presentable": false,
49+
"protected": false,
50+
"required": false,
51+
"system": false,
52+
"thumbs": [],
53+
"type": "file"
54+
},
55+
{
56+
"hidden": false,
57+
"id": "select2063623452",
58+
"maxSelect": 1,
59+
"name": "status",
60+
"presentable": false,
61+
"required": true,
62+
"system": false,
63+
"type": "select",
64+
"values": [
65+
"available",
66+
"pending",
67+
"sold"
68+
]
69+
},
70+
{
71+
"hidden": false,
72+
"id": "autodate2990389176",
73+
"name": "created",
74+
"onCreate": true,
75+
"onUpdate": false,
76+
"presentable": false,
77+
"system": false,
78+
"type": "autodate"
79+
},
80+
{
81+
"hidden": false,
82+
"id": "autodate3332085495",
83+
"name": "updated",
84+
"onCreate": true,
85+
"onUpdate": true,
86+
"presentable": false,
87+
"system": false,
88+
"type": "autodate"
89+
}
90+
],
91+
"id": "pbc_2704641423",
92+
"indexes": [],
93+
"listRule": null,
94+
"name": "pets",
95+
"system": false,
96+
"type": "base",
97+
"updateRule": null,
98+
"viewRule": null
99+
});
100+
101+
return app.save(collection);
102+
}, (app) => {
103+
const collection = app.findCollectionByNameOrId("pbc_2704641423");
104+
105+
return app.delete(collection);
106+
})
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
/// <reference path="../pb_data/types.d.ts" />
2+
migrate((app) => {
3+
const collection = new Collection({
4+
"createRule": null,
5+
"deleteRule": null,
6+
"fields": [
7+
{
8+
"autogeneratePattern": "[a-z0-9]{15}",
9+
"hidden": false,
10+
"id": "text3208210256",
11+
"max": 15,
12+
"min": 15,
13+
"name": "id",
14+
"pattern": "^[a-z0-9]+$",
15+
"presentable": false,
16+
"primaryKey": true,
17+
"required": true,
18+
"system": true,
19+
"type": "text"
20+
},
21+
{
22+
"autogeneratePattern": "",
23+
"hidden": false,
24+
"id": "text1579384326",
25+
"max": 0,
26+
"min": 0,
27+
"name": "name",
28+
"pattern": "",
29+
"presentable": false,
30+
"primaryKey": false,
31+
"required": true,
32+
"system": false,
33+
"type": "text"
34+
},
35+
{
36+
"hidden": false,
37+
"id": "autodate2990389176",
38+
"name": "created",
39+
"onCreate": true,
40+
"onUpdate": false,
41+
"presentable": false,
42+
"system": false,
43+
"type": "autodate"
44+
},
45+
{
46+
"hidden": false,
47+
"id": "autodate3332085495",
48+
"name": "updated",
49+
"onCreate": true,
50+
"onUpdate": true,
51+
"presentable": false,
52+
"system": false,
53+
"type": "autodate"
54+
}
55+
],
56+
"id": "pbc_3292755704",
57+
"indexes": [
58+
"CREATE UNIQUE INDEX `idx_wa5PLdoTt3` ON `categories` (`name`)"
59+
],
60+
"listRule": null,
61+
"name": "categories",
62+
"system": false,
63+
"type": "base",
64+
"updateRule": null,
65+
"viewRule": null
66+
});
67+
68+
return app.save(collection);
69+
}, (app) => {
70+
const collection = app.findCollectionByNameOrId("pbc_3292755704");
71+
72+
return app.delete(collection);
73+
})
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/// <reference path="../pb_data/types.d.ts" />
2+
migrate((app) => {
3+
const collection = app.findCollectionByNameOrId("pbc_2704641423")
4+
5+
// add field
6+
collection.fields.addAt(4, new Field({
7+
"cascadeDelete": false,
8+
"collectionId": "pbc_3292755704",
9+
"hidden": false,
10+
"id": "relation105650625",
11+
"maxSelect": 1,
12+
"minSelect": 0,
13+
"name": "category",
14+
"presentable": false,
15+
"required": false,
16+
"system": false,
17+
"type": "relation"
18+
}))
19+
20+
return app.save(collection)
21+
}, (app) => {
22+
const collection = app.findCollectionByNameOrId("pbc_2704641423")
23+
24+
// remove field
25+
collection.fields.removeById("relation105650625")
26+
27+
return app.save(collection)
28+
})
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
/// <reference path="../pb_data/types.d.ts" />
2+
migrate((app) => {
3+
const collection = new Collection({
4+
"createRule": null,
5+
"deleteRule": null,
6+
"fields": [
7+
{
8+
"autogeneratePattern": "[a-z0-9]{15}",
9+
"hidden": false,
10+
"id": "text3208210256",
11+
"max": 15,
12+
"min": 15,
13+
"name": "id",
14+
"pattern": "^[a-z0-9]+$",
15+
"presentable": false,
16+
"primaryKey": true,
17+
"required": true,
18+
"system": true,
19+
"type": "text"
20+
},
21+
{
22+
"cascadeDelete": false,
23+
"collectionId": "pbc_2704641423",
24+
"hidden": false,
25+
"id": "relation2251876927",
26+
"maxSelect": 999,
27+
"minSelect": 0,
28+
"name": "pets",
29+
"presentable": false,
30+
"required": true,
31+
"system": false,
32+
"type": "relation"
33+
},
34+
{
35+
"hidden": false,
36+
"id": "date1576173484",
37+
"max": "",
38+
"min": "",
39+
"name": "shipped",
40+
"presentable": false,
41+
"required": false,
42+
"system": false,
43+
"type": "date"
44+
},
45+
{
46+
"hidden": false,
47+
"id": "select2063623452",
48+
"maxSelect": 1,
49+
"name": "status",
50+
"presentable": false,
51+
"required": false,
52+
"system": false,
53+
"type": "select",
54+
"values": [
55+
"placed",
56+
"approved",
57+
"delivered"
58+
]
59+
},
60+
{
61+
"hidden": false,
62+
"id": "bool1114099747",
63+
"name": "complete",
64+
"presentable": false,
65+
"required": false,
66+
"system": false,
67+
"type": "bool"
68+
},
69+
{
70+
"hidden": false,
71+
"id": "autodate2990389176",
72+
"name": "created",
73+
"onCreate": true,
74+
"onUpdate": false,
75+
"presentable": false,
76+
"system": false,
77+
"type": "autodate"
78+
},
79+
{
80+
"hidden": false,
81+
"id": "autodate3332085495",
82+
"name": "updated",
83+
"onCreate": true,
84+
"onUpdate": true,
85+
"presentable": false,
86+
"system": false,
87+
"type": "autodate"
88+
}
89+
],
90+
"id": "pbc_3527180448",
91+
"indexes": [],
92+
"listRule": null,
93+
"name": "orders",
94+
"system": false,
95+
"type": "base",
96+
"updateRule": null,
97+
"viewRule": null
98+
});
99+
100+
return app.save(collection);
101+
}, (app) => {
102+
const collection = app.findCollectionByNameOrId("pbc_3527180448");
103+
104+
return app.delete(collection);
105+
})

0 commit comments

Comments
 (0)