forked from codefreshdemo/cf-example-golang-hello-world
-
Notifications
You must be signed in to change notification settings - Fork 0
/
doc.go
186 lines (139 loc) · 4.89 KB
/
doc.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
/*
pREST - Serve a RESTful API from any PostgreSQL database
Install
go install github.com/nuveo/prest
Run
Params:
- PREST\_HTTP_PORT (default 3000)
- PREST\_PG_HOST (default 127.0.0.1)
- PREST\_PG_USER
- PREST\_PG_PASS
- PREST\_PG_DATABASE
- PREST\_PG_PORT
- PREST\_JWT_KEY
```
PREST_PG_USER=postgres PREST_PG_DATABASE=prest PREST_PG_PORT=5432 PREST_HTTP_PORT=3010 prest # Binary installed
```
Migrations
`--url` and `--path` flags are optional if pREST configurations already set
```bash
# env var for migrations directory
PREST_MIGRATIONS
# create new migration file in path
prest migrate --url driver://url --path ./migrations create migration_file_xyz
# apply all available migrations
prest migrate --url driver://url --path ./migrations up
# roll back all migrations
prest migrate --url driver://url --path ./migrations down
# roll back the most recently applied migration, then run it again.
prest migrate --url driver://url --path ./migrations redo
# run down and then up command
prest migrate --url driver://url --path ./migrations reset
# show the current migration version
prest migrate --url driver://url --path ./migrations version
# apply the next n migrations
prest migrate --url driver://url --path ./migrations next +1
prest migrate --url driver://url --path ./migrations next +2
prest migrate --url driver://url --path ./migrations next +n
# roll back the previous n migrations
prest migrate --url driver://url --path ./migrations next -1
prest migrate --url driver://url --path ./migrations next -2
prest migrate --url driver://url --path ./migrations next -n
# go to specific migration
prest migrate --url driver://url --path ./migrations goto 1
prest migrate --url driver://url --path ./migrations goto 10
prest migrate --url driver://url --path ./migrations goto v
```
TOML
Optionally the pREST can be configured by TOML file
- Set `PREST_CONF` environment variable with file path
```toml
migrations = "./migrations"
[http]
port = 6000
[jwt]
key = "mysecretkey"
[pg]
host = "127.0.0.1"
user = "postgres"
pass = "mypass"
port = 5432
database = "prest"
```
API`s
HEADER:
- To start JWT middleware the `PREST_JWT_KEY` environment variable must be set
```
Authorization: JWT eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
```
### Filter (WHERE) with JSONb field
```
http://127.0.0.1:8000/DATABASE/SCHEMA/TABLE?FIELD->>JSONFIELD:jsonb=VALUE (filter)
```
### Select - GET
```
http://127.0.0.1:8000/databases (show all databases)
http://127.0.0.1:8000/schemas (show all schemas)
http://127.0.0.1:8000/tables (show all tables)
http://127.0.0.1:8000/DATABASE/SCHEMA (show all tables, find by schema)
http://127.0.0.1:8000/DATABASE/SCHEMA/TABLE (show all rows, find by database and table)
http://127.0.0.1:8000/DATABASE/SCHEMA/TABLE?_page=2&_page_size=10 (pagination, page_size 10 by default)
http://127.0.0.1:8000/DATABASE/SCHEMA/TABLE?FIELD=VALUE (filter)
http://127.0.0.1:8000/DATABASE/SCHEMA/TABLE?_renderer=xml (JSON by default)
```
### Insert - POST
```
http://127.0.0.1:8000/DATABASE/SCHEMA/TABLE
```
JSON DATA:
```
{
"data": {
"FIELD1": "string value",
"FIELD2": 1234567890
}
}
```
### Update - PATCH/PUT
Using query string to make filter (WHERE), example:
```
http://127.0.0.1:8000/DATABASE/SCHEMA/TABLE?FIELD1=xyz
```
JSON DATA:
```
{
"data": {
"FIELD1": "string value",
"FIELD2": 1234567890
}
}
```
### Delete - DELETE
Using query string to make filter (WHERE), example:
```
http://127.0.0.1:8000/DATABASE/SCHEMA/TABLE?FIELD1=xyz
```
## JOIN
Using query string to JOIN tables, example:
```
/DATABASE/SCHEMA/TABLE??_join=inner:users:friends.userid:$eq:users.id
```
Parameters:
1. Join type
1. Table
1. Table field 1
1. Operator (=, <, >, <=, >=)
1. Table field 2
Query Operators:
| Name | Description |
|-------|-------------|
| $eq | Matches values that are equal to a specified value.|
| $gt | Matches values that are greater than a specified value.|
| $gte | Matches values that are greater than or equal to a specified value.|
| $lt | Matches values that are less than a specified value.|
| $lte | Matches values that are less than or equal to a specified value.|
| $ne | Matches all values that are not equal to a specified value.|
| $in | Matches any of the values specified in an array.|
| $nin | Matches none of the values specified in an array.|
*/
package main