mirror of
https://github.com/gofiber/storage.git
synced 2025-09-27 21:02:20 +08:00
Compare commits
490 Commits
mongodb/v1
...
coherence/
Author | SHA1 | Date | |
---|---|---|---|
![]() |
861ed0de56 | ||
![]() |
947221b4fb | ||
![]() |
0579065c4c | ||
![]() |
df27520950 | ||
![]() |
aacefe5192 | ||
![]() |
62a7e09e0d | ||
![]() |
a6d0384463 | ||
![]() |
dc81749d44 | ||
![]() |
11423e276a | ||
![]() |
4ca664384d | ||
![]() |
287ddc84da | ||
![]() |
5c80a1463b | ||
![]() |
943166ff54 | ||
![]() |
ff142d955f | ||
![]() |
8d2fbb7eb6 | ||
![]() |
d91fcfedd7 | ||
![]() |
ffc4ad7fd3 | ||
![]() |
fe8f993a09 | ||
![]() |
2e0424da1b | ||
![]() |
9e70dd7aea | ||
![]() |
67893bd836 | ||
![]() |
c9d759856f | ||
![]() |
b88fd4b669 | ||
![]() |
acf5d5e908 | ||
![]() |
b04c6f55ab | ||
![]() |
7aac904d3c | ||
![]() |
77f2925eb3 | ||
![]() |
a90bf53050 | ||
![]() |
e1a47955c4 | ||
![]() |
1c64281504 | ||
![]() |
4f767a442f | ||
![]() |
d8196abb41 | ||
![]() |
efd18a5221 | ||
![]() |
c13002a7cf | ||
![]() |
16297b41e4 | ||
![]() |
9efee1f3fd | ||
![]() |
97801c76d1 | ||
![]() |
f0c98a8d8a | ||
![]() |
9a68dda690 | ||
![]() |
9703f07095 | ||
![]() |
e3348774d5 | ||
![]() |
5b6ee8d932 | ||
![]() |
c226e12e98 | ||
![]() |
02a2c19bf6 | ||
![]() |
7d3e9bd163 | ||
![]() |
5e68bddd6b | ||
![]() |
1d3b96559f | ||
![]() |
65350fb284 | ||
![]() |
882dfc4741 | ||
![]() |
83671bae11 | ||
![]() |
f38613bb8d | ||
![]() |
43daa3c38f | ||
![]() |
f3982278e6 | ||
![]() |
d214e31e38 | ||
![]() |
ce198b356f | ||
![]() |
aa3e354dd5 | ||
![]() |
cd50c3984e | ||
![]() |
7780bb0835 | ||
![]() |
5e41163c09 | ||
![]() |
e2dbf474d8 | ||
![]() |
9bc2d17db3 | ||
![]() |
f09e7dd6b3 | ||
![]() |
171768b257 | ||
![]() |
2ba75947e3 | ||
![]() |
6ec8ea5fe1 | ||
![]() |
d6d4099b08 | ||
![]() |
7d20c7c120 | ||
![]() |
a422c6c644 | ||
![]() |
9737e2d4ed | ||
![]() |
a3d7a1a2ed | ||
![]() |
2290b36a60 | ||
![]() |
758db5b001 | ||
![]() |
399f853aa9 | ||
![]() |
9cd1c62ffa | ||
![]() |
e3d9a2c985 | ||
![]() |
498f5148a1 | ||
![]() |
8640390354 | ||
![]() |
56e6944f92 | ||
![]() |
e47c2094dd | ||
![]() |
1adda1a865 | ||
![]() |
356396f6c3 | ||
![]() |
5ef6847c83 | ||
![]() |
155170e061 | ||
![]() |
13685e4388 | ||
![]() |
0be3deac04 | ||
![]() |
3729e3401a | ||
![]() |
de5476b910 | ||
![]() |
ba2542e0c2 | ||
![]() |
6efab9994b | ||
![]() |
6984822651 | ||
![]() |
7e1e44dc62 | ||
![]() |
59b17408c6 | ||
![]() |
4cc0f4f2f4 | ||
![]() |
d0d7be2983 | ||
![]() |
f5c7691e7a | ||
![]() |
cbca7ba17a | ||
![]() |
e460e37927 | ||
![]() |
782c77def0 | ||
![]() |
3d3cecf34d | ||
![]() |
c67907f872 | ||
![]() |
7f45922477 | ||
![]() |
b75a6767e8 | ||
![]() |
0150f5f926 | ||
![]() |
98bebea186 | ||
![]() |
56a4cbfc19 | ||
![]() |
60220b5b83 | ||
![]() |
304146395d | ||
![]() |
a5635a782f | ||
![]() |
df66fb784c | ||
![]() |
9a9a1ce716 | ||
![]() |
5c3a1ca3eb | ||
![]() |
95226eed34 | ||
![]() |
33a61daca9 | ||
![]() |
6c71397839 | ||
![]() |
9fba60d754 | ||
![]() |
a115ee2fba | ||
![]() |
31e2d80802 | ||
![]() |
bbbd3e8ad1 | ||
![]() |
9edc233ee7 | ||
![]() |
c030fac063 | ||
![]() |
36401996a5 | ||
![]() |
c4a57d2fbe | ||
![]() |
f0e4fda91b | ||
![]() |
d95d8e93b9 | ||
![]() |
2ce3ae15bf | ||
![]() |
c592c8b549 | ||
![]() |
9f8afc3ce9 | ||
![]() |
2b4e7abe21 | ||
![]() |
3c0ea943b0 | ||
![]() |
9757af64f1 | ||
![]() |
b24255db5e | ||
![]() |
5aa726f723 | ||
![]() |
e42a4816ac | ||
![]() |
4137501136 | ||
![]() |
f72d263ecb | ||
![]() |
41bc99cc17 | ||
![]() |
e71c5057ac | ||
![]() |
4190ba4790 | ||
![]() |
1f1e7edd2a | ||
![]() |
b4151987ad | ||
![]() |
6fbb923377 | ||
![]() |
1743f57c9c | ||
![]() |
4c06b1802d | ||
![]() |
5c222a8684 | ||
![]() |
ad837a4f68 | ||
![]() |
8f9884ade2 | ||
![]() |
8ae4fed70a | ||
![]() |
349820a7d1 | ||
![]() |
5bbdaaf114 | ||
![]() |
455eb537ac | ||
![]() |
a37efaa61b | ||
![]() |
3a98e867cb | ||
![]() |
15d7b9ed6d | ||
![]() |
cc87dce84d | ||
![]() |
c651866df3 | ||
![]() |
e19782fb04 | ||
![]() |
17d0b6dd0b | ||
![]() |
201e025ee8 | ||
![]() |
448c43ff43 | ||
![]() |
cd292b687f | ||
![]() |
19ee2e65b8 | ||
![]() |
a276545019 | ||
![]() |
b892818d23 | ||
![]() |
28b8432101 | ||
![]() |
772f808741 | ||
![]() |
cdd6008fbb | ||
![]() |
e1214a9ccc | ||
![]() |
426e8266c5 | ||
![]() |
821232a3c4 | ||
![]() |
6a8f254286 | ||
![]() |
1af4aa7ac9 | ||
![]() |
b031cab8df | ||
![]() |
56a60b7f0a | ||
![]() |
1e6d856921 | ||
![]() |
53ecdac6f1 | ||
![]() |
3b6636b0ef | ||
![]() |
5102a5d757 | ||
![]() |
869d99ce0f | ||
![]() |
2d2739c33a | ||
![]() |
b7bd9bd90e | ||
![]() |
b7954d8a33 | ||
![]() |
7b7c79acb3 | ||
![]() |
4b76119c68 | ||
![]() |
10b721602f | ||
![]() |
21297be965 | ||
![]() |
85f3189476 | ||
![]() |
cf1a4a6345 | ||
![]() |
9294e3e676 | ||
![]() |
85c4df40cd | ||
![]() |
62e0250560 | ||
![]() |
cd72744191 | ||
![]() |
c38fc91d9d | ||
![]() |
b76d1302b1 | ||
![]() |
bbbcbd2b23 | ||
![]() |
6c53b6664f | ||
![]() |
6f49a10c0c | ||
![]() |
ad190e72fe | ||
![]() |
259782bc5e | ||
![]() |
98ed2982ec | ||
![]() |
27dd8f698e | ||
![]() |
0bb88f2eda | ||
![]() |
0886756196 | ||
![]() |
1232a9d64c | ||
![]() |
a0ef0d32fe | ||
![]() |
96d14d009d | ||
![]() |
1fcc337ab7 | ||
![]() |
0f2c58a7cc | ||
![]() |
f4c8d08849 | ||
![]() |
5effaf1761 | ||
![]() |
940432bfee | ||
![]() |
3fa3b411f6 | ||
![]() |
59aaa96760 | ||
![]() |
f07e3fd77f | ||
![]() |
0fdcdfd35b | ||
![]() |
ed3de3f984 | ||
![]() |
f1840c82ae | ||
![]() |
b1ae386d8f | ||
![]() |
55d0e8bf1e | ||
![]() |
d5ffdf4330 | ||
![]() |
08b47b0ba7 | ||
![]() |
bae367bf31 | ||
![]() |
d7e05cabb9 | ||
![]() |
7cf8aa2e57 | ||
![]() |
8225ee4fc6 | ||
![]() |
ae72763b86 | ||
![]() |
2653a66f19 | ||
![]() |
0272238cb6 | ||
![]() |
87bb8a408c | ||
![]() |
38c7d87300 | ||
![]() |
544251e681 | ||
![]() |
79079a1588 | ||
![]() |
c90677d575 | ||
![]() |
544eab8907 | ||
![]() |
9b8fbbe710 | ||
![]() |
3cf40177fb | ||
![]() |
3a9b0d3b4f | ||
![]() |
30046f9723 | ||
![]() |
1944178657 | ||
![]() |
aa82816129 | ||
![]() |
ae6582d8c7 | ||
![]() |
d865a554b1 | ||
![]() |
a5b87a0d48 | ||
![]() |
56366d252e | ||
![]() |
40d0bbcd04 | ||
![]() |
337863256a | ||
![]() |
d536bf88ec | ||
![]() |
5a94b0cafc | ||
![]() |
d50dbef8b0 | ||
![]() |
6c22baa03c | ||
![]() |
7e6c59b984 | ||
![]() |
1e53c43669 | ||
![]() |
e1d6198d07 | ||
![]() |
3e95f45a26 | ||
![]() |
932bb5bb7c | ||
![]() |
bc217cf94d | ||
![]() |
9cd63043c7 | ||
![]() |
d574b31723 | ||
![]() |
f9f90a78aa | ||
![]() |
2751b27d8e | ||
![]() |
763cd2a116 | ||
![]() |
e35c881c60 | ||
![]() |
5ddd49417e | ||
![]() |
a536aeb484 | ||
![]() |
d556f0600c | ||
![]() |
86a070ba95 | ||
![]() |
8b43d65db7 | ||
![]() |
a442a10435 | ||
![]() |
0f19d7e7a3 | ||
![]() |
40b55f8623 | ||
![]() |
f0a9cb7eb5 | ||
![]() |
baf1cd6f6f | ||
![]() |
363da11e66 | ||
![]() |
a6ed269baf | ||
![]() |
bdd345a093 | ||
![]() |
c5ebba6a5f | ||
![]() |
f22219bc24 | ||
![]() |
b2c586c124 | ||
![]() |
d4e2e3855a | ||
![]() |
c14486d19c | ||
![]() |
59b965453e | ||
![]() |
7202c98a32 | ||
![]() |
4216da2c74 | ||
![]() |
f095be3ebf | ||
![]() |
6581ab3f07 | ||
![]() |
c8ef22ea1f | ||
![]() |
bd32283899 | ||
![]() |
ef180673e3 | ||
![]() |
50b0432d75 | ||
![]() |
7de9b3831a | ||
![]() |
cca505e8d7 | ||
![]() |
dc1a243d40 | ||
![]() |
a905829b4b | ||
![]() |
b02409072e | ||
![]() |
b4a187a288 | ||
![]() |
afcdf55278 | ||
![]() |
57009f9900 | ||
![]() |
30088827f8 | ||
![]() |
3cb256e558 | ||
![]() |
cc387a31a8 | ||
![]() |
255d499dd1 | ||
![]() |
035e220e4a | ||
![]() |
12ef109fb1 | ||
![]() |
7d72f76698 | ||
![]() |
33e4902051 | ||
![]() |
5bbdf2fba6 | ||
![]() |
6f259cefd2 | ||
![]() |
8ab3b8216d | ||
![]() |
e93f03c1e4 | ||
![]() |
38c207c315 | ||
![]() |
2bdc69ea0b | ||
![]() |
6daf9a2b07 | ||
![]() |
9f6ffa3b2e | ||
![]() |
e0d5aef2a3 | ||
![]() |
b61bc913ca | ||
![]() |
2ac08c9d70 | ||
![]() |
9e37910ee5 | ||
![]() |
0b8805bc3d | ||
![]() |
eadf410bbe | ||
![]() |
b735c4a72a | ||
![]() |
98f78cf864 | ||
![]() |
7d726253df | ||
![]() |
91824ad6c8 | ||
![]() |
55dc0cf6e0 | ||
![]() |
808cf6778b | ||
![]() |
d1c3493765 | ||
![]() |
85c11d850d | ||
![]() |
10680abda7 | ||
![]() |
200738a370 | ||
![]() |
6a8b73a2f3 | ||
![]() |
a66b7764f6 | ||
![]() |
0be1c37af5 | ||
![]() |
afe52a9cf8 | ||
![]() |
6ef0db07d1 | ||
![]() |
960163ea48 | ||
![]() |
ec9d4c1f18 | ||
![]() |
7f67534357 | ||
![]() |
f411b856f8 | ||
![]() |
e37cc98b6d | ||
![]() |
ac5787fa65 | ||
![]() |
e7e03c2743 | ||
![]() |
106c5f8f5c | ||
![]() |
83edce7155 | ||
![]() |
dff02a2998 | ||
![]() |
7769513ca5 | ||
![]() |
6014de4ee7 | ||
![]() |
73aedd8a72 | ||
![]() |
ec921b81ba | ||
![]() |
6c22afe293 | ||
![]() |
efb747ae43 | ||
![]() |
5028696803 | ||
![]() |
ae3ec197df | ||
![]() |
2970f04de9 | ||
![]() |
9d95878f07 | ||
![]() |
0c9ddbbfc5 | ||
![]() |
49733e1be3 | ||
![]() |
c648e063d0 | ||
![]() |
3822d8810c | ||
![]() |
0e286885a9 | ||
![]() |
15dc8460b4 | ||
![]() |
bb1d9165e4 | ||
![]() |
b3ad7dfa6d | ||
![]() |
3cc51b29df | ||
![]() |
78849085f0 | ||
![]() |
e3320c4084 | ||
![]() |
22e48de898 | ||
![]() |
7e6ede5392 | ||
![]() |
5a120d6807 | ||
![]() |
ca239f0353 | ||
![]() |
6a614f832e | ||
![]() |
163223d2ae | ||
![]() |
5e4f21998b | ||
![]() |
afa1845884 | ||
![]() |
c5dcdeeeb9 | ||
![]() |
0a28808076 | ||
![]() |
681addbc44 | ||
![]() |
3070b92a1a | ||
![]() |
3bc82f8ba2 | ||
![]() |
182dffbb2b | ||
![]() |
e6e9899fde | ||
![]() |
0c8ae83437 | ||
![]() |
12304b6c69 | ||
![]() |
d4821f4081 | ||
![]() |
f1db2b938a | ||
![]() |
62a2237b12 | ||
![]() |
5b601650c1 | ||
![]() |
4fff115484 | ||
![]() |
2030d6bedc | ||
![]() |
188183f268 | ||
![]() |
cc594845f2 | ||
![]() |
c2fc6d75f2 | ||
![]() |
1ab2060f49 | ||
![]() |
91a8c49b97 | ||
![]() |
8978d06c91 | ||
![]() |
91c14686eb | ||
![]() |
ba8724cf5a | ||
![]() |
2d85619f08 | ||
![]() |
051a214db7 | ||
![]() |
1003347044 | ||
![]() |
b53ab6b5c6 | ||
![]() |
df72ed55f2 | ||
![]() |
08795be652 | ||
![]() |
ec0e35123a | ||
![]() |
07725d6663 | ||
![]() |
83285cb60e | ||
![]() |
1435bb3c45 | ||
![]() |
3860aa554d | ||
![]() |
f9f4ab050a | ||
![]() |
8488eb63a7 | ||
![]() |
8a0fa4c063 | ||
![]() |
47ed4c56f3 | ||
![]() |
4e342e03f0 | ||
![]() |
f63b41b577 | ||
![]() |
20890304d0 | ||
![]() |
eff3d26529 | ||
![]() |
43b0074e9f | ||
![]() |
6aae9b8202 | ||
![]() |
1d9f2399f1 | ||
![]() |
59c66e6c28 | ||
![]() |
ef3d4e20a4 | ||
![]() |
27ced8e41c | ||
![]() |
2441f85244 | ||
![]() |
c1aaef52f7 | ||
![]() |
f07e641c06 | ||
![]() |
14d989aaab | ||
![]() |
57f18bb17e | ||
![]() |
5627741945 | ||
![]() |
dd9a30caed | ||
![]() |
478527cfe6 | ||
![]() |
94187f16f7 | ||
![]() |
166e7afc35 | ||
![]() |
b63e2ec1f4 | ||
![]() |
6427b9ec4c | ||
![]() |
3928e84760 | ||
![]() |
d7d4596fff | ||
![]() |
277b986d51 | ||
![]() |
70fee34609 | ||
![]() |
1d9548f814 | ||
![]() |
7236d3072e | ||
![]() |
ccb994294b | ||
![]() |
496fe74085 | ||
![]() |
54de76d0a0 | ||
![]() |
536652e4dc | ||
![]() |
dd26802d13 | ||
![]() |
e8d52cf39d | ||
![]() |
f805f4b19d | ||
![]() |
2d57c82700 | ||
![]() |
ca00466318 | ||
![]() |
826b9999b3 | ||
![]() |
83bf2fcdd6 | ||
![]() |
596f2b300a | ||
![]() |
f2a9a240e0 | ||
![]() |
4c99d651ea | ||
![]() |
a003309f46 | ||
![]() |
8556d05651 | ||
![]() |
3db4eca735 | ||
![]() |
a0b639e2b6 | ||
![]() |
c807ce6226 | ||
![]() |
5201b1530f | ||
![]() |
d9a1c49d7f | ||
![]() |
7c6f5f13e4 | ||
![]() |
36cad8502f | ||
![]() |
cfe24e69a0 | ||
![]() |
f27ab7a48b | ||
![]() |
155991d08b | ||
![]() |
8e7e1286be | ||
![]() |
4b273b74cb | ||
![]() |
1fc6144cc0 | ||
![]() |
90e5588e5d | ||
![]() |
c57db8ae34 | ||
![]() |
634e4f7bbb | ||
![]() |
4f9889ce48 | ||
![]() |
55e5545d5b | ||
![]() |
8922818463 | ||
![]() |
1914d5fb39 | ||
![]() |
98df5fc473 | ||
![]() |
ae951cdfcc | ||
![]() |
a567590b51 | ||
![]() |
e76d7e56b6 | ||
![]() |
6d004c4bca | ||
![]() |
bab82c9802 | ||
![]() |
73a941a879 | ||
![]() |
868c89fd7e | ||
![]() |
c050ff8e3d | ||
![]() |
1fec873770 | ||
![]() |
877dae612d | ||
![]() |
5bf7da2074 | ||
![]() |
9c850f5235 | ||
![]() |
bd837d91ab | ||
![]() |
c4e1c722b1 | ||
![]() |
85e612ec79 |
79
.github/ISSUE_TEMPLATE/bug-report.yaml
vendored
Normal file
79
.github/ISSUE_TEMPLATE/bug-report.yaml
vendored
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
name: "\U0001F41B Bug Report"
|
||||||
|
title: "\U0001F41B [Bug]: "
|
||||||
|
description: Create a bug report to help us fix it.
|
||||||
|
labels: ["☢️ Bug"]
|
||||||
|
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
id: notice
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
### Notice
|
||||||
|
- Dont't forget you can ask your questions on our [Discord server](https://gofiber.io/discord).
|
||||||
|
- If you think Fiber storage don't have a nice feature that you think, open the issue with **✏️ Feature Request** template.
|
||||||
|
- Write your issue with clear and understandable English.
|
||||||
|
- type: textarea
|
||||||
|
id: description
|
||||||
|
attributes:
|
||||||
|
label: "Bug Description"
|
||||||
|
description: "A clear and detailed description of what the bug is."
|
||||||
|
placeholder: "Explain your problem as clear and detailed."
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: how-to-reproduce
|
||||||
|
attributes:
|
||||||
|
label: How to Reproduce
|
||||||
|
description: "Steps to reproduce the behavior and what should be observed in the end."
|
||||||
|
placeholder: "Tell us step by step how we can replicate your problem and what we should see in the end."
|
||||||
|
value: |
|
||||||
|
Steps to reproduce the behavior:
|
||||||
|
1. Go to '....'
|
||||||
|
2. Click on '....'
|
||||||
|
3. Do '....'
|
||||||
|
4. See '....'
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: expected-behavior
|
||||||
|
attributes:
|
||||||
|
label: Expected Behavior
|
||||||
|
description: "A clear and detailed description of what you think should happens."
|
||||||
|
placeholder: "Tell us what storage should normally do."
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
id: version
|
||||||
|
attributes:
|
||||||
|
label: "Storage package Version"
|
||||||
|
description: "Some bugs may be fixed in future storage releases, so we have to know your storage package version."
|
||||||
|
placeholder: "Write your storage version. (v1.0.0, v1.1.0...)"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: snippet
|
||||||
|
attributes:
|
||||||
|
label: "Code Snippet (optional)"
|
||||||
|
description: "For some issues, we need to know some parts of your code."
|
||||||
|
placeholder: "Share a code you think related to the issue."
|
||||||
|
render: go
|
||||||
|
value: |
|
||||||
|
package main
|
||||||
|
|
||||||
|
import "github.com/gofiber/storage/%package%"
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
// Steps to reproduce
|
||||||
|
}
|
||||||
|
- type: checkboxes
|
||||||
|
id: terms
|
||||||
|
attributes:
|
||||||
|
label: "Checklist:"
|
||||||
|
description: "By submitting this issue, you confirm that:"
|
||||||
|
options:
|
||||||
|
- label: "I agree to follow Fiber's [Code of Conduct](https://github.com/gofiber/fiber/blob/master/.github/CODE_OF_CONDUCT.md)."
|
||||||
|
required: true
|
||||||
|
- label: "I have checked for existing issues that describe my problem prior to opening this one."
|
||||||
|
required: true
|
||||||
|
- label: "I understand that improperly formatted bug reports may be closed without explanation."
|
||||||
|
required: true
|
55
.github/ISSUE_TEMPLATE/feature-request.yaml
vendored
Normal file
55
.github/ISSUE_TEMPLATE/feature-request.yaml
vendored
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
name: "\U0001F680 Feature Request"
|
||||||
|
title: "\U0001F680 [Feature]: "
|
||||||
|
description: Suggest an idea to improve this project.
|
||||||
|
labels: ["✏️ Feature"]
|
||||||
|
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
id: notice
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
### Notice
|
||||||
|
- Dont't forget you can ask your questions on our [Discord server](https://gofiber.io/discord).
|
||||||
|
- If you think this is just a bug, open the issue with **☢️ Bug Report** template.
|
||||||
|
- Write your issue with clear and understandable English.
|
||||||
|
- type: textarea
|
||||||
|
id: description
|
||||||
|
attributes:
|
||||||
|
label: "Feature Description"
|
||||||
|
description: "A clear and detailed description of the feature we need to do."
|
||||||
|
placeholder: "Explain your feature as clear and detailed."
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: additional-context
|
||||||
|
attributes:
|
||||||
|
label: "Additional Context (optional)"
|
||||||
|
description: "If you have something else to describe, write them here."
|
||||||
|
placeholder: "Write here what you can describe differently."
|
||||||
|
- type: textarea
|
||||||
|
id: snippet
|
||||||
|
attributes:
|
||||||
|
label: "Code Snippet (optional)"
|
||||||
|
description: "Code snippet may be really helpful to describe some features."
|
||||||
|
placeholder: "Share a code to explain the feature better."
|
||||||
|
render: go
|
||||||
|
value: |
|
||||||
|
package main
|
||||||
|
|
||||||
|
import "github.com/gofiber/storage/%package%"
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
// Steps to reproduce
|
||||||
|
}
|
||||||
|
- type: checkboxes
|
||||||
|
id: terms
|
||||||
|
attributes:
|
||||||
|
label: "Checklist:"
|
||||||
|
description: "By submitting this issue, you confirm that:"
|
||||||
|
options:
|
||||||
|
- label: "I agree to follow Fiber's [Code of Conduct](https://github.com/gofiber/fiber/blob/master/.github/CODE_OF_CONDUCT.md)."
|
||||||
|
required: true
|
||||||
|
- label: "I have checked for existing issues that describe my suggestion prior to opening this one."
|
||||||
|
required: true
|
||||||
|
- label: "I understand that improperly formatted feature requests may be closed without explanation."
|
||||||
|
required: true
|
50
.github/ISSUE_TEMPLATE/question.yaml
vendored
Normal file
50
.github/ISSUE_TEMPLATE/question.yaml
vendored
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
name: "🤔 Question"
|
||||||
|
title: "\U0001F917 [Question]: "
|
||||||
|
description: Ask a question so we can help you easily.
|
||||||
|
labels: ["🤔 Question"]
|
||||||
|
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
id: notice
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
### Notice
|
||||||
|
- Dont't forget you can ask your questions on our [Discord server](https://gofiber.io/discord).
|
||||||
|
- If you think this is just a bug, open the issue with **☢️ Bug Report** template.
|
||||||
|
- If you think Fiber storage don't have a nice feature that you think, open the issue with **✏️ Feature Request** template.
|
||||||
|
- Write your issue with clear and understandable English.
|
||||||
|
- type: textarea
|
||||||
|
id: description
|
||||||
|
attributes:
|
||||||
|
label: "Question Description"
|
||||||
|
description: "A clear and detailed description of the question."
|
||||||
|
placeholder: "Explain your question as clear and detailed."
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: snippet
|
||||||
|
attributes:
|
||||||
|
label: "Code Snippet (optional)"
|
||||||
|
description: "Code snippet may be really helpful to describe some features."
|
||||||
|
placeholder: "Share a code to explain the feature better."
|
||||||
|
render: go
|
||||||
|
value: |
|
||||||
|
package main
|
||||||
|
|
||||||
|
import "github.com/gofiber/storage/%package%"
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
// Steps to reproduce
|
||||||
|
}
|
||||||
|
- type: checkboxes
|
||||||
|
id: terms
|
||||||
|
attributes:
|
||||||
|
label: "Checklist:"
|
||||||
|
description: "By submitting this issue, you confirm that:"
|
||||||
|
options:
|
||||||
|
- label: "I agree to follow Fiber's [Code of Conduct](https://github.com/gofiber/fiber/blob/master/.github/CODE_OF_CONDUCT.md)."
|
||||||
|
required: true
|
||||||
|
- label: "I have checked for existing issues that describe my questions prior to opening this one."
|
||||||
|
required: true
|
||||||
|
- label: "I understand that improperly formatted questions may be closed without explanation."
|
||||||
|
required: true
|
22
.github/dependabot.yml
vendored
22
.github/dependabot.yml
vendored
@@ -26,6 +26,28 @@ updates:
|
|||||||
- "🤖 Dependencies"
|
- "🤖 Dependencies"
|
||||||
schedule:
|
schedule:
|
||||||
interval: "daily"
|
interval: "daily"
|
||||||
|
- package-ecosystem: "gomod"
|
||||||
|
directory: "/couchbase/" # Location of package manifests
|
||||||
|
labels:
|
||||||
|
- "🤖 Dependencies"
|
||||||
|
- package-ecosystem: "gomod"
|
||||||
|
directory: "/coherence/" # Location of package manifests
|
||||||
|
labels:
|
||||||
|
- "🤖 Dependencies"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
- package-ecosystem: "gomod"
|
||||||
|
directory: "/etcd/" # Location of package manifests
|
||||||
|
labels:
|
||||||
|
- "🤖 Dependencies"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
- package-ecosystem: "gomod"
|
||||||
|
directory: "/pebble/" # Location of package manifests
|
||||||
|
labels:
|
||||||
|
- "🤖 Dependencies"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
- package-ecosystem: "gomod"
|
- package-ecosystem: "gomod"
|
||||||
directory: "/dynamodb/" # Location of package manifests
|
directory: "/dynamodb/" # Location of package manifests
|
||||||
labels:
|
labels:
|
||||||
|
71
.github/labeler.yml
vendored
71
.github/labeler.yml
vendored
@@ -1,53 +1,20 @@
|
|||||||
# Labels is an object where:
|
version: v1
|
||||||
# - keys are labels
|
|
||||||
# - values are array of string patterns to match against title + body in issues/prs
|
|
||||||
labels:
|
labels:
|
||||||
'📒 Documentation':
|
- label: '📒 Documentation'
|
||||||
- '\bdocs\b'
|
matcher:
|
||||||
- '\bdoc:\b'
|
title: '\b(docs|doc:|\[doc\]|README|typos|comment|documentation)\b'
|
||||||
- '\b\[doc\]\b'
|
- label: '☢️ Bug'
|
||||||
- '\bREADME\b'
|
matcher:
|
||||||
- '\btypos\b'
|
title: '\b(fix|race|bug|missing|correct)\b'
|
||||||
- '\bcomment\b'
|
- label: '🧹 Updates'
|
||||||
- '📚'
|
matcher:
|
||||||
- '📒'
|
title: '\b(improve|update|refactor|deprecated|remove|unused|test)\b'
|
||||||
- '📝'
|
- label: '🤖 Dependencies'
|
||||||
- '\bdocumentation\b'
|
matcher:
|
||||||
'☢️ Bug':
|
title: '\b(bumb|bdependencies)\b'
|
||||||
- '\bfix\b'
|
- label: '✏️ Feature'
|
||||||
- '\brace\b'
|
matcher:
|
||||||
- '\bbug\b'
|
title: '\b(feature|create|implement|add)\b'
|
||||||
- '\bmissing\b'
|
- label: '🤔 Question'
|
||||||
- '\bcorrect\b'
|
matcher:
|
||||||
- '🐛'
|
title: '\b(question|how)\b'
|
||||||
- '☢'
|
|
||||||
- '🩹'
|
|
||||||
- '🚨'
|
|
||||||
'🧹 Updates':
|
|
||||||
- '\bimprove\b'
|
|
||||||
- '\bupdate\b'
|
|
||||||
- '\brefactor\b'
|
|
||||||
- '\bdeprecated\b'
|
|
||||||
- '\bremove\b'
|
|
||||||
- '\bunused\b'
|
|
||||||
- '\btest\b'
|
|
||||||
- '⚡'
|
|
||||||
- '👷'
|
|
||||||
- '🚧'
|
|
||||||
- '♻️'
|
|
||||||
- '🎨'
|
|
||||||
- '🧪'
|
|
||||||
- '🧹'
|
|
||||||
'🤖 Dependencies':
|
|
||||||
- '\bbumb\b'
|
|
||||||
- '\bdependencies\b'
|
|
||||||
- '📦'
|
|
||||||
- '🤖'
|
|
||||||
'✏️ Feature':
|
|
||||||
- '\bfeature\b'
|
|
||||||
- '\bcreate\b'
|
|
||||||
- '\bimplement\b'
|
|
||||||
- '\badd\b'
|
|
||||||
- '🚀'
|
|
||||||
- '✨'
|
|
||||||
- '🔥'
|
|
||||||
|
9
.github/logo-dark.svg
vendored
Normal file
9
.github/logo-dark.svg
vendored
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 14 KiB |
9
.github/logo.svg
vendored
Normal file
9
.github/logo.svg
vendored
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 14 KiB |
7
.github/release-drafter-arangodb.yml
vendored
7
.github/release-drafter-arangodb.yml
vendored
@@ -4,6 +4,9 @@ tag-prefix: arangodb/v
|
|||||||
include-paths:
|
include-paths:
|
||||||
- arangodb
|
- arangodb
|
||||||
categories:
|
categories:
|
||||||
|
- title: '❗ Breaking Changes'
|
||||||
|
labels:
|
||||||
|
- '❗ BreakingChange'
|
||||||
- title: '🚀 New'
|
- title: '🚀 New'
|
||||||
labels:
|
labels:
|
||||||
- '✏️ Feature'
|
- '✏️ Feature'
|
||||||
@@ -19,10 +22,14 @@ categories:
|
|||||||
- '📒 Documentation'
|
- '📒 Documentation'
|
||||||
change-template: '- $TITLE (#$NUMBER)'
|
change-template: '- $TITLE (#$NUMBER)'
|
||||||
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
||||||
|
exclude-contributors:
|
||||||
|
- dependabot
|
||||||
|
- dependabot[bot]
|
||||||
version-resolver:
|
version-resolver:
|
||||||
major:
|
major:
|
||||||
labels:
|
labels:
|
||||||
- 'major'
|
- 'major'
|
||||||
|
- '❗ BreakingChange'
|
||||||
minor:
|
minor:
|
||||||
labels:
|
labels:
|
||||||
- 'minor'
|
- 'minor'
|
||||||
|
7
.github/release-drafter-azureblob.yml
vendored
7
.github/release-drafter-azureblob.yml
vendored
@@ -4,6 +4,9 @@ tag-prefix: azureblob/v
|
|||||||
include-paths:
|
include-paths:
|
||||||
- azureblob
|
- azureblob
|
||||||
categories:
|
categories:
|
||||||
|
- title: '❗ Breaking Changes'
|
||||||
|
labels:
|
||||||
|
- '❗ BreakingChange'
|
||||||
- title: '🚀 New'
|
- title: '🚀 New'
|
||||||
labels:
|
labels:
|
||||||
- '✏️ Feature'
|
- '✏️ Feature'
|
||||||
@@ -19,10 +22,14 @@ categories:
|
|||||||
- '📒 Documentation'
|
- '📒 Documentation'
|
||||||
change-template: '- $TITLE (#$NUMBER)'
|
change-template: '- $TITLE (#$NUMBER)'
|
||||||
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
||||||
|
exclude-contributors:
|
||||||
|
- dependabot
|
||||||
|
- dependabot[bot]
|
||||||
version-resolver:
|
version-resolver:
|
||||||
major:
|
major:
|
||||||
labels:
|
labels:
|
||||||
- 'major'
|
- 'major'
|
||||||
|
- '❗ BreakingChange'
|
||||||
minor:
|
minor:
|
||||||
labels:
|
labels:
|
||||||
- 'minor'
|
- 'minor'
|
||||||
|
7
.github/release-drafter-badger.yml
vendored
7
.github/release-drafter-badger.yml
vendored
@@ -4,6 +4,9 @@ tag-prefix: badger/v
|
|||||||
include-paths:
|
include-paths:
|
||||||
- badger
|
- badger
|
||||||
categories:
|
categories:
|
||||||
|
- title: '❗ Breaking Changes'
|
||||||
|
labels:
|
||||||
|
- '❗ BreakingChange'
|
||||||
- title: '🚀 New'
|
- title: '🚀 New'
|
||||||
labels:
|
labels:
|
||||||
- '✏️ Feature'
|
- '✏️ Feature'
|
||||||
@@ -19,10 +22,14 @@ categories:
|
|||||||
- '📒 Documentation'
|
- '📒 Documentation'
|
||||||
change-template: '- $TITLE (#$NUMBER)'
|
change-template: '- $TITLE (#$NUMBER)'
|
||||||
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
||||||
|
exclude-contributors:
|
||||||
|
- dependabot
|
||||||
|
- dependabot[bot]
|
||||||
version-resolver:
|
version-resolver:
|
||||||
major:
|
major:
|
||||||
labels:
|
labels:
|
||||||
- 'major'
|
- 'major'
|
||||||
|
- '❗ BreakingChange'
|
||||||
minor:
|
minor:
|
||||||
labels:
|
labels:
|
||||||
- 'minor'
|
- 'minor'
|
||||||
|
7
.github/release-drafter-bbolt.yml
vendored
7
.github/release-drafter-bbolt.yml
vendored
@@ -4,6 +4,9 @@ tag-prefix: bbolt/v
|
|||||||
include-paths:
|
include-paths:
|
||||||
- bbolt
|
- bbolt
|
||||||
categories:
|
categories:
|
||||||
|
- title: '❗ Breaking Changes'
|
||||||
|
labels:
|
||||||
|
- '❗ BreakingChange'
|
||||||
- title: '🚀 New'
|
- title: '🚀 New'
|
||||||
labels:
|
labels:
|
||||||
- '✏️ Feature'
|
- '✏️ Feature'
|
||||||
@@ -19,10 +22,14 @@ categories:
|
|||||||
- '📒 Documentation'
|
- '📒 Documentation'
|
||||||
change-template: '- $TITLE (#$NUMBER)'
|
change-template: '- $TITLE (#$NUMBER)'
|
||||||
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
||||||
|
exclude-contributors:
|
||||||
|
- dependabot
|
||||||
|
- dependabot[bot]
|
||||||
version-resolver:
|
version-resolver:
|
||||||
major:
|
major:
|
||||||
labels:
|
labels:
|
||||||
- 'major'
|
- 'major'
|
||||||
|
- '❗ BreakingChange'
|
||||||
minor:
|
minor:
|
||||||
labels:
|
labels:
|
||||||
- 'minor'
|
- 'minor'
|
||||||
|
50
.github/release-drafter-coherence.yml
vendored
Normal file
50
.github/release-drafter-coherence.yml
vendored
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
name-template: 'Coherence - v$RESOLVED_VERSION'
|
||||||
|
tag-template: 'coherence/v$RESOLVED_VERSION'
|
||||||
|
tag-prefix: coherence/v
|
||||||
|
include-paths:
|
||||||
|
- coherence
|
||||||
|
categories:
|
||||||
|
- title: '❗ Breaking Changes'
|
||||||
|
labels:
|
||||||
|
- '❗ BreakingChange'
|
||||||
|
- title: '🚀 New'
|
||||||
|
labels:
|
||||||
|
- '✏️ Feature'
|
||||||
|
- title: '🧹 Updates'
|
||||||
|
labels:
|
||||||
|
- '🧹 Updates'
|
||||||
|
- '🤖 Dependencies'
|
||||||
|
- title: '🐛 Fixes'
|
||||||
|
labels:
|
||||||
|
- '☢️ Bug'
|
||||||
|
- title: '📚 Documentation'
|
||||||
|
labels:
|
||||||
|
- '📒 Documentation'
|
||||||
|
change-template: '- $TITLE (#$NUMBER)'
|
||||||
|
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
||||||
|
exclude-contributors:
|
||||||
|
- dependabot
|
||||||
|
- dependabot[bot]
|
||||||
|
version-resolver:
|
||||||
|
major:
|
||||||
|
labels:
|
||||||
|
- 'major'
|
||||||
|
- '❗ BreakingChange'
|
||||||
|
minor:
|
||||||
|
labels:
|
||||||
|
- 'minor'
|
||||||
|
- '✏️ Feature'
|
||||||
|
patch:
|
||||||
|
labels:
|
||||||
|
- 'patch'
|
||||||
|
- '📒 Documentation'
|
||||||
|
- '☢️ Bug'
|
||||||
|
- '🤖 Dependencies'
|
||||||
|
- '🧹 Updates'
|
||||||
|
default: patch
|
||||||
|
template: |
|
||||||
|
$CHANGES
|
||||||
|
|
||||||
|
**Full Changelog**: https://github.com/$OWNER/$REPOSITORY/compare/$PREVIOUS_TAG...coherence/v$RESOLVED_VERSION
|
||||||
|
|
||||||
|
Thank you $CONTRIBUTORS for making this update possible.
|
50
.github/release-drafter-couchbase.yml
vendored
Normal file
50
.github/release-drafter-couchbase.yml
vendored
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
name-template: 'Couchbase - v$RESOLVED_VERSION'
|
||||||
|
tag-template: 'couchbase/v$RESOLVED_VERSION'
|
||||||
|
tag-prefix: couchbase/v
|
||||||
|
include-paths:
|
||||||
|
- couchbase
|
||||||
|
categories:
|
||||||
|
- title: '❗ Breaking Changes'
|
||||||
|
labels:
|
||||||
|
- '❗ BreakingChange'
|
||||||
|
- title: '🚀 New'
|
||||||
|
labels:
|
||||||
|
- '✏️ Feature'
|
||||||
|
- title: '🧹 Updates'
|
||||||
|
labels:
|
||||||
|
- '🧹 Updates'
|
||||||
|
- '🤖 Dependencies'
|
||||||
|
- title: '🐛 Fixes'
|
||||||
|
labels:
|
||||||
|
- '☢️ Bug'
|
||||||
|
- title: '📚 Documentation'
|
||||||
|
labels:
|
||||||
|
- '📒 Documentation'
|
||||||
|
change-template: '- $TITLE (#$NUMBER)'
|
||||||
|
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
||||||
|
exclude-contributors:
|
||||||
|
- dependabot
|
||||||
|
- dependabot[bot]
|
||||||
|
version-resolver:
|
||||||
|
major:
|
||||||
|
labels:
|
||||||
|
- 'major'
|
||||||
|
- '❗ BreakingChange'
|
||||||
|
minor:
|
||||||
|
labels:
|
||||||
|
- 'minor'
|
||||||
|
- '✏️ Feature'
|
||||||
|
patch:
|
||||||
|
labels:
|
||||||
|
- 'patch'
|
||||||
|
- '📒 Documentation'
|
||||||
|
- '☢️ Bug'
|
||||||
|
- '🤖 Dependencies'
|
||||||
|
- '🧹 Updates'
|
||||||
|
default: patch
|
||||||
|
template: |
|
||||||
|
$CHANGES
|
||||||
|
|
||||||
|
**Full Changelog**: https://github.com/$OWNER/$REPOSITORY/compare/$PREVIOUS_TAG...couchbase/v$RESOLVED_VERSION
|
||||||
|
|
||||||
|
Thank you $CONTRIBUTORS for making this update possible.
|
7
.github/release-drafter-dynamodb.yml
vendored
7
.github/release-drafter-dynamodb.yml
vendored
@@ -4,6 +4,9 @@ tag-prefix: dynamodb/v
|
|||||||
include-paths:
|
include-paths:
|
||||||
- dynamodb
|
- dynamodb
|
||||||
categories:
|
categories:
|
||||||
|
- title: '❗ Breaking Changes'
|
||||||
|
labels:
|
||||||
|
- '❗ BreakingChange'
|
||||||
- title: '🚀 New'
|
- title: '🚀 New'
|
||||||
labels:
|
labels:
|
||||||
- '✏️ Feature'
|
- '✏️ Feature'
|
||||||
@@ -19,10 +22,14 @@ categories:
|
|||||||
- '📒 Documentation'
|
- '📒 Documentation'
|
||||||
change-template: '- $TITLE (#$NUMBER)'
|
change-template: '- $TITLE (#$NUMBER)'
|
||||||
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
||||||
|
exclude-contributors:
|
||||||
|
- dependabot
|
||||||
|
- dependabot[bot]
|
||||||
version-resolver:
|
version-resolver:
|
||||||
major:
|
major:
|
||||||
labels:
|
labels:
|
||||||
- 'major'
|
- 'major'
|
||||||
|
- '❗ BreakingChange'
|
||||||
minor:
|
minor:
|
||||||
labels:
|
labels:
|
||||||
- 'minor'
|
- 'minor'
|
||||||
|
50
.github/release-drafter-etcd.yml
vendored
Normal file
50
.github/release-drafter-etcd.yml
vendored
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
name-template: 'Etcd - v$RESOLVED_VERSION'
|
||||||
|
tag-template: 'etcd/v$RESOLVED_VERSION'
|
||||||
|
tag-prefix: etcd/v
|
||||||
|
include-paths:
|
||||||
|
- etcd
|
||||||
|
categories:
|
||||||
|
- title: '❗ Breaking Changes'
|
||||||
|
labels:
|
||||||
|
- '❗ BreakingChange'
|
||||||
|
- title: '🚀 New'
|
||||||
|
labels:
|
||||||
|
- '✏️ Feature'
|
||||||
|
- title: '🧹 Updates'
|
||||||
|
labels:
|
||||||
|
- '🧹 Updates'
|
||||||
|
- '🤖 Dependencies'
|
||||||
|
- title: '🐛 Fixes'
|
||||||
|
labels:
|
||||||
|
- '☢️ Bug'
|
||||||
|
- title: '📚 Documentation'
|
||||||
|
labels:
|
||||||
|
- '📒 Documentation'
|
||||||
|
change-template: '- $TITLE (#$NUMBER)'
|
||||||
|
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
||||||
|
exclude-contributors:
|
||||||
|
- dependabot
|
||||||
|
- dependabot[bot]
|
||||||
|
version-resolver:
|
||||||
|
major:
|
||||||
|
labels:
|
||||||
|
- 'major'
|
||||||
|
- '❗ BreakingChange'
|
||||||
|
minor:
|
||||||
|
labels:
|
||||||
|
- 'minor'
|
||||||
|
- '✏️ Feature'
|
||||||
|
patch:
|
||||||
|
labels:
|
||||||
|
- 'patch'
|
||||||
|
- '📒 Documentation'
|
||||||
|
- '☢️ Bug'
|
||||||
|
- '🤖 Dependencies'
|
||||||
|
- '🧹 Updates'
|
||||||
|
default: patch
|
||||||
|
template: |
|
||||||
|
$CHANGES
|
||||||
|
|
||||||
|
**Full Changelog**: https://github.com/$OWNER/$REPOSITORY/compare/$PREVIOUS_TAG...etcd/v$RESOLVED_VERSION
|
||||||
|
|
||||||
|
Thank you $CONTRIBUTORS for making this update possible.
|
7
.github/release-drafter-memcache.yml
vendored
7
.github/release-drafter-memcache.yml
vendored
@@ -4,6 +4,9 @@ tag-prefix: memcache/v
|
|||||||
include-paths:
|
include-paths:
|
||||||
- memcache
|
- memcache
|
||||||
categories:
|
categories:
|
||||||
|
- title: '❗ Breaking Changes'
|
||||||
|
labels:
|
||||||
|
- '❗ BreakingChange'
|
||||||
- title: '🚀 New'
|
- title: '🚀 New'
|
||||||
labels:
|
labels:
|
||||||
- '✏️ Feature'
|
- '✏️ Feature'
|
||||||
@@ -19,10 +22,14 @@ categories:
|
|||||||
- '📒 Documentation'
|
- '📒 Documentation'
|
||||||
change-template: '- $TITLE (#$NUMBER)'
|
change-template: '- $TITLE (#$NUMBER)'
|
||||||
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
||||||
|
exclude-contributors:
|
||||||
|
- dependabot
|
||||||
|
- dependabot[bot]
|
||||||
version-resolver:
|
version-resolver:
|
||||||
major:
|
major:
|
||||||
labels:
|
labels:
|
||||||
- 'major'
|
- 'major'
|
||||||
|
- '❗ BreakingChange'
|
||||||
minor:
|
minor:
|
||||||
labels:
|
labels:
|
||||||
- 'minor'
|
- 'minor'
|
||||||
|
7
.github/release-drafter-memory.yml
vendored
7
.github/release-drafter-memory.yml
vendored
@@ -4,6 +4,9 @@ tag-prefix: memory/v
|
|||||||
include-paths:
|
include-paths:
|
||||||
- memory
|
- memory
|
||||||
categories:
|
categories:
|
||||||
|
- title: '❗ Breaking Changes'
|
||||||
|
labels:
|
||||||
|
- '❗ BreakingChange'
|
||||||
- title: '🚀 New'
|
- title: '🚀 New'
|
||||||
labels:
|
labels:
|
||||||
- '✏️ Feature'
|
- '✏️ Feature'
|
||||||
@@ -19,10 +22,14 @@ categories:
|
|||||||
- '📒 Documentation'
|
- '📒 Documentation'
|
||||||
change-template: '- $TITLE (#$NUMBER)'
|
change-template: '- $TITLE (#$NUMBER)'
|
||||||
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
||||||
|
exclude-contributors:
|
||||||
|
- dependabot
|
||||||
|
- dependabot[bot]
|
||||||
version-resolver:
|
version-resolver:
|
||||||
major:
|
major:
|
||||||
labels:
|
labels:
|
||||||
- 'major'
|
- 'major'
|
||||||
|
- '❗ BreakingChange'
|
||||||
minor:
|
minor:
|
||||||
labels:
|
labels:
|
||||||
- 'minor'
|
- 'minor'
|
||||||
|
7
.github/release-drafter-mongodb.yml
vendored
7
.github/release-drafter-mongodb.yml
vendored
@@ -4,6 +4,9 @@ tag-prefix: mongodb/v
|
|||||||
include-paths:
|
include-paths:
|
||||||
- mongodb
|
- mongodb
|
||||||
categories:
|
categories:
|
||||||
|
- title: '❗ Breaking Changes'
|
||||||
|
labels:
|
||||||
|
- '❗ BreakingChange'
|
||||||
- title: '🚀 New'
|
- title: '🚀 New'
|
||||||
labels:
|
labels:
|
||||||
- '✏️ Feature'
|
- '✏️ Feature'
|
||||||
@@ -19,10 +22,14 @@ categories:
|
|||||||
- '📒 Documentation'
|
- '📒 Documentation'
|
||||||
change-template: '- $TITLE (#$NUMBER)'
|
change-template: '- $TITLE (#$NUMBER)'
|
||||||
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
||||||
|
exclude-contributors:
|
||||||
|
- dependabot
|
||||||
|
- dependabot[bot]
|
||||||
version-resolver:
|
version-resolver:
|
||||||
major:
|
major:
|
||||||
labels:
|
labels:
|
||||||
- 'major'
|
- 'major'
|
||||||
|
- '❗ BreakingChange'
|
||||||
minor:
|
minor:
|
||||||
labels:
|
labels:
|
||||||
- 'minor'
|
- 'minor'
|
||||||
|
7
.github/release-drafter-mssql.yml
vendored
7
.github/release-drafter-mssql.yml
vendored
@@ -4,6 +4,9 @@ tag-prefix: mssql/v
|
|||||||
include-paths:
|
include-paths:
|
||||||
- mssql
|
- mssql
|
||||||
categories:
|
categories:
|
||||||
|
- title: '❗ Breaking Changes'
|
||||||
|
labels:
|
||||||
|
- '❗ BreakingChange'
|
||||||
- title: '🚀 New'
|
- title: '🚀 New'
|
||||||
labels:
|
labels:
|
||||||
- '✏️ Feature'
|
- '✏️ Feature'
|
||||||
@@ -19,10 +22,14 @@ categories:
|
|||||||
- '📒 Documentation'
|
- '📒 Documentation'
|
||||||
change-template: '- $TITLE (#$NUMBER)'
|
change-template: '- $TITLE (#$NUMBER)'
|
||||||
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
||||||
|
exclude-contributors:
|
||||||
|
- dependabot
|
||||||
|
- dependabot[bot]
|
||||||
version-resolver:
|
version-resolver:
|
||||||
major:
|
major:
|
||||||
labels:
|
labels:
|
||||||
- 'major'
|
- 'major'
|
||||||
|
- '❗ BreakingChange'
|
||||||
minor:
|
minor:
|
||||||
labels:
|
labels:
|
||||||
- 'minor'
|
- 'minor'
|
||||||
|
7
.github/release-drafter-mysql.yml
vendored
7
.github/release-drafter-mysql.yml
vendored
@@ -4,6 +4,9 @@ tag-prefix: mysql/v
|
|||||||
include-paths:
|
include-paths:
|
||||||
- mysql
|
- mysql
|
||||||
categories:
|
categories:
|
||||||
|
- title: '❗ Breaking Changes'
|
||||||
|
labels:
|
||||||
|
- '❗ BreakingChange'
|
||||||
- title: '🚀 New'
|
- title: '🚀 New'
|
||||||
labels:
|
labels:
|
||||||
- '✏️ Feature'
|
- '✏️ Feature'
|
||||||
@@ -19,10 +22,14 @@ categories:
|
|||||||
- '📒 Documentation'
|
- '📒 Documentation'
|
||||||
change-template: '- $TITLE (#$NUMBER)'
|
change-template: '- $TITLE (#$NUMBER)'
|
||||||
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
||||||
|
exclude-contributors:
|
||||||
|
- dependabot
|
||||||
|
- dependabot[bot]
|
||||||
version-resolver:
|
version-resolver:
|
||||||
major:
|
major:
|
||||||
labels:
|
labels:
|
||||||
- 'major'
|
- 'major'
|
||||||
|
- '❗ BreakingChange'
|
||||||
minor:
|
minor:
|
||||||
labels:
|
labels:
|
||||||
- 'minor'
|
- 'minor'
|
||||||
|
50
.github/release-drafter-pebble.yml
vendored
Normal file
50
.github/release-drafter-pebble.yml
vendored
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
name-template: "Pebble - v$RESOLVED_VERSION"
|
||||||
|
tag-template: "pebble/v$RESOLVED_VERSION"
|
||||||
|
tag-prefix: pebble/v
|
||||||
|
include-paths:
|
||||||
|
- pebble
|
||||||
|
categories:
|
||||||
|
- title: '❗ Breaking Changes'
|
||||||
|
labels:
|
||||||
|
- '❗ BreakingChange'
|
||||||
|
- title: '🚀 New'
|
||||||
|
labels:
|
||||||
|
- '✏️ Feature'
|
||||||
|
- title: '🧹 Updates'
|
||||||
|
labels:
|
||||||
|
- '🧹 Updates'
|
||||||
|
- '🤖 Dependencies'
|
||||||
|
- title: '🐛 Fixes'
|
||||||
|
labels:
|
||||||
|
- '☢️ Bug'
|
||||||
|
- title: '📚 Documentation'
|
||||||
|
labels:
|
||||||
|
- '📒 Documentation'
|
||||||
|
change-template: '- $TITLE (#$NUMBER)'
|
||||||
|
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
||||||
|
exclude-contributors:
|
||||||
|
- dependabot
|
||||||
|
- dependabot[bot]
|
||||||
|
version-resolver:
|
||||||
|
major:
|
||||||
|
labels:
|
||||||
|
- 'major'
|
||||||
|
- '❗ BreakingChange'
|
||||||
|
minor:
|
||||||
|
labels:
|
||||||
|
- 'minor'
|
||||||
|
- '✏️ Feature'
|
||||||
|
patch:
|
||||||
|
labels:
|
||||||
|
- 'patch'
|
||||||
|
- '📒 Documentation'
|
||||||
|
- '☢️ Bug'
|
||||||
|
- '🤖 Dependencies'
|
||||||
|
- '🧹 Updates'
|
||||||
|
default: patch
|
||||||
|
template: |
|
||||||
|
$CHANGES
|
||||||
|
|
||||||
|
**Full Changelog**: https://github.com/$OWNER/$REPOSITORY/compare/$PREVIOUS_TAG...pebble/v$RESOLVED_VERSION
|
||||||
|
|
||||||
|
Thank you $CONTRIBUTORS for making this update possible.
|
7
.github/release-drafter-postgres.yml
vendored
7
.github/release-drafter-postgres.yml
vendored
@@ -4,6 +4,9 @@ tag-prefix: postgres/v
|
|||||||
include-paths:
|
include-paths:
|
||||||
- postgres
|
- postgres
|
||||||
categories:
|
categories:
|
||||||
|
- title: '❗ Breaking Changes'
|
||||||
|
labels:
|
||||||
|
- '❗ BreakingChange'
|
||||||
- title: '🚀 New'
|
- title: '🚀 New'
|
||||||
labels:
|
labels:
|
||||||
- '✏️ Feature'
|
- '✏️ Feature'
|
||||||
@@ -19,10 +22,14 @@ categories:
|
|||||||
- '📒 Documentation'
|
- '📒 Documentation'
|
||||||
change-template: '- $TITLE (#$NUMBER)'
|
change-template: '- $TITLE (#$NUMBER)'
|
||||||
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
||||||
|
exclude-contributors:
|
||||||
|
- dependabot
|
||||||
|
- dependabot[bot]
|
||||||
version-resolver:
|
version-resolver:
|
||||||
major:
|
major:
|
||||||
labels:
|
labels:
|
||||||
- 'major'
|
- 'major'
|
||||||
|
- '❗ BreakingChange'
|
||||||
minor:
|
minor:
|
||||||
labels:
|
labels:
|
||||||
- 'minor'
|
- 'minor'
|
||||||
|
7
.github/release-drafter-redis.yml
vendored
7
.github/release-drafter-redis.yml
vendored
@@ -4,6 +4,9 @@ tag-prefix: redis/v
|
|||||||
include-paths:
|
include-paths:
|
||||||
- redis
|
- redis
|
||||||
categories:
|
categories:
|
||||||
|
- title: '❗ Breaking Changes'
|
||||||
|
labels:
|
||||||
|
- '❗ BreakingChange'
|
||||||
- title: '🚀 New'
|
- title: '🚀 New'
|
||||||
labels:
|
labels:
|
||||||
- '✏️ Feature'
|
- '✏️ Feature'
|
||||||
@@ -19,10 +22,14 @@ categories:
|
|||||||
- '📒 Documentation'
|
- '📒 Documentation'
|
||||||
change-template: '- $TITLE (#$NUMBER)'
|
change-template: '- $TITLE (#$NUMBER)'
|
||||||
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
||||||
|
exclude-contributors:
|
||||||
|
- dependabot
|
||||||
|
- dependabot[bot]
|
||||||
version-resolver:
|
version-resolver:
|
||||||
major:
|
major:
|
||||||
labels:
|
labels:
|
||||||
- 'major'
|
- 'major'
|
||||||
|
- '❗ BreakingChange'
|
||||||
minor:
|
minor:
|
||||||
labels:
|
labels:
|
||||||
- 'minor'
|
- 'minor'
|
||||||
|
7
.github/release-drafter-ristretto.yml
vendored
7
.github/release-drafter-ristretto.yml
vendored
@@ -4,6 +4,9 @@ tag-prefix: ristretto/v
|
|||||||
include-paths:
|
include-paths:
|
||||||
- ristretto
|
- ristretto
|
||||||
categories:
|
categories:
|
||||||
|
- title: '❗ Breaking Changes'
|
||||||
|
labels:
|
||||||
|
- '❗ BreakingChange'
|
||||||
- title: '🚀 New'
|
- title: '🚀 New'
|
||||||
labels:
|
labels:
|
||||||
- '✏️ Feature'
|
- '✏️ Feature'
|
||||||
@@ -19,10 +22,14 @@ categories:
|
|||||||
- '📒 Documentation'
|
- '📒 Documentation'
|
||||||
change-template: '- $TITLE (#$NUMBER)'
|
change-template: '- $TITLE (#$NUMBER)'
|
||||||
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
||||||
|
exclude-contributors:
|
||||||
|
- dependabot
|
||||||
|
- dependabot[bot]
|
||||||
version-resolver:
|
version-resolver:
|
||||||
major:
|
major:
|
||||||
labels:
|
labels:
|
||||||
- 'major'
|
- 'major'
|
||||||
|
- '❗ BreakingChange'
|
||||||
minor:
|
minor:
|
||||||
labels:
|
labels:
|
||||||
- 'minor'
|
- 'minor'
|
||||||
|
7
.github/release-drafter-s3.yml
vendored
7
.github/release-drafter-s3.yml
vendored
@@ -4,6 +4,9 @@ tag-prefix: s3/v
|
|||||||
include-paths:
|
include-paths:
|
||||||
- s3
|
- s3
|
||||||
categories:
|
categories:
|
||||||
|
- title: '❗ Breaking Changes'
|
||||||
|
labels:
|
||||||
|
- '❗ BreakingChange'
|
||||||
- title: '🚀 New'
|
- title: '🚀 New'
|
||||||
labels:
|
labels:
|
||||||
- '✏️ Feature'
|
- '✏️ Feature'
|
||||||
@@ -19,10 +22,14 @@ categories:
|
|||||||
- '📒 Documentation'
|
- '📒 Documentation'
|
||||||
change-template: '- $TITLE (#$NUMBER)'
|
change-template: '- $TITLE (#$NUMBER)'
|
||||||
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
||||||
|
exclude-contributors:
|
||||||
|
- dependabot
|
||||||
|
- dependabot[bot]
|
||||||
version-resolver:
|
version-resolver:
|
||||||
major:
|
major:
|
||||||
labels:
|
labels:
|
||||||
- 'major'
|
- 'major'
|
||||||
|
- '❗ BreakingChange'
|
||||||
minor:
|
minor:
|
||||||
labels:
|
labels:
|
||||||
- 'minor'
|
- 'minor'
|
||||||
|
7
.github/release-drafter-sqlite3.yml
vendored
7
.github/release-drafter-sqlite3.yml
vendored
@@ -4,6 +4,9 @@ tag-prefix: sqlite3/v
|
|||||||
include-paths:
|
include-paths:
|
||||||
- sqlite3
|
- sqlite3
|
||||||
categories:
|
categories:
|
||||||
|
- title: '❗ Breaking Changes'
|
||||||
|
labels:
|
||||||
|
- '❗ BreakingChange'
|
||||||
- title: '🚀 New'
|
- title: '🚀 New'
|
||||||
labels:
|
labels:
|
||||||
- '✏️ Feature'
|
- '✏️ Feature'
|
||||||
@@ -19,10 +22,14 @@ categories:
|
|||||||
- '📒 Documentation'
|
- '📒 Documentation'
|
||||||
change-template: '- $TITLE (#$NUMBER)'
|
change-template: '- $TITLE (#$NUMBER)'
|
||||||
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
||||||
|
exclude-contributors:
|
||||||
|
- dependabot
|
||||||
|
- dependabot[bot]
|
||||||
version-resolver:
|
version-resolver:
|
||||||
major:
|
major:
|
||||||
labels:
|
labels:
|
||||||
- 'major'
|
- 'major'
|
||||||
|
- '❗ BreakingChange'
|
||||||
minor:
|
minor:
|
||||||
labels:
|
labels:
|
||||||
- 'minor'
|
- 'minor'
|
||||||
|
83
.github/scripts/sync_docs.sh
vendored
Executable file
83
.github/scripts/sync_docs.sh
vendored
Executable file
@@ -0,0 +1,83 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Some env variables
|
||||||
|
BRANCH="main"
|
||||||
|
REPO_URL="github.com/gofiber/docs.git"
|
||||||
|
AUTHOR_EMAIL="github-actions[bot]@users.noreply.github.com"
|
||||||
|
AUTHOR_USERNAME="github-actions[bot]"
|
||||||
|
VERSION_FILE="storage_versions.json"
|
||||||
|
REPO_DIR="storage"
|
||||||
|
COMMIT_URL="https://github.com/gofiber/storage"
|
||||||
|
DOCUSAURUS_COMMAND="npm run docusaurus -- docs:version:storage"
|
||||||
|
|
||||||
|
# Set commit author
|
||||||
|
git config --global user.email "${AUTHOR_EMAIL}"
|
||||||
|
git config --global user.name "${AUTHOR_USERNAME}"
|
||||||
|
|
||||||
|
git clone https://${TOKEN}@${REPO_URL} fiber-docs
|
||||||
|
|
||||||
|
# Handle push event
|
||||||
|
if [ "$EVENT" == "push" ]; then
|
||||||
|
latest_commit=$(git rev-parse --short HEAD)
|
||||||
|
|
||||||
|
for f in $(find . -type f -name "*.md" -not -path "./fiber-docs/*"); do
|
||||||
|
log_output=$(git log --oneline "${BRANCH}" HEAD~1..HEAD --name-status -- "${f}")
|
||||||
|
|
||||||
|
if [[ $log_output != "" || ! -f "fiber-docs/docs/${REPO_DIR}/$f" ]]; then
|
||||||
|
mkdir -p fiber-docs/docs/${REPO_DIR}/$(dirname $f)
|
||||||
|
cp "${f}" fiber-docs/docs/${REPO_DIR}/$f
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Handle release event
|
||||||
|
elif [ "$EVENT" == "release" ]; then
|
||||||
|
# Extract package name from tag
|
||||||
|
package_name="${TAG_NAME%/*}"
|
||||||
|
major_version="${TAG_NAME#*/}"
|
||||||
|
major_version="${major_version%%.*}"
|
||||||
|
|
||||||
|
# Form new version name
|
||||||
|
new_version="${package_name}_${major_version}.x.x"
|
||||||
|
|
||||||
|
cd fiber-docs/ || true
|
||||||
|
npm ci
|
||||||
|
|
||||||
|
# Check if contrib_versions.json exists and modify it if required
|
||||||
|
if [[ -f $VERSION_FILE ]]; then
|
||||||
|
jq --arg new_version "$new_version" 'del(.[] | select(. == $new_version))' $VERSION_FILE > temp.json && mv temp.json $VERSION_FILE
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Run docusaurus versioning command
|
||||||
|
$DOCUSAURUS_COMMAND "${new_version}"
|
||||||
|
|
||||||
|
if [[ -f $VERSION_FILE ]]; then
|
||||||
|
jq 'sort | reverse' ${VERSION_FILE} > temp.json && mv temp.json ${VERSION_FILE}
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Push changes
|
||||||
|
cd fiber-docs/ || true
|
||||||
|
git add .
|
||||||
|
if [[ $EVENT == "push" ]]; then
|
||||||
|
git commit -m "Add docs from ${COMMIT_URL}/commit/${latest_commit}"
|
||||||
|
elif [[ $EVENT == "release" ]]; then
|
||||||
|
git commit -m "Sync docs for release ${COMMIT_URL}/releases/tag/${TAG_NAME}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
MAX_RETRIES=5
|
||||||
|
DELAY=5
|
||||||
|
retry=0
|
||||||
|
|
||||||
|
while ((retry < MAX_RETRIES))
|
||||||
|
do
|
||||||
|
git push https://${TOKEN}@${REPO_URL} && break
|
||||||
|
retry=$((retry + 1))
|
||||||
|
git pull --rebase
|
||||||
|
sleep $DELAY
|
||||||
|
done
|
||||||
|
|
||||||
|
if ((retry == MAX_RETRIES))
|
||||||
|
then
|
||||||
|
echo "Failed to push after $MAX_RETRIES attempts. Exiting with 1."
|
||||||
|
exit 1
|
||||||
|
fi
|
12
.github/workflows/auto-labeler.yml
vendored
12
.github/workflows/auto-labeler.yml
vendored
@@ -4,13 +4,19 @@ on:
|
|||||||
types: [ opened, edited, milestoned ]
|
types: [ opened, edited, milestoned ]
|
||||||
pull_request_target:
|
pull_request_target:
|
||||||
types: [ opened ]
|
types: [ opened ]
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
issues: write
|
||||||
|
pull-requests: write
|
||||||
|
statuses: write
|
||||||
|
checks: write
|
||||||
jobs:
|
jobs:
|
||||||
labeler:
|
labeler:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
if: ${{ github.actor != 'dependabot[bot]' }}
|
||||||
steps:
|
steps:
|
||||||
- name: Check Labels
|
- name: Check Labels
|
||||||
id: labeler
|
id: labeler
|
||||||
uses: jimschubert/labeler-action@v2
|
uses: fuxingloh/multi-labeler@v2
|
||||||
with:
|
with:
|
||||||
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
github-token: ${{secrets.GITHUB_TOKEN}}
|
||||||
|
2
.github/workflows/dependabot_automerge.yml
vendored
2
.github/workflows/dependabot_automerge.yml
vendored
@@ -28,7 +28,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Dependabot metadata
|
- name: Dependabot metadata
|
||||||
id: metadata
|
id: metadata
|
||||||
uses: dependabot/fetch-metadata@v1.3.6
|
uses: dependabot/fetch-metadata@v1.6.0
|
||||||
with:
|
with:
|
||||||
github-token: "${{ secrets.PR_TOKEN }}"
|
github-token: "${{ secrets.PR_TOKEN }}"
|
||||||
- name: Enable auto-merge for Dependabot PRs
|
- name: Enable auto-merge for Dependabot PRs
|
||||||
|
31
.github/workflows/golangci-lint.yml
vendored
Normal file
31
.github/workflows/golangci-lint.yml
vendored
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
name: Golangci Lint Check
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- "master"
|
||||||
|
- "main"
|
||||||
|
paths-ignore:
|
||||||
|
- "**.md"
|
||||||
|
- LICENSE
|
||||||
|
- ".github/ISSUE_TEMPLATE/*.yml"
|
||||||
|
- ".github/dependabot.yml"
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- "*"
|
||||||
|
paths-ignore:
|
||||||
|
- "**.md"
|
||||||
|
- LICENSE
|
||||||
|
- ".github/ISSUE_TEMPLATE/*.yml"
|
||||||
|
- ".github/dependabot.yml"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
golangci-lint:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Fetch Repository
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
- name: Run golangci-lint
|
||||||
|
uses: reviewdog/action-golangci-lint@v2
|
||||||
|
with:
|
||||||
|
golangci_lint_flags: "--tests=false"
|
118
.github/workflows/gosec.yml
vendored
Normal file
118
.github/workflows/gosec.yml
vendored
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
name: Gosec Security Scan
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- "master"
|
||||||
|
- "main"
|
||||||
|
paths-ignore:
|
||||||
|
- "**.md"
|
||||||
|
- LICENSE
|
||||||
|
- ".github/ISSUE_TEMPLATE/*.yml"
|
||||||
|
- ".github/dependabot.yml"
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- "*"
|
||||||
|
paths-ignore:
|
||||||
|
- "**.md"
|
||||||
|
- LICENSE
|
||||||
|
- ".github/ISSUE_TEMPLATE/*.yml"
|
||||||
|
- ".github/dependabot.yml"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
gosec-scan:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
env:
|
||||||
|
GO111MODULE: on
|
||||||
|
steps:
|
||||||
|
- name: Fetch Repository
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
- name: Install Go
|
||||||
|
uses: actions/setup-go@v4
|
||||||
|
with:
|
||||||
|
go-version: '^1.18.x'
|
||||||
|
check-latest: true
|
||||||
|
cache: false
|
||||||
|
- name: Install Gosec
|
||||||
|
run: go install github.com/securego/gosec/v2/cmd/gosec@latest
|
||||||
|
- name: Run Gosec (root)
|
||||||
|
working-directory: .
|
||||||
|
run: |
|
||||||
|
gosec -exclude-dir=arangodb -exclude-dir=badger -exclude-dir=couchbase -exclude-dir=dynamodb -exclude-dir=etcd -exclude-dir=memcache -exclude-dir=memory -exclude-dir=mongodb -exclude-dir=mysql -exclude-dir=postgres -exclude-dir=redis -exclude-dir=ristretto -exclude-dir=sqlite3 -exclude-dir=s3 -exclude-dir=bbolt -exclude-dir=azureblob -exclude-dir=mssql -exclude-dir=pebble -exclude-dir=coherence ./....
|
||||||
|
# -----
|
||||||
|
- name: Run Gosec (arangodb)
|
||||||
|
working-directory: ./arangodb
|
||||||
|
run: gosec ./...
|
||||||
|
# -----
|
||||||
|
- name: Run Gosec (badger)
|
||||||
|
working-directory: ./badger
|
||||||
|
run: gosec ./...
|
||||||
|
# -----
|
||||||
|
- name: Run Gosec (couchbase)
|
||||||
|
working-directory: ./couchbase
|
||||||
|
run: gosec ./...
|
||||||
|
# -----
|
||||||
|
- name: Run Gosec (coherence)
|
||||||
|
working-directory: ./coherence
|
||||||
|
run: gosec ./...
|
||||||
|
# -----
|
||||||
|
- name: Run Gosec (dynamodb)
|
||||||
|
working-directory: ./dynamodb
|
||||||
|
run: gosec ./...
|
||||||
|
# -----
|
||||||
|
- name: Run Gosec (etcd)
|
||||||
|
working-directory: ./etcd
|
||||||
|
run: gosec ./...
|
||||||
|
# -----
|
||||||
|
- name: Run Gosec (memcache)
|
||||||
|
working-directory: ./memcache
|
||||||
|
run: gosec ./...
|
||||||
|
# -----
|
||||||
|
- name: Run Gosec (memory)
|
||||||
|
working-directory: ./memory
|
||||||
|
run: gosec ./...
|
||||||
|
# -----
|
||||||
|
- name: Run Gosec (mongodb)
|
||||||
|
working-directory: ./mongodb
|
||||||
|
run: gosec ./...
|
||||||
|
# -----
|
||||||
|
- name: Run Gosec (mysql)
|
||||||
|
working-directory: ./mysql
|
||||||
|
run: gosec ./...
|
||||||
|
# -----
|
||||||
|
- name: Run Gosec (postgres)
|
||||||
|
working-directory: ./postgres
|
||||||
|
run: gosec ./...
|
||||||
|
# -----
|
||||||
|
- name: Run Gosec (redis)
|
||||||
|
working-directory: ./redis
|
||||||
|
run: gosec ./...
|
||||||
|
# -----
|
||||||
|
- name: Run Gosec (sqlite3)
|
||||||
|
working-directory: ./sqlite3
|
||||||
|
run: gosec ./...
|
||||||
|
# -----
|
||||||
|
- name: Run Gosec (s3)
|
||||||
|
working-directory: ./s3
|
||||||
|
run: gosec ./...
|
||||||
|
# -----
|
||||||
|
- name: Run Gosec (ristretto)
|
||||||
|
working-directory: ./ristretto
|
||||||
|
run: gosec ./...
|
||||||
|
# -----
|
||||||
|
- name: Run Gosec (bbolt)
|
||||||
|
working-directory: ./bbolt
|
||||||
|
run: gosec ./...
|
||||||
|
# -----
|
||||||
|
- name: Run Gosec (azureblob)
|
||||||
|
working-directory: ./azureblob
|
||||||
|
run: gosec ./...
|
||||||
|
# -----
|
||||||
|
- name: Run Gosec (mssql)
|
||||||
|
working-directory: ./mssql
|
||||||
|
run: gosec ./...
|
||||||
|
# -----
|
||||||
|
- name: Run Gosec (pebble)
|
||||||
|
working-directory: ./pebble
|
||||||
|
run: gosec ./...
|
||||||
|
# -----
|
39
.github/workflows/govulncheck.yml
vendored
Normal file
39
.github/workflows/govulncheck.yml
vendored
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
name: Govulncheck Security Scan
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- "master"
|
||||||
|
- "main"
|
||||||
|
paths-ignore:
|
||||||
|
- "**.md"
|
||||||
|
- LICENSE
|
||||||
|
- ".github/ISSUE_TEMPLATE/*.yml"
|
||||||
|
- ".github/dependabot.yml"
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- "*"
|
||||||
|
paths-ignore:
|
||||||
|
- "**.md"
|
||||||
|
- LICENSE
|
||||||
|
- ".github/ISSUE_TEMPLATE/*.yml"
|
||||||
|
- ".github/dependabot.yml"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
govulncheck-check:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
env:
|
||||||
|
GO111MODULE: on
|
||||||
|
steps:
|
||||||
|
- name: Fetch Repository
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
- name: Install Go
|
||||||
|
uses: actions/setup-go@v4
|
||||||
|
with:
|
||||||
|
go-version: 'stable'
|
||||||
|
check-latest: true
|
||||||
|
cache: false
|
||||||
|
- name: Install Govulncheck
|
||||||
|
run: go install golang.org/x/vuln/cmd/govulncheck@latest
|
||||||
|
- name: Run Govulncheck
|
||||||
|
run: govulncheck ./...
|
17
.github/workflows/linter.yml
vendored
17
.github/workflows/linter.yml
vendored
@@ -1,17 +0,0 @@
|
|||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
- main
|
|
||||||
pull_request:
|
|
||||||
name: Linter
|
|
||||||
jobs:
|
|
||||||
Golint:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Fetch Repository
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
- name: Run Golint
|
|
||||||
uses: reviewdog/action-golangci-lint@v2
|
|
||||||
with:
|
|
||||||
golangci_lint_flags: "--tests=false"
|
|
19
.github/workflows/release-drafter-coherence.yml
vendored
Normal file
19
.github/workflows/release-drafter-coherence.yml
vendored
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
name: Release Drafter Coherence
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
# branches to consider in the event; optional, defaults to all
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- 'coherence/**'
|
||||||
|
jobs:
|
||||||
|
draft_release_coherence:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
timeout-minutes: 30
|
||||||
|
steps:
|
||||||
|
- uses: release-drafter/release-drafter@v5
|
||||||
|
with:
|
||||||
|
config-name: release-drafter-coherence.yml
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
19
.github/workflows/release-drafter-couchbase.yml
vendored
Normal file
19
.github/workflows/release-drafter-couchbase.yml
vendored
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
name: Release Drafter Couchbase
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
# branches to consider in the event; optional, defaults to all
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- 'couchbase/**'
|
||||||
|
jobs:
|
||||||
|
draft_release_couchbase:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
timeout-minutes: 30
|
||||||
|
steps:
|
||||||
|
- uses: release-drafter/release-drafter@v5
|
||||||
|
with:
|
||||||
|
config-name: release-drafter-couchbase.yml
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
19
.github/workflows/release-drafter-etcd.yml
vendored
Normal file
19
.github/workflows/release-drafter-etcd.yml
vendored
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
name: Release Drafter Etcd
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
# branches to consider in the event; optional, defaults to all
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- 'etcd/**'
|
||||||
|
jobs:
|
||||||
|
draft_release_etcd:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
timeout-minutes: 30
|
||||||
|
steps:
|
||||||
|
- uses: release-drafter/release-drafter@v5
|
||||||
|
with:
|
||||||
|
config-name: release-drafter-etcd.yml
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
19
.github/workflows/release-drafter-pebble.yml
vendored
Normal file
19
.github/workflows/release-drafter-pebble.yml
vendored
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
name: Release Drafter Pebble
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
# branches to consider in the event; optional, defaults to all
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- "pebble/**"
|
||||||
|
jobs:
|
||||||
|
draft_release_pebble:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
timeout-minutes: 30
|
||||||
|
steps:
|
||||||
|
- uses: release-drafter/release-drafter@v5
|
||||||
|
with:
|
||||||
|
config-name: release-drafter-pebble.yml
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
85
.github/workflows/security.yml
vendored
85
.github/workflows/security.yml
vendored
@@ -1,85 +0,0 @@
|
|||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
- main
|
|
||||||
pull_request:
|
|
||||||
name: Security
|
|
||||||
jobs:
|
|
||||||
Gosec:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Fetch Repository
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
- name: Install Go
|
|
||||||
uses: actions/setup-go@v3
|
|
||||||
with:
|
|
||||||
go-version: '^1.17.6'
|
|
||||||
- name: Install Gosec
|
|
||||||
run: |
|
|
||||||
export PATH=${PATH}:`go env GOPATH`/bin
|
|
||||||
go install github.com/securego/gosec/v2/cmd/gosec@latest
|
|
||||||
- name: Run Gosec (root)
|
|
||||||
working-directory: .
|
|
||||||
run: "`go env GOPATH`/bin/gosec -exclude-dir=internal -exclude-dir=arangodb -exclude-dir=badger -exclude-dir=dynamodb -exclude-dir=memcache -exclude-dir=memory -exclude-dir=mongodb -exclude-dir=mysql -exclude-dir=postgres -exclude-dir=redis -exclude-dir=ristretto -exclude-dir=sqlite3 -exclude-dir=s3 -exclude-dir=bbolt -exclude-dir=azureblob -exclude-dir=mssql ./..."
|
|
||||||
# -----
|
|
||||||
- name: Run Gosec (arangodb)
|
|
||||||
working-directory: ./arangodb
|
|
||||||
run: "`go env GOPATH`/bin/gosec -exclude-dir=internal ./..."
|
|
||||||
# -----
|
|
||||||
- name: Run Gosec (badger)
|
|
||||||
working-directory: ./badger
|
|
||||||
run: "`go env GOPATH`/bin/gosec -exclude-dir=internal ./..."
|
|
||||||
# -----
|
|
||||||
- name: Run Gosec (dynamodb)
|
|
||||||
working-directory: ./dynamodb
|
|
||||||
run: "`go env GOPATH`/bin/gosec -exclude-dir=internal ./..."
|
|
||||||
# -----
|
|
||||||
- name: Run Gosec (memcache)
|
|
||||||
working-directory: ./memcache
|
|
||||||
run: "`go env GOPATH`/bin/gosec -exclude-dir=internal ./..."
|
|
||||||
# -----
|
|
||||||
- name: Run Gosec (memory)
|
|
||||||
working-directory: ./memory
|
|
||||||
run: "`go env GOPATH`/bin/gosec -exclude-dir=internal ./..."
|
|
||||||
# -----
|
|
||||||
- name: Run Gosec (mongodb)
|
|
||||||
working-directory: ./mongodb
|
|
||||||
run: "`go env GOPATH`/bin/gosec -exclude-dir=internal ./..."
|
|
||||||
# -----
|
|
||||||
- name: Run Gosec (mysql)
|
|
||||||
working-directory: ./mysql
|
|
||||||
run: "`go env GOPATH`/bin/gosec -exclude-dir=internal ./..."
|
|
||||||
# -----
|
|
||||||
- name: Run Gosec (postgres)
|
|
||||||
working-directory: ./postgres
|
|
||||||
run: "`go env GOPATH`/bin/gosec -exclude-dir=internal ./..."
|
|
||||||
# -----
|
|
||||||
- name: Run Gosec (redis)
|
|
||||||
working-directory: ./redis
|
|
||||||
run: "`go env GOPATH`/bin/gosec -exclude-dir=internal ./..."
|
|
||||||
# -----
|
|
||||||
- name: Run Gosec (sqlite3)
|
|
||||||
working-directory: ./sqlite3
|
|
||||||
run: "`go env GOPATH`/bin/gosec -exclude-dir=internal ./..."
|
|
||||||
# -----
|
|
||||||
- name: Run Gosec (s3)
|
|
||||||
working-directory: ./s3
|
|
||||||
run: "`go env GOPATH`/bin/gosec -exclude-dir=internal ./..."
|
|
||||||
# -----
|
|
||||||
- name: Run Gosec (ristretto)
|
|
||||||
working-directory: ./ristretto
|
|
||||||
run: "`go env GOPATH`/bin/gosec -exclude-dir=internal ./..."
|
|
||||||
# -----
|
|
||||||
- name: Run Gosec (bbolt)
|
|
||||||
working-directory: ./bbolt
|
|
||||||
run: "`go env GOPATH`/bin/gosec -exclude-dir=internal ./..."
|
|
||||||
# -----
|
|
||||||
- name: Run Gosec (azureblob)
|
|
||||||
working-directory: ./azureblob
|
|
||||||
run: "`go env GOPATH`/bin/gosec -exclude-dir=internal ./..."
|
|
||||||
# -----
|
|
||||||
- name: Run Gosec (mssql)
|
|
||||||
working-directory: ./mssql
|
|
||||||
run: "`go env GOPATH`/bin/gosec -exclude-dir=internal ./..."
|
|
||||||
# -----
|
|
38
.github/workflows/sync-docs.yml
vendored
Normal file
38
.github/workflows/sync-docs.yml
vendored
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
name: 'Sync docs'
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- '**/*.md'
|
||||||
|
release:
|
||||||
|
types: [published]
|
||||||
|
branches:
|
||||||
|
- '*/v[0-9]+.[0-9]+.[0-9]+'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
sync-docs:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
ref: ${{ github.event.pull_request.head.sha }}
|
||||||
|
fetch-depth: 2
|
||||||
|
|
||||||
|
- name: Setup Node.js environment
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
node-version: '18'
|
||||||
|
|
||||||
|
- name: Install JQ
|
||||||
|
run: sudo apt-get install jq
|
||||||
|
|
||||||
|
- name: Sync docs
|
||||||
|
run: ./.github/scripts/sync_docs.sh
|
||||||
|
env:
|
||||||
|
EVENT: ${{ github.event_name }}
|
||||||
|
TAG_NAME: ${{ github.ref_name }}
|
||||||
|
TOKEN: ${{ secrets.DOC_SYNC_TOKEN }}
|
30
.github/workflows/test-arangodb.yml
vendored
30
.github/workflows/test-arangodb.yml
vendored
@@ -22,34 +22,16 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
go-version:
|
go-version:
|
||||||
- 1.16.x
|
- 1.17.x
|
||||||
- 1.18.x
|
- 1.18.x
|
||||||
- 1.19.x
|
- 1.19.x
|
||||||
platform:
|
- 1.20.x
|
||||||
- ubuntu-latest
|
|
||||||
- windows-latest
|
|
||||||
steps:
|
steps:
|
||||||
- name: Install Go
|
|
||||||
uses: actions/setup-go@v3
|
|
||||||
with:
|
|
||||||
go-version: '${{ matrix.go-version }}'
|
|
||||||
- name: Setup Golang caches
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
# In order:
|
|
||||||
# * Module download cache
|
|
||||||
# * Build cache (Linux)
|
|
||||||
# * Build cache (Mac)
|
|
||||||
# * Build cache (Windows)
|
|
||||||
path: |
|
|
||||||
~/go/pkg/mod
|
|
||||||
~/.cache/go-build
|
|
||||||
~/Library/Caches/go-build
|
|
||||||
~\AppData\Local\go-build
|
|
||||||
key: ${{ runner.os }}-go-${{ matrix.go-version }}-${{ hashFiles('**/go.sum') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-go-${{ matrix.go-version }}-
|
|
||||||
- name: Fetch Repository
|
- name: Fetch Repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
- name: Install Go
|
||||||
|
uses: actions/setup-go@v4
|
||||||
|
with:
|
||||||
|
go-version: '${{ matrix.go-version }}'
|
||||||
- name: Run Test
|
- name: Run Test
|
||||||
run: cd ./arangodb && go test ./... -v -race
|
run: cd ./arangodb && go test ./... -v -race
|
||||||
|
28
.github/workflows/test-azureblob.yml
vendored
28
.github/workflows/test-azureblob.yml
vendored
@@ -17,34 +17,16 @@ jobs:
|
|||||||
go-version:
|
go-version:
|
||||||
- 1.18.x
|
- 1.18.x
|
||||||
- 1.19.x
|
- 1.19.x
|
||||||
platform:
|
- 1.20.x
|
||||||
- ubuntu-latest
|
|
||||||
- windows-latest
|
|
||||||
steps:
|
steps:
|
||||||
- name: Install Azurite
|
- name: Install Azurite
|
||||||
run: |
|
run: |
|
||||||
docker run -d -p 10000:10000 mcr.microsoft.com/azure-storage/azurite azurite-blob --blobHost 0.0.0.0 --blobPort 10000
|
docker run -d -p 10000:10000 mcr.microsoft.com/azure-storage/azurite azurite-blob --blobHost 0.0.0.0 --blobPort 10000
|
||||||
- name: Install Go
|
|
||||||
uses: actions/setup-go@v3
|
|
||||||
with:
|
|
||||||
go-version: '${{ matrix.go-version }}'
|
|
||||||
- name: Setup Golang caches
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
# In order:
|
|
||||||
# * Module download cache
|
|
||||||
# * Build cache (Linux)
|
|
||||||
# * Build cache (Mac)
|
|
||||||
# * Build cache (Windows)
|
|
||||||
path: |
|
|
||||||
~/go/pkg/mod
|
|
||||||
~/.cache/go-build
|
|
||||||
~/Library/Caches/go-build
|
|
||||||
~\AppData\Local\go-build
|
|
||||||
key: ${{ runner.os }}-go-${{ matrix.go-version }}-${{ hashFiles('**/go.sum') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-go-${{ matrix.go-version }}-
|
|
||||||
- name: Fetch Repository
|
- name: Fetch Repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
- name: Install Go
|
||||||
|
uses: actions/setup-go@v4
|
||||||
|
with:
|
||||||
|
go-version: '${{ matrix.go-version }}'
|
||||||
- name: Run Test
|
- name: Run Test
|
||||||
run: cd ./azureblob && go test ./... -v -race
|
run: cd ./azureblob && go test ./... -v -race
|
||||||
|
31
.github/workflows/test-badger.yml
vendored
31
.github/workflows/test-badger.yml
vendored
@@ -16,33 +16,14 @@ jobs:
|
|||||||
go-version:
|
go-version:
|
||||||
- 1.18.x
|
- 1.18.x
|
||||||
- 1.19.x
|
- 1.19.x
|
||||||
platform:
|
- 1.20.x
|
||||||
- ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
- windows-latest
|
|
||||||
runs-on: '${{ matrix.platform }}'
|
|
||||||
steps:
|
steps:
|
||||||
- name: Install Go
|
|
||||||
uses: actions/setup-go@v3
|
|
||||||
with:
|
|
||||||
go-version: '${{ matrix.go-version }}'
|
|
||||||
- name: Setup Golang caches
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
# In order:
|
|
||||||
# * Module download cache
|
|
||||||
# * Build cache (Linux)
|
|
||||||
# * Build cache (Mac)
|
|
||||||
# * Build cache (Windows)
|
|
||||||
path: |
|
|
||||||
~/go/pkg/mod
|
|
||||||
~/.cache/go-build
|
|
||||||
~/Library/Caches/go-build
|
|
||||||
~\AppData\Local\go-build
|
|
||||||
key: ${{ runner.os }}-go-${{ matrix.go-version }}-${{ hashFiles('**/go.sum') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-go-${{ matrix.go-version }}-
|
|
||||||
|
|
||||||
- name: Fetch Repository
|
- name: Fetch Repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
- name: Install Go
|
||||||
|
uses: actions/setup-go@v4
|
||||||
|
with:
|
||||||
|
go-version: '${{ matrix.go-version }}'
|
||||||
- name: Test Badger
|
- name: Test Badger
|
||||||
run: cd ./badger && go test ./... -v -race
|
run: cd ./badger && go test ./... -v -race
|
||||||
|
30
.github/workflows/test-bbolt.yml
vendored
30
.github/workflows/test-bbolt.yml
vendored
@@ -17,31 +17,13 @@ jobs:
|
|||||||
go-version:
|
go-version:
|
||||||
- 1.18.x
|
- 1.18.x
|
||||||
- 1.19.x
|
- 1.19.x
|
||||||
platform:
|
- 1.20.x
|
||||||
- ubuntu-latest
|
|
||||||
- windows-latest
|
|
||||||
steps:
|
steps:
|
||||||
- name: Install Go
|
|
||||||
uses: actions/setup-go@v3
|
|
||||||
with:
|
|
||||||
go-version: '${{ matrix.go-version }}'
|
|
||||||
- name: Setup Golang caches
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
# In order:
|
|
||||||
# * Module download cache
|
|
||||||
# * Build cache (Linux)
|
|
||||||
# * Build cache (Mac)
|
|
||||||
# * Build cache (Windows)
|
|
||||||
path: |
|
|
||||||
~/go/pkg/mod
|
|
||||||
~/.cache/go-build
|
|
||||||
~/Library/Caches/go-build
|
|
||||||
~\AppData\Local\go-build
|
|
||||||
key: ${{ runner.os }}-go-${{ matrix.go-version }}-${{ hashFiles('**/go.sum') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-go-${{ matrix.go-version }}-
|
|
||||||
- name: Fetch Repository
|
- name: Fetch Repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
- name: Install Go
|
||||||
|
uses: actions/setup-go@v4
|
||||||
|
with:
|
||||||
|
go-version: '${{ matrix.go-version }}'
|
||||||
- name: Run Test
|
- name: Run Test
|
||||||
run: cd ./bbolt && go mod tidy && go test ./... -v -race
|
run: cd ./bbolt && go test ./... -v -race
|
||||||
|
33
.github/workflows/test-coherence.yml
vendored
Normal file
33
.github/workflows/test-coherence.yml
vendored
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- 'coherence/**'
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- 'coherence/**'
|
||||||
|
name: "Tests Coherence"
|
||||||
|
jobs:
|
||||||
|
Tests:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
go-version:
|
||||||
|
- 1.19.x
|
||||||
|
- 1.20.x
|
||||||
|
- 1.21.x
|
||||||
|
steps:
|
||||||
|
- name: Fetch Repository
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
- name: Startup Coherence
|
||||||
|
run: |
|
||||||
|
docker run -d -p 1408:1408 -p 30000:30000 ghcr.io/oracle/coherence-ce:22.06.5
|
||||||
|
sleep 30
|
||||||
|
- name: Install Go
|
||||||
|
uses: actions/setup-go@v4
|
||||||
|
with:
|
||||||
|
go-version: '${{ matrix.go-version }}'
|
||||||
|
- name: Run Test
|
||||||
|
run: cd ./coherence && go clean -testcache && go test ./... -v
|
35
.github/workflows/test-couchbase.yml
vendored
Normal file
35
.github/workflows/test-couchbase.yml
vendored
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- 'couchbase/**'
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- 'couchbase/**'
|
||||||
|
name: "Tests Couchbase"
|
||||||
|
jobs:
|
||||||
|
Tests:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
go-version:
|
||||||
|
- 1.19.x
|
||||||
|
- 1.20.x
|
||||||
|
steps:
|
||||||
|
- name: Fetch Repository
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
- name: Install couchbase
|
||||||
|
run: |
|
||||||
|
docker run --name couchbase -d -p 8091-8097:8091-8097 -p 9123:9123 -p 11207:11207 -p 11210:11210 -p 11280:11280 -p 18091-18097:18091-18097 couchbase:enterprise-7.1.1
|
||||||
|
sleep 10
|
||||||
|
docker exec --tty couchbase couchbase-cli cluster-init -c localhost:8091 --cluster-username admin --cluster-password 123456 --cluster-ramsize 256 --services data
|
||||||
|
sleep 10
|
||||||
|
docker exec --tty couchbase couchbase-cli bucket-create -c localhost:8091 --username admin --password 123456 --bucket fiber_storage --bucket-type couchbase --bucket-ramsize 100 --enable-flush 1
|
||||||
|
- name: Install Go
|
||||||
|
uses: actions/setup-go@v4
|
||||||
|
with:
|
||||||
|
go-version: '${{ matrix.go-version }}'
|
||||||
|
- name: Run Test
|
||||||
|
run: cd ./couchbase && go test ./... -v -race
|
30
.github/workflows/test-dynamodb.yml
vendored
30
.github/workflows/test-dynamodb.yml
vendored
@@ -20,34 +20,16 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
go-version:
|
go-version:
|
||||||
- 1.16.x
|
- 1.17.x
|
||||||
- 1.18.x
|
- 1.18.x
|
||||||
- 1.19.x
|
- 1.19.x
|
||||||
platform:
|
- 1.20.x
|
||||||
- ubuntu-latest
|
|
||||||
- windows-latest
|
|
||||||
steps:
|
steps:
|
||||||
- name: Install Go
|
|
||||||
uses: actions/setup-go@v3
|
|
||||||
with:
|
|
||||||
go-version: '${{ matrix.go-version }}'
|
|
||||||
- name: Setup Golang caches
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
# In order:
|
|
||||||
# * Module download cache
|
|
||||||
# * Build cache (Linux)
|
|
||||||
# * Build cache (Mac)
|
|
||||||
# * Build cache (Windows)
|
|
||||||
path: |
|
|
||||||
~/go/pkg/mod
|
|
||||||
~/.cache/go-build
|
|
||||||
~/Library/Caches/go-build
|
|
||||||
~\AppData\Local\go-build
|
|
||||||
key: ${{ runner.os }}-go-${{ matrix.go-version }}-${{ hashFiles('**/go.sum') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-go-${{ matrix.go-version }}-
|
|
||||||
- name: Fetch Repository
|
- name: Fetch Repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
- name: Install Go
|
||||||
|
uses: actions/setup-go@v4
|
||||||
|
with:
|
||||||
|
go-version: '${{ matrix.go-version }}'
|
||||||
- name: Run Test
|
- name: Run Test
|
||||||
run: cd ./dynamodb && go test ./... -v -race
|
run: cd ./dynamodb && go test ./... -v -race
|
||||||
|
37
.github/workflows/test-etcd.yml
vendored
Normal file
37
.github/workflows/test-etcd.yml
vendored
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- 'etcd/**'
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- 'etcd/**'
|
||||||
|
name: "Tests Etcd"
|
||||||
|
jobs:
|
||||||
|
Tests:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
go-version:
|
||||||
|
- 1.19.x
|
||||||
|
- 1.20.x
|
||||||
|
steps:
|
||||||
|
- name: Fetch Repository
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
- name: Install etcd
|
||||||
|
run: |
|
||||||
|
docker run -d --name Etcd-server \
|
||||||
|
--publish 2379:2379 \
|
||||||
|
--publish 2380:2380 \
|
||||||
|
--env ALLOW_NONE_AUTHENTICATION=yes \
|
||||||
|
--env ETCD_ADVERTISE_CLIENT_URLS=http://etcd-server:2379 \
|
||||||
|
bitnami/etcd:latest
|
||||||
|
|
||||||
|
- name: Install Go
|
||||||
|
uses: actions/setup-go@v4
|
||||||
|
with:
|
||||||
|
go-version: '${{ matrix.go-version }}'
|
||||||
|
- name: Run Test
|
||||||
|
run: cd ./etcd && go test ./... -v -race
|
30
.github/workflows/test-memcache.yml
vendored
30
.github/workflows/test-memcache.yml
vendored
@@ -20,34 +20,16 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
go-version:
|
go-version:
|
||||||
- 1.16.x
|
- 1.17.x
|
||||||
- 1.18.x
|
- 1.18.x
|
||||||
- 1.19.x
|
- 1.19.x
|
||||||
platform:
|
- 1.20.x
|
||||||
- ubuntu-latest
|
|
||||||
- windows-latest
|
|
||||||
steps:
|
steps:
|
||||||
- name: Install Go
|
|
||||||
uses: actions/setup-go@v3
|
|
||||||
with:
|
|
||||||
go-version: '${{ matrix.go-version }}'
|
|
||||||
- name: Setup Golang caches
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
# In order:
|
|
||||||
# * Module download cache
|
|
||||||
# * Build cache (Linux)
|
|
||||||
# * Build cache (Mac)
|
|
||||||
# * Build cache (Windows)
|
|
||||||
path: |
|
|
||||||
~/go/pkg/mod
|
|
||||||
~/.cache/go-build
|
|
||||||
~/Library/Caches/go-build
|
|
||||||
~\AppData\Local\go-build
|
|
||||||
key: ${{ runner.os }}-go-${{ matrix.go-version }}-${{ hashFiles('**/go.sum') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-go-${{ matrix.go-version }}-
|
|
||||||
- name: Fetch Repository
|
- name: Fetch Repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
- name: Install Go
|
||||||
|
uses: actions/setup-go@v4
|
||||||
|
with:
|
||||||
|
go-version: '${{ matrix.go-version }}'
|
||||||
- name: Run Test
|
- name: Run Test
|
||||||
run: cd ./memcache && go test ./... -v -race
|
run: cd ./memcache && go test ./... -v -race
|
||||||
|
30
.github/workflows/test-memory.yml
vendored
Normal file
30
.github/workflows/test-memory.yml
vendored
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- 'memory/**'
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- 'memory/**'
|
||||||
|
name: "Tests Local Storage"
|
||||||
|
jobs:
|
||||||
|
Tests:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
go-version:
|
||||||
|
- 1.17.x
|
||||||
|
- 1.18.x
|
||||||
|
- 1.19.x
|
||||||
|
- 1.20.x
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Fetch Repository
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
- name: Install Go
|
||||||
|
uses: actions/setup-go@v4
|
||||||
|
with:
|
||||||
|
go-version: '${{ matrix.go-version }}'
|
||||||
|
- name: Test Memory
|
||||||
|
run: cd ./memory && go test ./... -v -race
|
31
.github/workflows/test-mongodb.yml
vendored
31
.github/workflows/test-mongodb.yml
vendored
@@ -20,34 +20,17 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
go-version:
|
go-version:
|
||||||
- 1.16.x
|
- 1.17.x
|
||||||
- 1.18.x
|
- 1.18.x
|
||||||
- 1.19.x
|
- 1.19.x
|
||||||
platform:
|
- 1.20.x
|
||||||
- ubuntu-latest
|
|
||||||
- windows-latest
|
|
||||||
steps:
|
steps:
|
||||||
- name: Install Go
|
|
||||||
uses: actions/setup-go@v3
|
|
||||||
with:
|
|
||||||
go-version: '${{ matrix.go-version }}'
|
|
||||||
- name: Setup Golang caches
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
# In order:
|
|
||||||
# * Module download cache
|
|
||||||
# * Build cache (Linux)
|
|
||||||
# * Build cache (Mac)
|
|
||||||
# * Build cache (Windows)
|
|
||||||
path: |
|
|
||||||
~/go/pkg/mod
|
|
||||||
~/.cache/go-build
|
|
||||||
~/Library/Caches/go-build
|
|
||||||
~\AppData\Local\go-build
|
|
||||||
key: ${{ runner.os }}-go-${{ matrix.go-version }}-${{ hashFiles('**/go.sum') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-go-${{ matrix.go-version }}-
|
|
||||||
- name: Fetch Repository
|
- name: Fetch Repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
- name: Install Go
|
||||||
|
uses: actions/setup-go@v4
|
||||||
|
with:
|
||||||
|
go-version: '${{ matrix.go-version }}'
|
||||||
- name: Run Test
|
- name: Run Test
|
||||||
run: cd ./mongodb && go test ./... -v -race
|
run: cd ./mongodb && go test ./... -v -race
|
||||||
|
|
||||||
|
31
.github/workflows/test-mssql.yml
vendored
31
.github/workflows/test-mssql.yml
vendored
@@ -14,7 +14,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
services:
|
services:
|
||||||
mssql:
|
mssql:
|
||||||
image: 'mcmoe/mssqldocker:v2019.CU4.0'
|
image: 'mcmoe/mssqldocker:latest'
|
||||||
ports:
|
ports:
|
||||||
- '1433:1433'
|
- '1433:1433'
|
||||||
env:
|
env:
|
||||||
@@ -32,35 +32,16 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
go-version:
|
go-version:
|
||||||
- 1.16.x
|
|
||||||
- 1.18.x
|
- 1.18.x
|
||||||
- 1.19.x
|
- 1.19.x
|
||||||
platform:
|
- 1.20.x
|
||||||
- ubuntu-latest
|
|
||||||
- windows-latest
|
|
||||||
steps:
|
steps:
|
||||||
- name: Install Go
|
|
||||||
uses: actions/setup-go@v3
|
|
||||||
with:
|
|
||||||
go-version: '${{ matrix.go-version }}'
|
|
||||||
- name: Setup Golang caches
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
# In order:
|
|
||||||
# * Module download cache
|
|
||||||
# * Build cache (Linux)
|
|
||||||
# * Build cache (Mac)
|
|
||||||
# * Build cache (Windows)
|
|
||||||
path: |
|
|
||||||
~/go/pkg/mod
|
|
||||||
~/.cache/go-build
|
|
||||||
~/Library/Caches/go-build
|
|
||||||
~\AppData\Local\go-build
|
|
||||||
key: ${{ runner.os }}-go-${{ matrix.go-version }}-${{ hashFiles('**/go.sum') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-go-${{ matrix.go-version }}-
|
|
||||||
- name: Fetch Repository
|
- name: Fetch Repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
- name: Install Go
|
||||||
|
uses: actions/setup-go@v4
|
||||||
|
with:
|
||||||
|
go-version: '${{ matrix.go-version }}'
|
||||||
- name: Run Test
|
- name: Run Test
|
||||||
run: cd ./mssql && go test ./... -v -race
|
run: cd ./mssql && go test ./... -v -race
|
||||||
env:
|
env:
|
||||||
|
30
.github/workflows/test-mysql.yml
vendored
30
.github/workflows/test-mysql.yml
vendored
@@ -28,35 +28,17 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
go-version:
|
go-version:
|
||||||
- 1.16.x
|
- 1.17.x
|
||||||
- 1.18.x
|
- 1.18.x
|
||||||
- 1.19.x
|
- 1.19.x
|
||||||
platform:
|
- 1.20.x
|
||||||
- ubuntu-latest
|
|
||||||
- windows-latest
|
|
||||||
steps:
|
steps:
|
||||||
- name: Install Go
|
|
||||||
uses: actions/setup-go@v3
|
|
||||||
with:
|
|
||||||
go-version: '${{ matrix.go-version }}'
|
|
||||||
- name: Setup Golang caches
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
# In order:
|
|
||||||
# * Module download cache
|
|
||||||
# * Build cache (Linux)
|
|
||||||
# * Build cache (Mac)
|
|
||||||
# * Build cache (Windows)
|
|
||||||
path: |
|
|
||||||
~/go/pkg/mod
|
|
||||||
~/.cache/go-build
|
|
||||||
~/Library/Caches/go-build
|
|
||||||
~\AppData\Local\go-build
|
|
||||||
key: ${{ runner.os }}-go-${{ matrix.go-version }}-${{ hashFiles('**/go.sum') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-go-${{ matrix.go-version }}-
|
|
||||||
- name: Fetch Repository
|
- name: Fetch Repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
- name: Install Go
|
||||||
|
uses: actions/setup-go@v4
|
||||||
|
with:
|
||||||
|
go-version: '${{ matrix.go-version }}'
|
||||||
- name: Run Test
|
- name: Run Test
|
||||||
run: cd ./mysql && go test ./... -v -race
|
run: cd ./mysql && go test ./... -v -race
|
||||||
env:
|
env:
|
||||||
|
28
.github/workflows/test-pebble.yml
vendored
Normal file
28
.github/workflows/test-pebble.yml
vendored
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- "pebble/**"
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- "pebble/**"
|
||||||
|
name: "Tests pebble"
|
||||||
|
jobs:
|
||||||
|
Tests:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
go-version:
|
||||||
|
- 1.19.x
|
||||||
|
- 1.20.x
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Fetch Repository
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
- name: Install Go
|
||||||
|
uses: actions/setup-go@v4
|
||||||
|
with:
|
||||||
|
go-version: '${{ matrix.go-version }}'
|
||||||
|
- name: Test Pebble
|
||||||
|
run: cd ./pebble && go test ./... -v -race
|
30
.github/workflows/test-postgres.yml
vendored
30
.github/workflows/test-postgres.yml
vendored
@@ -27,35 +27,15 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
go-version:
|
go-version:
|
||||||
- 1.16.x
|
|
||||||
- 1.18.x
|
|
||||||
- 1.19.x
|
- 1.19.x
|
||||||
platform:
|
- 1.20.x
|
||||||
- ubuntu-latest
|
|
||||||
- windows-latest
|
|
||||||
steps:
|
steps:
|
||||||
- name: Install Go
|
|
||||||
uses: actions/setup-go@v3
|
|
||||||
with:
|
|
||||||
go-version: '${{ matrix.go-version }}'
|
|
||||||
- name: Setup Golang caches
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
# In order:
|
|
||||||
# * Module download cache
|
|
||||||
# * Build cache (Linux)
|
|
||||||
# * Build cache (Mac)
|
|
||||||
# * Build cache (Windows)
|
|
||||||
path: |
|
|
||||||
~/go/pkg/mod
|
|
||||||
~/.cache/go-build
|
|
||||||
~/Library/Caches/go-build
|
|
||||||
~\AppData\Local\go-build
|
|
||||||
key: ${{ runner.os }}-go-${{ matrix.go-version }}-${{ hashFiles('**/go.sum') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-go-${{ matrix.go-version }}-
|
|
||||||
- name: Fetch Repository
|
- name: Fetch Repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
- name: Install Go
|
||||||
|
uses: actions/setup-go@v4
|
||||||
|
with:
|
||||||
|
go-version: '${{ matrix.go-version }}'
|
||||||
- name: Run Test
|
- name: Run Test
|
||||||
run: cd ./postgres && go test ./... -v -race
|
run: cd ./postgres && go test ./... -v -race
|
||||||
env:
|
env:
|
||||||
|
32
.github/workflows/test-redis.yml
vendored
32
.github/workflows/test-redis.yml
vendored
@@ -18,9 +18,6 @@ jobs:
|
|||||||
- 1.18.x
|
- 1.18.x
|
||||||
- 1.19.x
|
- 1.19.x
|
||||||
- 1.20.x
|
- 1.20.x
|
||||||
platform:
|
|
||||||
- ubuntu-latest
|
|
||||||
- windows-latest
|
|
||||||
redis:
|
redis:
|
||||||
- '6.x'
|
- '6.x'
|
||||||
- '7.x'
|
- '7.x'
|
||||||
@@ -43,27 +40,20 @@ jobs:
|
|||||||
--tls-key-file ./redis/tests/tls/redis.key \
|
--tls-key-file ./redis/tests/tls/redis.key \
|
||||||
--tls-ca-cert-file ./redis/tests/tls/ca.crt&
|
--tls-ca-cert-file ./redis/tests/tls/ca.crt&
|
||||||
|
|
||||||
|
- name: Setup Redis Cluster
|
||||||
|
uses: vishnudxb/redis-cluster@1.0.5
|
||||||
|
with:
|
||||||
|
master1-port: 7000
|
||||||
|
master2-port: 7001
|
||||||
|
master3-port: 7002
|
||||||
|
slave1-port: 7003
|
||||||
|
slave2-port: 7004
|
||||||
|
slave3-port: 7005
|
||||||
|
|
||||||
- name: Install Go
|
- name: Install Go
|
||||||
uses: actions/setup-go@v3
|
uses: actions/setup-go@v4
|
||||||
with:
|
with:
|
||||||
go-version: '${{ matrix.go-version }}'
|
go-version: '${{ matrix.go-version }}'
|
||||||
|
|
||||||
- name: Setup Golang caches
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
# In order:
|
|
||||||
# * Module download cache
|
|
||||||
# * Build cache (Linux)
|
|
||||||
# * Build cache (Mac)
|
|
||||||
# * Build cache (Windows)
|
|
||||||
path: |
|
|
||||||
~/go/pkg/mod
|
|
||||||
~/.cache/go-build
|
|
||||||
~/Library/Caches/go-build
|
|
||||||
~\AppData\Local\go-build
|
|
||||||
key: ${{ runner.os }}-go-${{ matrix.go-version }}-${{ hashFiles('**/go.sum') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-go-${{ matrix.go-version }}-
|
|
||||||
|
|
||||||
- name: Run Test
|
- name: Run Test
|
||||||
run: cd ./redis && go test ./... -v -race
|
run: cd ./redis && go test ./... -v -race
|
||||||
|
36
.github/workflows/test-ristretto.yml
vendored
36
.github/workflows/test-ristretto.yml
vendored
@@ -17,31 +17,13 @@ jobs:
|
|||||||
go-version:
|
go-version:
|
||||||
- 1.18.x
|
- 1.18.x
|
||||||
- 1.19.x
|
- 1.19.x
|
||||||
platform:
|
- 1.20.x
|
||||||
- ubuntu-latest
|
|
||||||
- windows-latest
|
|
||||||
steps:
|
steps:
|
||||||
- name: Install Go
|
- name: Fetch Repository
|
||||||
uses: actions/setup-go@v3
|
uses: actions/checkout@v3
|
||||||
with:
|
- name: Install Go
|
||||||
go-version: '${{ matrix.go-version }}'
|
uses: actions/setup-go@v4
|
||||||
- name: Setup Golang caches
|
with:
|
||||||
uses: actions/cache@v3
|
go-version: '${{ matrix.go-version }}'
|
||||||
with:
|
- name: Run Test
|
||||||
# In order:
|
run: cd ./ristretto && go test ./... -v -race
|
||||||
# * Module download cache
|
|
||||||
# * Build cache (Linux)
|
|
||||||
# * Build cache (Mac)
|
|
||||||
# * Build cache (Windows)
|
|
||||||
path: |
|
|
||||||
~/go/pkg/mod
|
|
||||||
~/.cache/go-build
|
|
||||||
~/Library/Caches/go-build
|
|
||||||
~\AppData\Local\go-build
|
|
||||||
key: ${{ runner.os }}-go-${{ matrix.go-version }}-${{ hashFiles('**/go.sum') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-go-${{ matrix.go-version }}-
|
|
||||||
- name: Fetch Repository
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
- name: Run Test
|
|
||||||
run: cd ./ristretto && go mod tidy && go test ./... -v -race
|
|
||||||
|
29
.github/workflows/test-s3.yml
vendored
29
.github/workflows/test-s3.yml
vendored
@@ -15,12 +15,9 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
go-version:
|
go-version:
|
||||||
- 1.16.x
|
|
||||||
- 1.18.x
|
- 1.18.x
|
||||||
- 1.19.x
|
- 1.19.x
|
||||||
platform:
|
- 1.20.x
|
||||||
- ubuntu-latest
|
|
||||||
- windows-latest
|
|
||||||
steps:
|
steps:
|
||||||
- name: Install MinIO
|
- name: Install MinIO
|
||||||
run: |
|
run: |
|
||||||
@@ -31,27 +28,11 @@ jobs:
|
|||||||
export AWS_EC2_METADATA_DISABLED=true
|
export AWS_EC2_METADATA_DISABLED=true
|
||||||
|
|
||||||
aws --endpoint-url http://127.0.0.1:9000/ s3 mb s3://testbucket
|
aws --endpoint-url http://127.0.0.1:9000/ s3 mb s3://testbucket
|
||||||
- name: Install Go
|
|
||||||
uses: actions/setup-go@v3
|
|
||||||
with:
|
|
||||||
go-version: '${{ matrix.go-version }}'
|
|
||||||
- name: Setup Golang caches
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
# In order:
|
|
||||||
# * Module download cache
|
|
||||||
# * Build cache (Linux)
|
|
||||||
# * Build cache (Mac)
|
|
||||||
# * Build cache (Windows)
|
|
||||||
path: |
|
|
||||||
~/go/pkg/mod
|
|
||||||
~/.cache/go-build
|
|
||||||
~/Library/Caches/go-build
|
|
||||||
~\AppData\Local\go-build
|
|
||||||
key: ${{ runner.os }}-go-${{ matrix.go-version }}-${{ hashFiles('**/go.sum') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-go-${{ matrix.go-version }}-
|
|
||||||
- name: Fetch Repository
|
- name: Fetch Repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
- name: Install Go
|
||||||
|
uses: actions/setup-go@v4
|
||||||
|
with:
|
||||||
|
go-version: '${{ matrix.go-version }}'
|
||||||
- name: Run Test
|
- name: Run Test
|
||||||
run: cd ./s3 && go test ./... -v -race
|
run: cd ./s3 && go test ./... -v -race
|
||||||
|
33
.github/workflows/test-sqlite3.yml
vendored
33
.github/workflows/test-sqlite3.yml
vendored
@@ -14,37 +14,18 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
go-version:
|
go-version:
|
||||||
- 1.16.x
|
- 1.17.x
|
||||||
- 1.18.x
|
- 1.18.x
|
||||||
- 1.19.x
|
- 1.19.x
|
||||||
platform:
|
- 1.20.x
|
||||||
- ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
- windows-latest
|
|
||||||
runs-on: '${{ matrix.platform }}'
|
|
||||||
steps:
|
steps:
|
||||||
- name: Install Go
|
|
||||||
uses: actions/setup-go@v3
|
|
||||||
with:
|
|
||||||
go-version: '${{ matrix.go-version }}'
|
|
||||||
- name: Setup Golang caches
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
# In order:
|
|
||||||
# * Module download cache
|
|
||||||
# * Build cache (Linux)
|
|
||||||
# * Build cache (Mac)
|
|
||||||
# * Build cache (Windows)
|
|
||||||
path: |
|
|
||||||
~/go/pkg/mod
|
|
||||||
~/.cache/go-build
|
|
||||||
~/Library/Caches/go-build
|
|
||||||
~\AppData\Local\go-build
|
|
||||||
key: ${{ runner.os }}-go-${{ matrix.go-version }}-${{ hashFiles('**/go.sum') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-go-${{ matrix.go-version }}-
|
|
||||||
|
|
||||||
- name: Fetch Repository
|
- name: Fetch Repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
- name: Install Go
|
||||||
|
uses: actions/setup-go@v4
|
||||||
|
with:
|
||||||
|
go-version: '${{ matrix.go-version }}'
|
||||||
- name: Test SQLite3 - with -race check
|
- name: Test SQLite3 - with -race check
|
||||||
if: runner.os != 'Windows'
|
if: runner.os != 'Windows'
|
||||||
run: cd ./sqlite3 && go test ./... -v -race
|
run: cd ./sqlite3 && go test ./... -v -race
|
||||||
|
49
.github/workflows/test.yml
vendored
49
.github/workflows/test.yml
vendored
@@ -1,49 +0,0 @@
|
|||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
- main
|
|
||||||
paths:
|
|
||||||
- 'memory/**'
|
|
||||||
pull_request:
|
|
||||||
paths:
|
|
||||||
- 'memory/**'
|
|
||||||
name: "Tests Local Storage"
|
|
||||||
jobs:
|
|
||||||
Tests:
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
go-version:
|
|
||||||
- 1.16.x
|
|
||||||
- 1.18.x
|
|
||||||
- 1.19.x
|
|
||||||
platform:
|
|
||||||
- ubuntu-latest
|
|
||||||
- windows-latest
|
|
||||||
runs-on: '${{ matrix.platform }}'
|
|
||||||
steps:
|
|
||||||
- name: Install Go
|
|
||||||
uses: actions/setup-go@v3
|
|
||||||
with:
|
|
||||||
go-version: '${{ matrix.go-version }}'
|
|
||||||
- name: Setup Golang caches
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
# In order:
|
|
||||||
# * Module download cache
|
|
||||||
# * Build cache (Linux)
|
|
||||||
# * Build cache (Mac)
|
|
||||||
# * Build cache (Windows)
|
|
||||||
path: |
|
|
||||||
~/go/pkg/mod
|
|
||||||
~/.cache/go-build
|
|
||||||
~/Library/Caches/go-build
|
|
||||||
~\AppData\Local\go-build
|
|
||||||
key: ${{ runner.os }}-go-${{ matrix.go-version }}-${{ hashFiles('**/go.sum') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-go-${{ matrix.go-version }}-
|
|
||||||
|
|
||||||
- name: Fetch Repository
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
- name: Test Memory
|
|
||||||
run: cd ./memory && go test ./... -v -race
|
|
19
.github/workflows/vulncheck.yml
vendored
19
.github/workflows/vulncheck.yml
vendored
@@ -1,19 +0,0 @@
|
|||||||
on: [push, pull_request_target]
|
|
||||||
name: Vulnerability Check
|
|
||||||
jobs:
|
|
||||||
Security:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Install Go
|
|
||||||
uses: actions/setup-go@v3
|
|
||||||
with:
|
|
||||||
go-version: 1.19.x
|
|
||||||
- name: Fetch Repository
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
- name: Install Govulncheck
|
|
||||||
run: |
|
|
||||||
export GO111MODULE=on
|
|
||||||
export PATH=${PATH}:`go env GOPATH`/bin
|
|
||||||
go install golang.org/x/vuln/cmd/govulncheck@latest
|
|
||||||
- name: Run Govulncheck
|
|
||||||
run: "`go env GOPATH`/bin/govulncheck ./..."
|
|
22
MIGRATE.md
22
MIGRATE.md
@@ -1,22 +0,0 @@
|
|||||||
This document contains instructions for migrating to various storage versions.
|
|
||||||
|
|
||||||
### 0.1 -> 0.2
|
|
||||||
v0.2 fixes [a bug](https://github.com/gofiber/fiber/issues/1258) in MYSQL, Postgres and Arangodb in which
|
|
||||||
inserting non-UTF8 characters would trigger a panic due to the values being saved in a TEXT column instead of a
|
|
||||||
BYTEA/BLOB column. Migration instructions (note you may need to adjust the table names if you have supplied a custom
|
|
||||||
config to the storage):
|
|
||||||
|
|
||||||
**Postgres**
|
|
||||||
```sql
|
|
||||||
ALTER TABLE fiber_storage
|
|
||||||
ALTER COLUMN v TYPE BYTEA USING v::bytea;
|
|
||||||
```
|
|
||||||
|
|
||||||
**MYSQL**
|
|
||||||
```sql
|
|
||||||
ALTER TABLE fiber_storage MODIFY COLUMN v BLOB;
|
|
||||||
```
|
|
||||||
|
|
||||||
**Arangodb**
|
|
||||||
|
|
||||||
No migration other then updating the library is necessary.
|
|
165
README.md
165
README.md
@@ -1,94 +1,71 @@
|
|||||||
<p align="center">
|
---
|
||||||
<!-- <a href="https://gofiber.io">
|
title: 👋 Welcome
|
||||||
<img alt="Fiber" height="125" src="https://raw.githubusercontent.com/gofiber/docs/master/static/fiber_v2_logo.svg">
|
description: 📦 Premade storage drivers for 🚀 Fiber.
|
||||||
</a>
|
sidebar_position: 1
|
||||||
<br> -->
|
---
|
||||||
|
|
||||||
# 📦 Storage
|
<p align="center">
|
||||||
|
<img height="125" alt="Fiber" src="https://raw.githubusercontent.com/gofiber/storage/master/.github/logo-dark.svg#gh-dark-mode-only" />
|
||||||
<a href="https://pkg.go.dev/github.com/gofiber/storage?tab=doc">
|
<img height="125" alt="Fiber" src="https://raw.githubusercontent.com/gofiber/storage/master/.github/logo.svg#gh-light-mode-only" />
|
||||||
<img src="https://img.shields.io/badge/%F0%9F%93%9A%20godoc-pkg-00ACD7.svg?color=00ACD7&style=flat">
|
<br/>
|
||||||
</a>
|
|
||||||
<a href="https://goreportcard.com/report/github.com/gofiber/storage">
|
<a href="https://pkg.go.dev/github.com/gofiber/storage?tab=doc">
|
||||||
<img src="https://img.shields.io/badge/%F0%9F%93%9D%20goreport-A%2B-75C46B">
|
<img src="https://img.shields.io/badge/%F0%9F%93%9A%20godoc-pkg-00ACD7.svg?color=00ACD7&style=flat"/>
|
||||||
</a>
|
</a>
|
||||||
<a href="https://gocover.io/github.com/gofiber/storage">
|
<a href="https://goreportcard.com/report/github.com/gofiber/storage">
|
||||||
<img src="https://img.shields.io/badge/%F0%9F%94%8E%20gocover-97.8%25-75C46B.svg?style=flat">
|
<img src="https://img.shields.io/badge/%F0%9F%93%9D%20goreport-A%2B-75C46B"/>
|
||||||
</a>
|
</a>
|
||||||
<a href="https://gofiber.io/discord">
|
<a href="https://gofiber.io/discord">
|
||||||
<img src="https://img.shields.io/discord/704680098577514527?style=flat&label=%F0%9F%92%AC%20discord&color=00ACD7">
|
<img src="https://img.shields.io/discord/704680098577514527?style=flat&label=%F0%9F%92%AC%20discord&color=00ACD7"/>
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
Premade storage drivers that implement the [`Storage`](https://github.com/gofiber/storage/blob/main/storage.go) interface, designed to be used with various [Fiber middlewares](https://github.com/gofiber/fiber/tree/master/middleware).
|
Premade storage drivers that implement the [`Storage`](https://github.com/gofiber/storage/blob/main/storage.go) interface, designed to be used with various [Fiber middlewares](https://github.com/gofiber/fiber/tree/master/middleware).
|
||||||
|
|
||||||
```go
|
```go
|
||||||
// Storage interface for communicating with different database/key-value
|
// Storage interface for communicating with different database/key-value
|
||||||
// providers. Visit https://github.com/gofiber/storage for more info.
|
// providers. Visit https://github.com/gofiber/storage for more info.
|
||||||
type Storage interface {
|
type Storage interface {
|
||||||
// Get gets the value for the given key.
|
// Get gets the value for the given key.
|
||||||
// `nil, nil` is returned when the key does not exist
|
// `nil, nil` is returned when the key does not exist
|
||||||
Get(key string) ([]byte, error)
|
Get(key string) ([]byte, error)
|
||||||
|
|
||||||
// Set stores the given value for the given key along
|
// Set stores the given value for the given key along
|
||||||
// with an expiration value, 0 means no expiration.
|
// with an expiration value, 0 means no expiration.
|
||||||
// Empty key or value will be ignored without an error.
|
// Empty key or value will be ignored without an error.
|
||||||
Set(key string, val []byte, exp time.Duration) error
|
Set(key string, val []byte, exp time.Duration) error
|
||||||
|
|
||||||
// Delete deletes the value for the given key.
|
// Delete deletes the value for the given key.
|
||||||
// It returns no error if the storage does not contain the key,
|
// It returns no error if the storage does not contain the key,
|
||||||
Delete(key string) error
|
Delete(key string) error
|
||||||
|
|
||||||
// Reset resets the storage and delete all keys.
|
// Reset resets the storage and delete all keys.
|
||||||
Reset() error
|
Reset() error
|
||||||
|
|
||||||
// Close closes the storage and will stop any running garbage
|
// Close closes the storage and will stop any running garbage
|
||||||
// collectors and open connections.
|
// collectors and open connections.
|
||||||
Close() error
|
Close() error
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## 📑 Storage Implementations
|
## 📑 Storage Implementations
|
||||||
|
|
||||||
* [ArangoDB](/arangodb) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+ArangoDB%22">
|
- [ArangoDB](./arangodb/README.md) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+ArangoDB%22"> <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-arangodb.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B" /> </a>
|
||||||
<img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-arangodb.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B">
|
- [AzureBlob](./azureblob/README.md) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+Azure+Blob%22"> <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-azureblob.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B" /> </a>
|
||||||
</a>
|
- [Badger](./badger/README.md) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+Badger%22"> <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-badger.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B" /> </a>
|
||||||
* [AzureBlob](/azureblob) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+Azure+Blob%22">
|
- [Bbolt](./bbolt) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+Bbolt%22"> <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-bbolt.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B" /> </a>
|
||||||
<img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-azureblob.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B">
|
- [Coherence](./coherence/README.md) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+Coherence%22"> <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-coherence.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B" /> </a>
|
||||||
</a>
|
- [Couchbase](./couchbase/README.md) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+Couchbase%22"> <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-couchbase.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B" /> </a>
|
||||||
* [Badger](/badger) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+Badger%22">
|
- [DynamoDB](./dynamodb/README.md) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+DynamoDB%22"> <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-dynamodb.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B" /> </a>
|
||||||
<img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-badger.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B">
|
- [Etcd](./etcd/README.md) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+Etcd%22"> <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-etcd.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B" /> </a>
|
||||||
</a>
|
- [Memcache](./memcache/README.md) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+Memcache%22"> <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-memcache.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B" /> </a>
|
||||||
* [Bbolt](/bbolt) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+Bbolt%22">
|
- [Memory](./memory/README.md) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+Local+Storage%22"> <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-memory.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B" /> </a>
|
||||||
<img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-bbolt.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B">
|
- [MongoDB](./mongodb/README.md) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+Mongodb%22"> <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-mongodb.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B" /> </a>
|
||||||
</a>
|
- [MSSQL](./mssql/README.md) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+MSSQL%22"> <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-mssql.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B" /> </a>
|
||||||
* [DynamoDB](/dynamodb) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+DynamoDB%22">
|
- [MySQL](./mysql/README.md) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+MySQL%22"> <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-mysql.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B" /> </a>
|
||||||
<img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-dynamodb.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B">
|
- [Pebble](./pebble/README.md) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+Pebble%22"> <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-pebble.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B" /> </a>
|
||||||
</a>
|
- [Postgres](./postgres/README.md) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+Postgres%22"> <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-postgres.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B" /> </a>
|
||||||
* [Memcache](/memcache) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+Memcache%22">
|
- [Redis](./redis/README.md) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+Redis%22"> <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-redis.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B" /> </a>
|
||||||
<img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-memcache.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B">
|
- [S3](./s3/README.md) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+S3%22"> <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-s3.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B" /> </a>
|
||||||
</a>
|
- [SQLite3](./sqlite3/README.md) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+Sqlite3%22"> <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-sqlite3.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B" /> </a>
|
||||||
* [Memory](/memory) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+Local+Storage%22">
|
|
||||||
<img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B">
|
|
||||||
</a>
|
|
||||||
* [MongoDB](/mongodb) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+Mongodb%22">
|
|
||||||
<img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-mongodb.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B">
|
|
||||||
</a>
|
|
||||||
* [MSSQL](/mssql) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+MSSQL%22">
|
|
||||||
<img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-mssql.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B">
|
|
||||||
</a>
|
|
||||||
* [MySQL](/mysql) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+MySQL%22">
|
|
||||||
<img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-mysql.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B">
|
|
||||||
</a>
|
|
||||||
* [Postgres](/postgres) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+Postgres%22">
|
|
||||||
<img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-postgres.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B">
|
|
||||||
</a>
|
|
||||||
* [Redis](/redis) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+Redis%22">
|
|
||||||
<img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-redis.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B">
|
|
||||||
</a>
|
|
||||||
* [SQLite3](/sqlite3) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+Sqlite3%22">
|
|
||||||
<img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-sqlite3.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B">
|
|
||||||
</a>
|
|
||||||
* [S3](/s3) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+S3%22">
|
|
||||||
<img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-s3.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B">
|
|
||||||
</a>
|
|
||||||
|
@@ -1,4 +1,14 @@
|
|||||||
# ArangoDB
|
---
|
||||||
|
id: arangodb
|
||||||
|
title: ArangoDB
|
||||||
|
---
|
||||||
|
|
||||||
|

|
||||||
|
[](https://gofiber.io/discord)
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
A ArangoDB storage driver using `arangodb/go-driver` and [arangodb/go-driver](https://github.com/arangodb/go-driver).
|
A ArangoDB storage driver using `arangodb/go-driver` and [arangodb/go-driver](https://github.com/arangodb/go-driver).
|
||||||
|
|
||||||
### Table of Contents
|
### Table of Contents
|
||||||
|
@@ -1,8 +1,13 @@
|
|||||||
module github.com/gofiber/storage/arangodb
|
module github.com/gofiber/storage/arangodb
|
||||||
|
|
||||||
go 1.16
|
go 1.17
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/arangodb/go-driver v1.5.0
|
github.com/arangodb/go-driver v1.6.0
|
||||||
github.com/gofiber/utils v1.0.1
|
github.com/gofiber/utils v1.1.0
|
||||||
|
)
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/arangodb/go-velocypack v0.0.0-20200318135517-5af53c29c67e // indirect
|
||||||
|
github.com/pkg/errors v0.9.1 // indirect
|
||||||
)
|
)
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
github.com/arangodb/go-driver v1.5.0 h1:PaSwAMbxGATf6M5uJpm5fvO/6FiT8ZgJIxEl+AQj6EY=
|
github.com/arangodb/go-driver v1.6.0 h1:NFWj/idqXZxhFVueihMSI2R9NotNIsgvNfM/xmpekb4=
|
||||||
github.com/arangodb/go-driver v1.5.0/go.mod h1:+Kn5y+rHkSpjXmYOQiBDhwSJvIhOHdNI1ODl/aqD/fc=
|
github.com/arangodb/go-driver v1.6.0/go.mod h1:HQmdGkvNMVBTE3SIPSQ8T/ZddC6iwNsfMR+dDJQxIsI=
|
||||||
github.com/arangodb/go-velocypack v0.0.0-20200318135517-5af53c29c67e h1:Xg+hGrY2LcQBbxd0ZFdbGSyRKTYMZCfBbw/pMJFOk1g=
|
github.com/arangodb/go-velocypack v0.0.0-20200318135517-5af53c29c67e h1:Xg+hGrY2LcQBbxd0ZFdbGSyRKTYMZCfBbw/pMJFOk1g=
|
||||||
github.com/arangodb/go-velocypack v0.0.0-20200318135517-5af53c29c67e/go.mod h1:mq7Shfa/CaixoDxiyAAc5jZ6CVBAyPaNQCGS7mkj4Ho=
|
github.com/arangodb/go-velocypack v0.0.0-20200318135517-5af53c29c67e/go.mod h1:mq7Shfa/CaixoDxiyAAc5jZ6CVBAyPaNQCGS7mkj4Ho=
|
||||||
github.com/coreos/go-iptables v0.6.0/go.mod h1:Qe8Bv2Xik5FyTXwgIbLAnv2sWSBmvWdFETJConOQ//Q=
|
github.com/coreos/go-iptables v0.6.0/go.mod h1:Qe8Bv2Xik5FyTXwgIbLAnv2sWSBmvWdFETJConOQ//Q=
|
||||||
@@ -7,8 +7,8 @@ github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7
|
|||||||
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
|
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/dchest/uniuri v0.0.0-20160212164326-8902c56451e9/go.mod h1:GgB8SF9nRG+GqaDtLcwJZsQFhcogVCJ79j4EdT0c2V4=
|
github.com/dchest/uniuri v0.0.0-20160212164326-8902c56451e9/go.mod h1:GgB8SF9nRG+GqaDtLcwJZsQFhcogVCJ79j4EdT0c2V4=
|
||||||
github.com/gofiber/utils v1.0.1 h1:knct4cXwBipWQqFrOy1Pv6UcgPM+EXo9jDgc66V1Qio=
|
github.com/gofiber/utils v1.1.0 h1:vdEBpn7AzIUJRhe+CiTOJdUcTg4Q9RK+pEa0KPbLdrM=
|
||||||
github.com/gofiber/utils v1.0.1/go.mod h1:pacRFtghAE3UoknMOUiXh2Io/nLWSUHtQCi/3QASsOc=
|
github.com/gofiber/utils v1.1.0/go.mod h1:poZpsnhBykfnY1Mc0KeEa6mSHrS3dV0+oBWyeQmb2e0=
|
||||||
github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
|
github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
|
||||||
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
@@ -21,17 +21,33 @@ github.com/rs/zerolog v1.19.0/go.mod h1:IzD0RJ65iWH0w97OQQebJEvTZYvsCUm9WVLWBQrJ
|
|||||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4=
|
github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4=
|
||||||
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
||||||
|
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
|
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||||
|
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||||
|
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||||
|
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||||
|
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
|
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
|
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||||
|
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||||
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
golang.org/x/tools v0.0.0-20190828213141-aed303cbaa74/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
golang.org/x/tools v0.0.0-20190828213141-aed303cbaa74/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
|
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
|
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
|
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
|
||||||
|
@@ -1,4 +1,13 @@
|
|||||||
# Azure blob
|
---
|
||||||
|
id: azureblob
|
||||||
|
title: Azure Blob
|
||||||
|
---
|
||||||
|
|
||||||
|

|
||||||
|
[](https://gofiber.io/discord)
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
[Azure Blob storage](https://azure.microsoft.com/en-us/products/storage/blobs/#overview) is Microsoft's object storage solution for the cloud.
|
[Azure Blob storage](https://azure.microsoft.com/en-us/products/storage/blobs/#overview) is Microsoft's object storage solution for the cloud.
|
||||||
|
|
||||||
|
@@ -4,13 +4,14 @@ go 1.18
|
|||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.6.1
|
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.6.1
|
||||||
github.com/gofiber/fiber/v2 v2.40.0
|
github.com/gofiber/fiber/v2 v2.43.0
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.2.0 // indirect
|
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.2.0 // indirect
|
||||||
github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.2 // indirect
|
github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.2 // indirect
|
||||||
github.com/google/uuid v1.3.0 // indirect
|
github.com/google/uuid v1.3.0 // indirect
|
||||||
golang.org/x/net v0.4.0 // indirect
|
golang.org/x/crypto v0.7.0 // indirect
|
||||||
golang.org/x/text v0.5.0 // indirect
|
golang.org/x/net v0.8.0 // indirect
|
||||||
|
golang.org/x/text v0.8.0 // indirect
|
||||||
)
|
)
|
||||||
|
@@ -1,19 +1,15 @@
|
|||||||
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.2.0 h1:sVW/AFBTGyJxDaMYlq0ct3jUXTtj12tQ6zE2GZUgVQw=
|
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.2.0 h1:sVW/AFBTGyJxDaMYlq0ct3jUXTtj12tQ6zE2GZUgVQw=
|
||||||
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.2.0/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U=
|
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.2.0/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U=
|
||||||
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.1.0 h1:QkAcEIAKbNL4KoFr4SathZPhDhF4mVwpBMFlYjyAqy8=
|
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.1.0 h1:QkAcEIAKbNL4KoFr4SathZPhDhF4mVwpBMFlYjyAqy8=
|
||||||
github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.1 h1:Oj853U9kG+RLTCQXpjvOnrv0WaZHxgmZz1TlLywgOPY=
|
|
||||||
github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.1/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w=
|
|
||||||
github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.2 h1:+5VZ72z0Qan5Bog5C+ZkgSqUbeVUd9wgtHOrIKuc5b8=
|
github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.2 h1:+5VZ72z0Qan5Bog5C+ZkgSqUbeVUd9wgtHOrIKuc5b8=
|
||||||
github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.2/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w=
|
github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.2/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w=
|
||||||
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.5.1 h1:BMTdr+ib5ljLa9MxTJK8x/Ds0MbBb4MfuW5BL0zMJnI=
|
|
||||||
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.5.1/go.mod h1:c6WvOhtmjNUWbLfOG1qxM/q0SPvQNSVJvolm+C52dIU=
|
|
||||||
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.6.1 h1:YvQv9Mz6T8oR5ypQOL6erY0Z5t71ak1uHV4QFokCOZk=
|
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.6.1 h1:YvQv9Mz6T8oR5ypQOL6erY0Z5t71ak1uHV4QFokCOZk=
|
||||||
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.6.1/go.mod h1:c6WvOhtmjNUWbLfOG1qxM/q0SPvQNSVJvolm+C52dIU=
|
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.6.1/go.mod h1:c6WvOhtmjNUWbLfOG1qxM/q0SPvQNSVJvolm+C52dIU=
|
||||||
github.com/AzureAD/microsoft-authentication-library-for-go v0.5.1 h1:BWe8a+f/t+7KY7zH2mqygeUD0t8hNFXe08p1Pb3/jKE=
|
github.com/AzureAD/microsoft-authentication-library-for-go v0.5.1 h1:BWe8a+f/t+7KY7zH2mqygeUD0t8hNFXe08p1Pb3/jKE=
|
||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
github.com/dnaeon/go-vcr v1.1.0 h1:ReYa/UBrRyQdant9B4fNHGoCNKw6qh6P0fsdGmZpR7c=
|
github.com/dnaeon/go-vcr v1.1.0 h1:ReYa/UBrRyQdant9B4fNHGoCNKw6qh6P0fsdGmZpR7c=
|
||||||
github.com/gofiber/fiber/v2 v2.40.0 h1:fdU7w5hT6PLL7jiWIhtQ+S/k5WEFYoUZidptlPu8GBo=
|
github.com/gofiber/fiber/v2 v2.43.0 h1:yit3E4kHf178B60p5CQBa/3v+WVuziWMa/G2ZNyLJB0=
|
||||||
github.com/gofiber/fiber/v2 v2.40.0/go.mod h1:Gko04sLksnHbzLSRBFWPFdzM9Ws9pRxvvIaohJK1dsk=
|
github.com/gofiber/fiber/v2 v2.43.0/go.mod h1:mpS1ZNE5jU+u+BA4FbM+KKnUzJ4wzTK+FT2tG3tU+6I=
|
||||||
github.com/golang-jwt/jwt v3.2.1+incompatible h1:73Z+4BJcrTC+KczS6WvTPvRGOp1WmfEP4Q1lOd9Z/+c=
|
github.com/golang-jwt/jwt v3.2.1+incompatible h1:73Z+4BJcrTC+KczS6WvTPvRGOp1WmfEP4Q1lOd9Z/+c=
|
||||||
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
|
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
|
||||||
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
@@ -21,15 +17,12 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0
|
|||||||
github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4 h1:Qj1ukM4GlMWXNdMBuXcXfz/Kw9s1qm0CLY32QxuSImI=
|
github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4 h1:Qj1ukM4GlMWXNdMBuXcXfz/Kw9s1qm0CLY32QxuSImI=
|
||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY=
|
github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY=
|
||||||
golang.org/x/crypto v0.0.0-20220511200225-c6db032c6c88 h1:Tgea0cVUD0ivh5ADBX4WwuI12DUd2to3nCYe2eayMIw=
|
golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A=
|
||||||
golang.org/x/net v0.2.0 h1:sZfSu1wtKLGlWI4ZZayP0ck9Y73K1ynO6gqzTdBVdPU=
|
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
|
||||||
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
|
golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ=
|
||||||
golang.org/x/net v0.4.0 h1:Q5QPcMlvfxFTAPV0+07Xz/MpK9NTXu2VDUuy0FeMfaU=
|
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
|
||||||
golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE=
|
golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ=
|
||||||
golang.org/x/sys v0.2.0 h1:ljd4t30dBnAvMZaQCevtY0xLLD0A+bRZXbgLMLU1F/A=
|
golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68=
|
||||||
golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg=
|
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
|
||||||
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
|
||||||
golang.org/x/text v0.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM=
|
|
||||||
golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
|
||||||
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
|
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
|
||||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
|
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
|
||||||
|
@@ -1,4 +1,13 @@
|
|||||||
# Badger
|
---
|
||||||
|
id: badger
|
||||||
|
title: Badger
|
||||||
|
---
|
||||||
|
|
||||||
|

|
||||||
|
[](https://gofiber.io/discord)
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
A fast key-value DB using [dgraph-io/badger](https://github.com/dgraph-io/badger)
|
A fast key-value DB using [dgraph-io/badger](https://github.com/dgraph-io/badger)
|
||||||
|
|
||||||
|
@@ -4,7 +4,7 @@ go 1.18
|
|||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/dgraph-io/badger/v3 v3.2103.5
|
github.com/dgraph-io/badger/v3 v3.2103.5
|
||||||
github.com/gofiber/utils v1.0.1
|
github.com/gofiber/utils v1.1.0
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
@@ -21,7 +21,7 @@ require (
|
|||||||
github.com/klauspost/compress v1.15.12 // indirect
|
github.com/klauspost/compress v1.15.12 // indirect
|
||||||
github.com/pkg/errors v0.9.1 // indirect
|
github.com/pkg/errors v0.9.1 // indirect
|
||||||
go.opencensus.io v0.24.0 // indirect
|
go.opencensus.io v0.24.0 // indirect
|
||||||
golang.org/x/net v0.2.0 // indirect
|
golang.org/x/net v0.7.0 // indirect
|
||||||
golang.org/x/sys v0.2.0 // indirect
|
golang.org/x/sys v0.5.0 // indirect
|
||||||
google.golang.org/protobuf v1.28.1 // indirect
|
google.golang.org/protobuf v1.28.1 // indirect
|
||||||
)
|
)
|
||||||
|
@@ -31,8 +31,8 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m
|
|||||||
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
|
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
|
||||||
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||||
github.com/gofiber/utils v1.0.1 h1:knct4cXwBipWQqFrOy1Pv6UcgPM+EXo9jDgc66V1Qio=
|
github.com/gofiber/utils v1.1.0 h1:vdEBpn7AzIUJRhe+CiTOJdUcTg4Q9RK+pEa0KPbLdrM=
|
||||||
github.com/gofiber/utils v1.0.1/go.mod h1:pacRFtghAE3UoknMOUiXh2Io/nLWSUHtQCi/3QASsOc=
|
github.com/gofiber/utils v1.1.0/go.mod h1:poZpsnhBykfnY1Mc0KeEa6mSHrS3dV0+oBWyeQmb2e0=
|
||||||
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
|
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
|
||||||
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
|
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
|
||||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||||
@@ -136,8 +136,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL
|
|||||||
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||||
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||||
golang.org/x/net v0.2.0 h1:sZfSu1wtKLGlWI4ZZayP0ck9Y73K1ynO6gqzTdBVdPU=
|
golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g=
|
||||||
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
|
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
@@ -152,8 +152,8 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w
|
|||||||
golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.2.0 h1:ljd4t30dBnAvMZaQCevtY0xLLD0A+bRZXbgLMLU1F/A=
|
golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU=
|
||||||
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
|
@@ -1,4 +1,14 @@
|
|||||||
# Bbolt
|
---
|
||||||
|
id: bbolt
|
||||||
|
title: Bbolt
|
||||||
|
---
|
||||||
|
|
||||||
|

|
||||||
|
[](https://gofiber.io/discord)
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
A Bbolt storage driver using [etcd-io/bbolt](https://github.com/etcd-io/bbolt). Bolt is a pure Go key/value store inspired by [Howard Chu's](https://twitter.com/hyc_symas) [LMDB project](https://www.symas.com/symas-embedded-database-lmdb). The goal of the project is to provide a simple, fast, and reliable database for projects that don't require a full database server such as Postgres or MySQL.
|
A Bbolt storage driver using [etcd-io/bbolt](https://github.com/etcd-io/bbolt). Bolt is a pure Go key/value store inspired by [Howard Chu's](https://twitter.com/hyc_symas) [LMDB project](https://www.symas.com/symas-embedded-database-lmdb). The goal of the project is to provide a simple, fast, and reliable database for projects that don't require a full database server such as Postgres or MySQL.
|
||||||
|
|
||||||
|
|
||||||
|
106
coherence/README.md
Normal file
106
coherence/README.md
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
# Coherence
|
||||||
|
<!-- Copyright © 2023, Oracle and/or its affiliates. -->
|
||||||
|
A Coherence storage driver using [https://github.com/oracle/coherence-go-client](https://github.com/oracle/coherence-go-client).
|
||||||
|
|
||||||
|
### Table of Contents
|
||||||
|
- [Signatures](#signatures)
|
||||||
|
- [Installation](#installation)
|
||||||
|
- [Examples](#examples)
|
||||||
|
- [Config](#config)
|
||||||
|
- [Default Config](#default-config)
|
||||||
|
|
||||||
|
### Signatures
|
||||||
|
```go
|
||||||
|
func New(config ...Config) (*Storage, error)
|
||||||
|
func (s *Storage) Get(key string) ([]byte, error)
|
||||||
|
func (s *Storage) Set(key string, val []byte, exp time.Duration) error
|
||||||
|
func (s *Storage) Delete(key string) error
|
||||||
|
func (s *Storage) Reset() error
|
||||||
|
func (s *Storage) Close() error
|
||||||
|
func (s *Storage) Conn() *Session
|
||||||
|
```
|
||||||
|
|
||||||
|
### Installation
|
||||||
|
Coherence is supported on Go versions 1.19 and above:
|
||||||
|
|
||||||
|
Install the coherence implementation:
|
||||||
|
```bash
|
||||||
|
go get github.com/gofiber/storage/coherence
|
||||||
|
```
|
||||||
|
|
||||||
|
Before running or testing this implementation, you must ensure a Coherence cluster is available.
|
||||||
|
For local development, we recommend using the Coherence CE Docker image; it contains everything
|
||||||
|
necessary for the client to operate correctly.
|
||||||
|
|
||||||
|
To start a Coherence cluster using Docker, issue the following:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -d -p 1408:1408 ghcr.io/oracle/coherencestore-ce:22.06.5
|
||||||
|
```
|
||||||
|
|
||||||
|
See the documentation [here](https://pkg.go.dev/github.com/oracle/coherence-go-client/coherence#hdr-Obtaining_a_Session) on connection options
|
||||||
|
when creating a Coherence session.
|
||||||
|
|
||||||
|
### Examples
|
||||||
|
Import the storage package.
|
||||||
|
```go
|
||||||
|
import "github.com/gofiber/storage/coherence"
|
||||||
|
```
|
||||||
|
|
||||||
|
You can use the following possibilities to create a storage:
|
||||||
|
```go
|
||||||
|
// Initialize default config, to connect to localhost:1408 using plain text
|
||||||
|
store, err := coherence.New()
|
||||||
|
|
||||||
|
// Initialize custom config to connect to a different host/port and use plaint ext.
|
||||||
|
store, err := coherence.New(coherence.Config{
|
||||||
|
Address: "my-host:myport",
|
||||||
|
})
|
||||||
|
|
||||||
|
// Initialize to connect with TLS enabled with your own tls.Config
|
||||||
|
tlsConfig := config := &tls.Config{...}
|
||||||
|
|
||||||
|
store, err := coherence.New(coherence.Config{
|
||||||
|
Address: "my-host:myport",
|
||||||
|
TLSConfig: tlsConfig,
|
||||||
|
})
|
||||||
|
```
|
||||||
|
|
||||||
|
> Note: If you create two stores using `coherence.New()` they will effectivity be idential.
|
||||||
|
> If you wish to have two separate stores, then you can use:
|
||||||
|
> ```go
|
||||||
|
> store1, err := coherence.New(Config{ScopeName: "scope1"})
|
||||||
|
> store2, err := coherence.New(Config{ScopeName: "scope2"})
|
||||||
|
> ```
|
||||||
|
|
||||||
|
### Config
|
||||||
|
|
||||||
|
```go
|
||||||
|
// Config defines configuration options for Coherence connection.
|
||||||
|
type Config struct {
|
||||||
|
// Address to connect to, defaults to "localhost:1408"
|
||||||
|
Address string
|
||||||
|
|
||||||
|
// Timeout is the default session timeout to connect to Coherence, defaults to 30s
|
||||||
|
Timeout time.Duration
|
||||||
|
|
||||||
|
// ScopeName defines a scope allowing for multiple storage sessions
|
||||||
|
ScopeName string
|
||||||
|
|
||||||
|
// Reset indicates if the store should be reset after being created
|
||||||
|
Reset bool
|
||||||
|
|
||||||
|
// TLSConfig specifies tls.Config to use when connecting, if nil then plain text is used
|
||||||
|
TLSConfig *tls.Config
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Default Config
|
||||||
|
```go
|
||||||
|
var DefaultConfig = Config{
|
||||||
|
Address: "localhost:1408",
|
||||||
|
Timeout: time.Duration(30) * time.Millisecond,
|
||||||
|
ScopeName: defaultScopeName,
|
||||||
|
Reset: false,
|
||||||
|
}
|
||||||
|
```
|
148
coherence/coherence.go
Normal file
148
coherence/coherence.go
Normal file
@@ -0,0 +1,148 @@
|
|||||||
|
package coherence
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright © 2023, Oracle and/or its affiliates.
|
||||||
|
*/
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"crypto/tls"
|
||||||
|
coh "github.com/oracle/coherence-go-client/coherence"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
defaultScopeName = "default-store"
|
||||||
|
defaultTimeout = time.Duration(30) * time.Millisecond
|
||||||
|
)
|
||||||
|
|
||||||
|
// Storage represents an implementation of Coherence storage provider.
|
||||||
|
type Storage struct {
|
||||||
|
session *coh.Session
|
||||||
|
namedCache coh.NamedCache[string, []byte]
|
||||||
|
ctx context.Context
|
||||||
|
}
|
||||||
|
|
||||||
|
// Config defines configuration options for Coherence connection.
|
||||||
|
type Config struct {
|
||||||
|
// Address to connect to, defaults to "localhost:1408"
|
||||||
|
Address string
|
||||||
|
|
||||||
|
// Timeout is the default session timeout to connect to Coherence, defaults to 30s
|
||||||
|
Timeout time.Duration
|
||||||
|
|
||||||
|
// ScopeName defines a scope allowing for multiple storage sessions
|
||||||
|
ScopeName string
|
||||||
|
|
||||||
|
// Reset indicates if the store should be reset after being created
|
||||||
|
Reset bool
|
||||||
|
|
||||||
|
// TLSConfig specifies tls.Config to use when connecting, if nil then plain text is used
|
||||||
|
TLSConfig *tls.Config
|
||||||
|
}
|
||||||
|
|
||||||
|
// DefaultConfig defines default options.
|
||||||
|
var DefaultConfig = Config{
|
||||||
|
Address: "localhost:1408",
|
||||||
|
Timeout: time.Duration(30) * time.Millisecond,
|
||||||
|
ScopeName: defaultScopeName,
|
||||||
|
Reset: false,
|
||||||
|
}
|
||||||
|
|
||||||
|
// New returns a new [Storage] given a [coherence.Session].
|
||||||
|
func New(config ...Config) (*Storage, error) {
|
||||||
|
var (
|
||||||
|
scopeName = defaultScopeName
|
||||||
|
cfg = DefaultConfig
|
||||||
|
)
|
||||||
|
|
||||||
|
if len(config) == 1 {
|
||||||
|
cfg = config[0]
|
||||||
|
}
|
||||||
|
options := make([]func(session *coh.SessionOptions), 0)
|
||||||
|
|
||||||
|
// apply any config values
|
||||||
|
if cfg.Address != "" {
|
||||||
|
options = append(options, coh.WithAddress(cfg.Address))
|
||||||
|
} else {
|
||||||
|
cfg.Address = DefaultConfig.Address
|
||||||
|
}
|
||||||
|
|
||||||
|
if cfg.TLSConfig != nil {
|
||||||
|
options = append(options, coh.WithTLSConfig(cfg.TLSConfig))
|
||||||
|
} else {
|
||||||
|
options = append(options, coh.WithPlainText())
|
||||||
|
}
|
||||||
|
|
||||||
|
if cfg.Timeout != defaultTimeout {
|
||||||
|
options = append(options, coh.WithReadyTimeout(cfg.Timeout))
|
||||||
|
}
|
||||||
|
|
||||||
|
if cfg.ScopeName != defaultScopeName {
|
||||||
|
scopeName = cfg.ScopeName
|
||||||
|
}
|
||||||
|
|
||||||
|
// create the Coherence session
|
||||||
|
session, err := coh.NewSession(context.Background(), options...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
store, err := newCoherenceStorage(session, scopeName)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// if Reset is true then reset the store
|
||||||
|
if cfg.Reset {
|
||||||
|
return store, store.Reset()
|
||||||
|
}
|
||||||
|
|
||||||
|
return store, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// newCoherenceStorage returns a new Coherence [Storage].
|
||||||
|
func newCoherenceStorage(session *coh.Session, cacheName string) (*Storage, error) {
|
||||||
|
nc, err := coh.GetNamedCache[string, []byte](session, "fiber$"+cacheName)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &Storage{
|
||||||
|
session: session,
|
||||||
|
namedCache: nc,
|
||||||
|
ctx: context.Background(),
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Storage) Get(key string) ([]byte, error) {
|
||||||
|
v, err := s.namedCache.Get(s.ctx, key)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if v == nil {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
return *v, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Storage) Set(key string, val []byte, exp time.Duration) error {
|
||||||
|
_, err := s.namedCache.PutWithExpiry(s.ctx, key, val, exp)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Storage) Delete(key string) error {
|
||||||
|
_, err := s.namedCache.Remove(s.ctx, key)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Storage) Reset() error {
|
||||||
|
return s.namedCache.Clear(s.ctx)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Storage) Close() error {
|
||||||
|
s.session.Close()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Storage) Conn() *coh.Session {
|
||||||
|
return s.namedCache.GetSession()
|
||||||
|
}
|
207
coherence/coherence_test.go
Normal file
207
coherence/coherence_test.go
Normal file
@@ -0,0 +1,207 @@
|
|||||||
|
package coherence
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright © 2023, Oracle and/or its affiliates.
|
||||||
|
*/
|
||||||
|
import (
|
||||||
|
"github.com/gofiber/utils"
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
key1 = "key1"
|
||||||
|
key2 = "key2"
|
||||||
|
missingKey = "missing-key"
|
||||||
|
value1 = []byte("value1")
|
||||||
|
value2 = []byte("value2")
|
||||||
|
)
|
||||||
|
|
||||||
|
func Test_Coherence_Set_And_Get(t *testing.T) {
|
||||||
|
var val []byte
|
||||||
|
|
||||||
|
testStore, err := newTestStore(t)
|
||||||
|
utils.AssertEqual(t, err, nil)
|
||||||
|
|
||||||
|
err = testStore.Set(key1, value1, 0)
|
||||||
|
utils.AssertEqual(t, err, nil)
|
||||||
|
|
||||||
|
val, err = testStore.Get(key1)
|
||||||
|
utils.AssertEqual(t, err, nil)
|
||||||
|
utils.AssertEqual(t, value1, val)
|
||||||
|
|
||||||
|
utils.AssertEqual(t, true, testStore.Conn() != nil)
|
||||||
|
|
||||||
|
utils.AssertEqual(t, testStore.Close(), nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
func Test_Coherence_Set_Override(t *testing.T) {
|
||||||
|
var val []byte
|
||||||
|
|
||||||
|
testStore, err := newTestStore(t)
|
||||||
|
utils.AssertEqual(t, err, nil)
|
||||||
|
|
||||||
|
err = testStore.Set(key1, value1, 0)
|
||||||
|
utils.AssertEqual(t, err, nil)
|
||||||
|
|
||||||
|
err = testStore.Set(key1, value2, 0)
|
||||||
|
utils.AssertEqual(t, err, nil)
|
||||||
|
|
||||||
|
val, err = testStore.Get(key1)
|
||||||
|
utils.AssertEqual(t, err, nil)
|
||||||
|
utils.AssertEqual(t, value2, val)
|
||||||
|
|
||||||
|
utils.AssertEqual(t, testStore.Close(), nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
func Test_Coherence_Set_With_Reset(t *testing.T) {
|
||||||
|
var val []byte
|
||||||
|
|
||||||
|
testStore, err := newTestStore(t)
|
||||||
|
utils.AssertEqual(t, err, nil)
|
||||||
|
|
||||||
|
err = testStore.Set(key1, value1, 0)
|
||||||
|
utils.AssertEqual(t, err, nil)
|
||||||
|
|
||||||
|
val, err = testStore.Get(key1)
|
||||||
|
utils.AssertEqual(t, err, nil)
|
||||||
|
utils.AssertEqual(t, value1, val)
|
||||||
|
|
||||||
|
// get a new store but reset it, so the subsequent Get will return nil
|
||||||
|
testStore, err = newTestStore(t, Config{Reset: true})
|
||||||
|
utils.AssertEqual(t, err, nil)
|
||||||
|
|
||||||
|
val, err = testStore.Get(key1)
|
||||||
|
utils.AssertEqual(t, err, nil)
|
||||||
|
utils.AssertEqual(t, true, len(val) == 0)
|
||||||
|
|
||||||
|
utils.AssertEqual(t, testStore.Close(), nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
func Test_Coherence_Set_With_Expiry(t *testing.T) {
|
||||||
|
var val []byte
|
||||||
|
|
||||||
|
testStore, err := newTestStore(t)
|
||||||
|
utils.AssertEqual(t, err, nil)
|
||||||
|
|
||||||
|
// set with an expiry of 5 seconds
|
||||||
|
err = testStore.Set(key1, value1, time.Duration(5)*time.Second)
|
||||||
|
utils.AssertEqual(t, err, nil)
|
||||||
|
time.Sleep(time.Duration(6) * time.Second)
|
||||||
|
|
||||||
|
val, err = testStore.Get(key1)
|
||||||
|
utils.AssertEqual(t, err, nil)
|
||||||
|
utils.AssertEqual(t, true, len(val) == 0)
|
||||||
|
|
||||||
|
utils.AssertEqual(t, testStore.Close(), nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
func Test_Coherence_Get_Missing(t *testing.T) {
|
||||||
|
var val []byte
|
||||||
|
|
||||||
|
testStore, err := newTestStore(t)
|
||||||
|
utils.AssertEqual(t, err, nil)
|
||||||
|
|
||||||
|
val, err = testStore.Get(missingKey)
|
||||||
|
utils.AssertEqual(t, err, nil)
|
||||||
|
utils.AssertEqual(t, true, len(val) == 0)
|
||||||
|
|
||||||
|
utils.AssertEqual(t, testStore.Close(), nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
func Test_Coherence_Reset(t *testing.T) {
|
||||||
|
var val []byte
|
||||||
|
|
||||||
|
testStore, err := newTestStore(t)
|
||||||
|
utils.AssertEqual(t, err, nil)
|
||||||
|
|
||||||
|
err = testStore.Set(key1, value1, 0)
|
||||||
|
utils.AssertEqual(t, err, nil)
|
||||||
|
|
||||||
|
err = testStore.Set(key2, value2, 0)
|
||||||
|
utils.AssertEqual(t, err, nil)
|
||||||
|
|
||||||
|
// check the keys exist
|
||||||
|
val, err = testStore.Get(key1)
|
||||||
|
utils.AssertEqual(t, err, nil)
|
||||||
|
utils.AssertEqual(t, value1, val)
|
||||||
|
|
||||||
|
val, err = testStore.Get(key2)
|
||||||
|
utils.AssertEqual(t, err, nil)
|
||||||
|
utils.AssertEqual(t, value2, val)
|
||||||
|
|
||||||
|
// reset the store, this should remove both entries
|
||||||
|
err = testStore.Reset()
|
||||||
|
|
||||||
|
// check the keys have expired
|
||||||
|
val, err = testStore.Get(key1)
|
||||||
|
utils.AssertEqual(t, err, nil)
|
||||||
|
utils.AssertEqual(t, true, len(val) == 0)
|
||||||
|
|
||||||
|
val, err = testStore.Get(key2)
|
||||||
|
utils.AssertEqual(t, err, nil)
|
||||||
|
utils.AssertEqual(t, true, len(val) == 0)
|
||||||
|
|
||||||
|
utils.AssertEqual(t, testStore.Close(), nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
func Test_Coherence_Set_And_Delete(t *testing.T) {
|
||||||
|
var val []byte
|
||||||
|
|
||||||
|
testStore, err := newTestStore(t)
|
||||||
|
utils.AssertEqual(t, err, nil)
|
||||||
|
|
||||||
|
err = testStore.Set(key1, value1, 0)
|
||||||
|
utils.AssertEqual(t, err, nil)
|
||||||
|
|
||||||
|
err = testStore.Delete(key1)
|
||||||
|
utils.AssertEqual(t, err, nil)
|
||||||
|
|
||||||
|
// ensure the key has gone
|
||||||
|
val, err = testStore.Get(key1)
|
||||||
|
utils.AssertEqual(t, err, nil)
|
||||||
|
utils.AssertEqual(t, true, len(val) == 0)
|
||||||
|
|
||||||
|
utils.AssertEqual(t, testStore.Close(), nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// TestCoherenceWithScope ensures we can create multiple session stores with multiple scopes.
|
||||||
|
func Test_Coherence_With_Scope(t *testing.T) {
|
||||||
|
var val []byte
|
||||||
|
|
||||||
|
// create two session stores with different scopes
|
||||||
|
testStore1, err := newTestStore(t, Config{ScopeName: "scope1"})
|
||||||
|
utils.AssertEqual(t, err, nil)
|
||||||
|
|
||||||
|
testStore2, err := newTestStore(t, Config{ScopeName: "scope2"})
|
||||||
|
utils.AssertEqual(t, err, nil)
|
||||||
|
|
||||||
|
// ensure we can put the same key with different values in each scope
|
||||||
|
err = testStore1.Set(key1, value1, 0)
|
||||||
|
utils.AssertEqual(t, err, nil)
|
||||||
|
|
||||||
|
err = testStore2.Set(key1, value2, 0)
|
||||||
|
utils.AssertEqual(t, err, nil)
|
||||||
|
|
||||||
|
// ensure the value of "key1" is different for each store
|
||||||
|
val, err = testStore1.Get(key1)
|
||||||
|
utils.AssertEqual(t, err, nil)
|
||||||
|
utils.AssertEqual(t, value1, val)
|
||||||
|
|
||||||
|
val, err = testStore2.Get(key1)
|
||||||
|
utils.AssertEqual(t, err, nil)
|
||||||
|
utils.AssertEqual(t, value2, val)
|
||||||
|
|
||||||
|
utils.AssertEqual(t, testStore1.Close(), nil)
|
||||||
|
utils.AssertEqual(t, testStore2.Close(), nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// newTestStore returns a new Coherence Store and ensures it is reset.
|
||||||
|
func newTestStore(t *testing.T, config ...Config) (*Storage, error) {
|
||||||
|
testStore, err := New(config...)
|
||||||
|
utils.AssertEqual(t, err, nil)
|
||||||
|
|
||||||
|
err = testStore.Reset()
|
||||||
|
|
||||||
|
return testStore, err
|
||||||
|
}
|
17
coherence/go.mod
Normal file
17
coherence/go.mod
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
module coherence
|
||||||
|
|
||||||
|
go 1.19
|
||||||
|
|
||||||
|
require github.com/oracle/coherence-go-client v1.0.1
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/gofiber/utils v1.1.0
|
||||||
|
github.com/golang/protobuf v1.5.2 // indirect
|
||||||
|
github.com/google/uuid v1.3.0 // indirect
|
||||||
|
golang.org/x/net v0.8.0 // indirect
|
||||||
|
golang.org/x/sys v0.6.0 // indirect
|
||||||
|
golang.org/x/text v0.8.0 // indirect
|
||||||
|
google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f // indirect
|
||||||
|
google.golang.org/grpc v1.53.0 // indirect
|
||||||
|
google.golang.org/protobuf v1.28.1 // indirect
|
||||||
|
)
|
28
coherence/go.sum
Normal file
28
coherence/go.sum
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
github.com/gofiber/utils v1.1.0 h1:vdEBpn7AzIUJRhe+CiTOJdUcTg4Q9RK+pEa0KPbLdrM=
|
||||||
|
github.com/gofiber/utils v1.1.0/go.mod h1:poZpsnhBykfnY1Mc0KeEa6mSHrS3dV0+oBWyeQmb2e0=
|
||||||
|
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
||||||
|
github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
|
||||||
|
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
||||||
|
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
|
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
|
||||||
|
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
|
||||||
|
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
|
github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE=
|
||||||
|
github.com/oracle/coherence-go-client v1.0.1 h1:MJ9S46+G8DHg/b3c/XB+mGA58wmTE0HdBCH1t+WrIBs=
|
||||||
|
github.com/oracle/coherence-go-client v1.0.1/go.mod h1:tdIKuX6brsdTCARlbxeRYiOF0TA4tA8ujHO4BCS1mjk=
|
||||||
|
golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ=
|
||||||
|
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
|
||||||
|
golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ=
|
||||||
|
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68=
|
||||||
|
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
|
||||||
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f h1:BWUVssLB0HVOSY78gIdvk1dTVYtT1y8SBWtPYuTJ/6w=
|
||||||
|
google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=
|
||||||
|
google.golang.org/grpc v1.53.0 h1:LAv2ds7cmFV/XTS3XG1NneeENYrXGmorPxsBbptIjNc=
|
||||||
|
google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw=
|
||||||
|
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
|
||||||
|
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||||
|
google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w=
|
||||||
|
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
||||||
|
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
|
92
couchbase/README.md
Normal file
92
couchbase/README.md
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
---
|
||||||
|
id: couchbase
|
||||||
|
title: Couchbase
|
||||||
|
---
|
||||||
|
|
||||||
|

|
||||||
|
[](https://gofiber.io/discord)
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
A Couchbase storage driver using [couchbase/gocb](https://github.com/couchbase/gocb).
|
||||||
|
|
||||||
|
### Table of Contents
|
||||||
|
- [Signatures](#signatures)
|
||||||
|
- [Installation](#installation)
|
||||||
|
- [Examples](#examples)
|
||||||
|
- [Config](#config)
|
||||||
|
- [Default Config](#default-config)
|
||||||
|
|
||||||
|
### Signatures
|
||||||
|
```go
|
||||||
|
func New(config ...Config) Storage
|
||||||
|
func (s *Storage) Get(key string) ([]byte, error)
|
||||||
|
func (s *Storage) Set(key string, val []byte, exp time.Duration) error
|
||||||
|
func (s *Storage) Delete(key string) error
|
||||||
|
func (s *Storage) Reset() error
|
||||||
|
func (s *Storage) Close() error
|
||||||
|
func (s *Storage) Conn() *gocb.Cluster
|
||||||
|
```
|
||||||
|
### Installation
|
||||||
|
Couchbase is tested on the 2 last [Go versions](https://golang.org/dl/) with support for modules. So make sure to initialize one first if you didn't do that yet:
|
||||||
|
```bash
|
||||||
|
go mod init github.com/<user>/<repo>
|
||||||
|
```
|
||||||
|
And then install the Couchbase implementation:
|
||||||
|
```bash
|
||||||
|
go get github.com/gofiber/storage/couchbase
|
||||||
|
```
|
||||||
|
|
||||||
|
### Examples
|
||||||
|
Import the storage package.
|
||||||
|
```go
|
||||||
|
import "github.com/gofiber/storage/couchbase"
|
||||||
|
```
|
||||||
|
|
||||||
|
You can use the following possibilities to create a storage:
|
||||||
|
```go
|
||||||
|
// Initialize default config
|
||||||
|
store := couchbase.New()
|
||||||
|
|
||||||
|
// Initialize Couchbase storage with custom config
|
||||||
|
store := couchbase.New(couchbase.Config{
|
||||||
|
Host: "127.0.0.1:8091",
|
||||||
|
Username: "",
|
||||||
|
Password: "",
|
||||||
|
Bucket: 0,
|
||||||
|
ConnectionTimeout: 3* time.Second,
|
||||||
|
KVTimeout: 1* time.Second,
|
||||||
|
})
|
||||||
|
```
|
||||||
|
|
||||||
|
### Config
|
||||||
|
```go
|
||||||
|
type Config struct {
|
||||||
|
// The application username to Connect to the Couchbase cluster
|
||||||
|
Username string
|
||||||
|
// The application password to Connect to the Couchbase cluster
|
||||||
|
Password string
|
||||||
|
// The connection string for the Couchbase cluster
|
||||||
|
Host string
|
||||||
|
// The name of the bucket to Connect to
|
||||||
|
Bucket string
|
||||||
|
// The timeout for connecting to the Couchbase cluster
|
||||||
|
ConnectionTimeout time.Duration
|
||||||
|
// The timeout for performing operations on the Couchbase cluster
|
||||||
|
KVTimeout time.Duration
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Default Config
|
||||||
|
```go
|
||||||
|
// ConfigDefault is the default config
|
||||||
|
var ConfigDefault = Config{
|
||||||
|
Host: "127.0.0.1:8091",
|
||||||
|
Username: "admin",
|
||||||
|
Password: "123456",
|
||||||
|
Bucket: "fiber_storage",
|
||||||
|
ConnectionTimeout: 3 * time.Second,
|
||||||
|
KVTimeout: 1 * time.Second,
|
||||||
|
}
|
||||||
|
```
|
62
couchbase/config.go
Normal file
62
couchbase/config.go
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
package couchbase
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Config struct {
|
||||||
|
// The application username to Connect to the Couchbase cluster
|
||||||
|
Username string
|
||||||
|
// The application password to Connect to the Couchbase cluster
|
||||||
|
Password string
|
||||||
|
// The connection string for the Couchbase cluster
|
||||||
|
Host string
|
||||||
|
// The name of the bucket to Connect to
|
||||||
|
Bucket string
|
||||||
|
// The timeout for connecting to the Couchbase cluster
|
||||||
|
ConnectionTimeout time.Duration
|
||||||
|
// The timeout for performing operations on the Couchbase cluster
|
||||||
|
KVTimeout time.Duration
|
||||||
|
}
|
||||||
|
|
||||||
|
// ConfigDefault is the default config
|
||||||
|
var ConfigDefault = Config{
|
||||||
|
Host: "127.0.0.1:8091",
|
||||||
|
Username: "admin",
|
||||||
|
Password: "123456",
|
||||||
|
Bucket: "fiber_storage",
|
||||||
|
ConnectionTimeout: 3 * time.Second,
|
||||||
|
KVTimeout: 1 * time.Second,
|
||||||
|
}
|
||||||
|
|
||||||
|
func configDefault(config ...Config) Config {
|
||||||
|
// Return default config if nothing provided
|
||||||
|
if len(config) < 1 {
|
||||||
|
return ConfigDefault
|
||||||
|
}
|
||||||
|
|
||||||
|
// Override default config
|
||||||
|
cfg := config[0]
|
||||||
|
|
||||||
|
// Set default values
|
||||||
|
if cfg.Username == "" {
|
||||||
|
cfg.Username = ConfigDefault.Username
|
||||||
|
}
|
||||||
|
if cfg.Password == "" {
|
||||||
|
cfg.Password = ConfigDefault.Password
|
||||||
|
}
|
||||||
|
if cfg.Host == "" {
|
||||||
|
cfg.Host = ConfigDefault.Host
|
||||||
|
}
|
||||||
|
if cfg.Bucket == "" {
|
||||||
|
cfg.Bucket = ConfigDefault.Bucket
|
||||||
|
}
|
||||||
|
if cfg.ConnectionTimeout == 0 {
|
||||||
|
cfg.ConnectionTimeout = ConfigDefault.ConnectionTimeout
|
||||||
|
}
|
||||||
|
if cfg.KVTimeout == 0 {
|
||||||
|
cfg.KVTimeout = ConfigDefault.KVTimeout
|
||||||
|
}
|
||||||
|
|
||||||
|
return cfg
|
||||||
|
}
|
97
couchbase/couchbase.go
Normal file
97
couchbase/couchbase.go
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
package couchbase
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/couchbase/gocb/v2"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Storage struct {
|
||||||
|
cb *gocb.Cluster
|
||||||
|
bucket *gocb.Bucket
|
||||||
|
}
|
||||||
|
|
||||||
|
func New(config ...Config) *Storage {
|
||||||
|
// Set default config
|
||||||
|
cfg := configDefault(config...)
|
||||||
|
|
||||||
|
cb, err := gocb.Connect(cfg.Host, gocb.ClusterOptions{
|
||||||
|
Authenticator: gocb.PasswordAuthenticator{
|
||||||
|
Username: cfg.Username,
|
||||||
|
Password: cfg.Password,
|
||||||
|
},
|
||||||
|
TimeoutsConfig: gocb.TimeoutsConfig{
|
||||||
|
ConnectTimeout: cfg.ConnectionTimeout,
|
||||||
|
KVTimeout: cfg.KVTimeout,
|
||||||
|
},
|
||||||
|
Transcoder: gocb.NewLegacyTranscoder(),
|
||||||
|
})
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = cb.Ping(&gocb.PingOptions{
|
||||||
|
Timeout: cfg.ConnectionTimeout,
|
||||||
|
})
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
b := cb.Bucket(cfg.Bucket)
|
||||||
|
|
||||||
|
return &Storage{cb: cb, bucket: b}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Storage) Get(key string) ([]byte, error) {
|
||||||
|
out, err := s.bucket.DefaultCollection().Get(key, nil)
|
||||||
|
if err != nil {
|
||||||
|
switch e := err.(type) {
|
||||||
|
case *gocb.KeyValueError:
|
||||||
|
if e.InnerError.Error() == gocb.ErrDocumentNotFound.Error() {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
default: //*gocb.TimeoutError,...
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var value []byte
|
||||||
|
if err := out.Content(&value); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return value, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Storage) Set(key string, val []byte, exp time.Duration) error {
|
||||||
|
if _, err := s.bucket.DefaultCollection().Upsert(key, val, &gocb.UpsertOptions{
|
||||||
|
Expiry: exp,
|
||||||
|
}); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Storage) Delete(key string) error {
|
||||||
|
if _, err := s.bucket.DefaultCollection().Remove(key, nil); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Storage) Reset() error {
|
||||||
|
return s.cb.Buckets().FlushBucket(s.bucket.Name(), nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Storage) Close() error {
|
||||||
|
return s.cb.Close(nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Storage) Conn() *gocb.Cluster {
|
||||||
|
return s.cb
|
||||||
|
}
|
130
couchbase/couchbase_test.go
Normal file
130
couchbase/couchbase_test.go
Normal file
@@ -0,0 +1,130 @@
|
|||||||
|
package couchbase
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/gofiber/utils"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestSetCouchbase_ShouldReturnNoError(t *testing.T) {
|
||||||
|
testStorage := New(Config{
|
||||||
|
Username: "admin",
|
||||||
|
Password: "123456",
|
||||||
|
Host: "127.0.0.1:8091",
|
||||||
|
Bucket: "fiber_storage",
|
||||||
|
})
|
||||||
|
|
||||||
|
err := testStorage.Set("test", []byte("test"), 0)
|
||||||
|
|
||||||
|
utils.AssertEqual(t, nil, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetCouchbase_ShouldReturnNil_WhenDocumentNotFound(t *testing.T) {
|
||||||
|
testStorage := New(Config{
|
||||||
|
Username: "admin",
|
||||||
|
Password: "123456",
|
||||||
|
Host: "127.0.0.1:8091",
|
||||||
|
Bucket: "fiber_storage",
|
||||||
|
})
|
||||||
|
|
||||||
|
val, err := testStorage.Get("not_found_key")
|
||||||
|
|
||||||
|
utils.AssertEqual(t, nil, err)
|
||||||
|
utils.AssertEqual(t, 0, len(val))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSetAndGet_GetShouldReturn_SettedValueWithoutError(t *testing.T) {
|
||||||
|
testStorage := New(Config{
|
||||||
|
Username: "admin",
|
||||||
|
Password: "123456",
|
||||||
|
Host: "127.0.0.1:8091",
|
||||||
|
Bucket: "fiber_storage",
|
||||||
|
})
|
||||||
|
|
||||||
|
err := testStorage.Set("test", []byte("fiber_test_value"), 0)
|
||||||
|
utils.AssertEqual(t, nil, err)
|
||||||
|
|
||||||
|
val, err := testStorage.Get("test")
|
||||||
|
|
||||||
|
utils.AssertEqual(t, nil, err)
|
||||||
|
utils.AssertEqual(t, val, []byte("fiber_test_value"))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSetAndGet_GetShouldReturnNil_WhenTTLExpired(t *testing.T) {
|
||||||
|
testStorage := New(Config{
|
||||||
|
Username: "admin",
|
||||||
|
Password: "123456",
|
||||||
|
Host: "127.0.0.1:8091",
|
||||||
|
Bucket: "fiber_storage",
|
||||||
|
})
|
||||||
|
|
||||||
|
err := testStorage.Set("test", []byte("fiber_test_value"), 3*time.Second)
|
||||||
|
utils.AssertEqual(t, nil, err)
|
||||||
|
|
||||||
|
time.Sleep(6 * time.Second)
|
||||||
|
|
||||||
|
val, err := testStorage.Get("test")
|
||||||
|
|
||||||
|
utils.AssertEqual(t, nil, err)
|
||||||
|
utils.AssertEqual(t, 0, len(val))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSetAndDelete_DeleteShouldReturn_NoError(t *testing.T) {
|
||||||
|
testStorage := New(Config{
|
||||||
|
Username: "admin",
|
||||||
|
Password: "123456",
|
||||||
|
Host: "127.0.0.1:8091",
|
||||||
|
Bucket: "fiber_storage",
|
||||||
|
})
|
||||||
|
|
||||||
|
err := testStorage.Set("test", []byte("fiber_test_value"), 0)
|
||||||
|
utils.AssertEqual(t, nil, err)
|
||||||
|
|
||||||
|
err = testStorage.Delete("test")
|
||||||
|
utils.AssertEqual(t, nil, err)
|
||||||
|
|
||||||
|
_, err = testStorage.Get("test")
|
||||||
|
utils.AssertEqual(t, nil, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSetAndReset_ResetShouldReturn_NoError(t *testing.T) {
|
||||||
|
testStorage := New(Config{
|
||||||
|
Username: "admin",
|
||||||
|
Password: "123456",
|
||||||
|
Host: "127.0.0.1:8091",
|
||||||
|
Bucket: "fiber_storage",
|
||||||
|
})
|
||||||
|
|
||||||
|
err := testStorage.Set("test", []byte("fiber_test_value"), 0)
|
||||||
|
utils.AssertEqual(t, nil, err)
|
||||||
|
|
||||||
|
err = testStorage.Reset()
|
||||||
|
utils.AssertEqual(t, nil, err)
|
||||||
|
|
||||||
|
_, err = testStorage.Get("test")
|
||||||
|
utils.AssertEqual(t, nil, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestClose_CloseShouldReturn_NoError(t *testing.T) {
|
||||||
|
testStorage := New(Config{
|
||||||
|
Username: "admin",
|
||||||
|
Password: "123456",
|
||||||
|
Host: "127.0.0.1:8091",
|
||||||
|
Bucket: "fiber_storage",
|
||||||
|
})
|
||||||
|
|
||||||
|
err := testStorage.Close()
|
||||||
|
utils.AssertEqual(t, nil, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetConn_ReturnsNotNill(t *testing.T) {
|
||||||
|
testStorage := New(Config{
|
||||||
|
Username: "admin",
|
||||||
|
Password: "123456",
|
||||||
|
Host: "127.0.0.1:8091",
|
||||||
|
Bucket: "fiber_storage",
|
||||||
|
})
|
||||||
|
conn := testStorage.Conn()
|
||||||
|
utils.AssertEqual(t, true, conn != nil)
|
||||||
|
}
|
14
couchbase/go.mod
Normal file
14
couchbase/go.mod
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
module github.com/gofiber/storage/couchbase
|
||||||
|
|
||||||
|
go 1.19
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/couchbase/gocb/v2 v2.6.3
|
||||||
|
github.com/gofiber/utils v1.1.0
|
||||||
|
)
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/couchbase/gocbcore/v10 v10.2.3 // indirect
|
||||||
|
github.com/golang/snappy v0.0.4 // indirect
|
||||||
|
github.com/google/uuid v1.3.0 // indirect
|
||||||
|
)
|
30
couchbase/go.sum
Normal file
30
couchbase/go.sum
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
github.com/couchbase/gocb/v2 v2.6.3 h1:5RsMo+RRfK0mVxHLAfpBz3/tHlgXZb1WBNItLk9Ab+c=
|
||||||
|
github.com/couchbase/gocb/v2 v2.6.3/go.mod h1:yF5F6BHTZ/ZowhEuZbySbXrlI4rHd1TIhm5azOaMbJU=
|
||||||
|
github.com/couchbase/gocbcore/v10 v10.2.3 h1:PEkRSNSkKjUBXx82Ucr094+anoiCG5GleOOQZOHo6D4=
|
||||||
|
github.com/couchbase/gocbcore/v10 v10.2.3/go.mod h1:lYQIIk+tzoMcwtwU5GzPbDdqEkwkH3isI2rkSpfL0oM=
|
||||||
|
github.com/couchbaselabs/gocaves/client v0.0.0-20230307083111-cc3960c624b1/go.mod h1:AVekAZwIY2stsJOMWLAS/0uA/+qdp7pjO8EHnl61QkY=
|
||||||
|
github.com/couchbaselabs/gocaves/client v0.0.0-20230404095311-05e3ba4f0259 h1:2TXy68EGEzIMHOx9UvczR5ApVecwCfQZ0LjkmwMI6g4=
|
||||||
|
github.com/couchbaselabs/gocaves/client v0.0.0-20230404095311-05e3ba4f0259/go.mod h1:AVekAZwIY2stsJOMWLAS/0uA/+qdp7pjO8EHnl61QkY=
|
||||||
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/gofiber/utils v1.1.0 h1:vdEBpn7AzIUJRhe+CiTOJdUcTg4Q9RK+pEa0KPbLdrM=
|
||||||
|
github.com/gofiber/utils v1.1.0/go.mod h1:poZpsnhBykfnY1Mc0KeEa6mSHrS3dV0+oBWyeQmb2e0=
|
||||||
|
github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
|
||||||
|
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||||
|
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
|
||||||
|
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
|
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
||||||
|
github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c=
|
||||||
|
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
||||||
|
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
|
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
||||||
|
github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8=
|
||||||
|
github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||||
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||||
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
@@ -1,4 +1,14 @@
|
|||||||
# DynamoDB
|
---
|
||||||
|
id: dynamodb
|
||||||
|
title: DynamoDB
|
||||||
|
---
|
||||||
|
|
||||||
|

|
||||||
|
[](https://gofiber.io/discord)
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
A DynamoDB storage driver using [aws/aws-sdk-go-v2](https://github.com/aws/aws-sdk-go-v2).
|
A DynamoDB storage driver using [aws/aws-sdk-go-v2](https://github.com/aws/aws-sdk-go-v2).
|
||||||
|
|
||||||
**Note:** If config fields of credentials not given, credentials are using from the environment variables, ~/.aws/credentials, or EC2 instance role. If config fields of credentials given, credentials are using from config. Look at: [specifying credentials](https://aws.github.io/aws-sdk-go-v2/docs/configuring-sdk/#specifying-credentials)
|
**Note:** If config fields of credentials not given, credentials are using from the environment variables, ~/.aws/credentials, or EC2 instance role. If config fields of credentials given, credentials are using from config. Look at: [specifying credentials](https://aws.github.io/aws-sdk-go-v2/docs/configuring-sdk/#specifying-credentials)
|
||||||
|
@@ -1,12 +1,28 @@
|
|||||||
module github.com/gofiber/storage/dynamodb
|
module github.com/gofiber/storage/dynamodb
|
||||||
|
|
||||||
go 1.16
|
go 1.17
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/aws/aws-sdk-go-v2 v1.17.4
|
github.com/aws/aws-sdk-go-v2 v1.20.3
|
||||||
github.com/aws/aws-sdk-go-v2/config v1.18.13
|
github.com/aws/aws-sdk-go-v2/config v1.18.35
|
||||||
github.com/aws/aws-sdk-go-v2/credentials v1.13.13
|
github.com/aws/aws-sdk-go-v2/credentials v1.13.34
|
||||||
github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.10.13
|
github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.10.38
|
||||||
github.com/aws/aws-sdk-go-v2/service/dynamodb v1.18.3
|
github.com/aws/aws-sdk-go-v2/service/dynamodb v1.21.4
|
||||||
github.com/gofiber/utils v1.0.1
|
github.com/gofiber/utils v1.1.0
|
||||||
|
)
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.10 // indirect
|
||||||
|
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.40 // indirect
|
||||||
|
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.34 // indirect
|
||||||
|
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.41 // indirect
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/dynamodbstreams v1.15.4 // indirect
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.14 // indirect
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.7.34 // indirect
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.34 // indirect
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/sso v1.13.4 // indirect
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.15.4 // indirect
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/sts v1.21.4 // indirect
|
||||||
|
github.com/aws/smithy-go v1.14.2 // indirect
|
||||||
|
github.com/jmespath/go-jmespath v0.4.0 // indirect
|
||||||
)
|
)
|
||||||
|
@@ -1,41 +1,41 @@
|
|||||||
github.com/aws/aws-sdk-go-v2 v1.17.4 h1:wyC6p9Yfq6V2y98wfDsj6OnNQa4w2BLGCLIxzNhwOGY=
|
github.com/aws/aws-sdk-go-v2 v1.20.3 h1:lgeKmAZhlj1JqN43bogrM75spIvYnRxqTAh1iupu1yE=
|
||||||
github.com/aws/aws-sdk-go-v2 v1.17.4/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw=
|
github.com/aws/aws-sdk-go-v2 v1.20.3/go.mod h1:/RfNgGmRxI+iFOB1OeJUyxiU+9s88k3pfHvDagGEp0M=
|
||||||
github.com/aws/aws-sdk-go-v2/config v1.18.13 h1:v0xlYqbO6/EVlM8tUn2QEOA7btQxcgidEq2JRDBPTho=
|
github.com/aws/aws-sdk-go-v2/config v1.18.35 h1:uU9rgCzrW/pVRUUlRULiwKQe8RoEDst1NQu4Qo8kOtk=
|
||||||
github.com/aws/aws-sdk-go-v2/config v1.18.13/go.mod h1:r39wGSZB7wPDW1i54JyQXUpc5KsWjh5z/3S5D9eCqDg=
|
github.com/aws/aws-sdk-go-v2/config v1.18.35/go.mod h1:7xF1yr9GBMfYRQI4PLHO8iceqKLM6DpGVEvXI38HB/A=
|
||||||
github.com/aws/aws-sdk-go-v2/credentials v1.13.13 h1:zw1KAc1kl00NYd3ofVmFrb09qnYlSQMeh+fmlQRAihI=
|
github.com/aws/aws-sdk-go-v2/credentials v1.13.34 h1:/EYG4lzayDd5PY6HQQ2Qyj/cD6CR3kz96BjTZAO5tNo=
|
||||||
github.com/aws/aws-sdk-go-v2/credentials v1.13.13/go.mod h1:DW9nbIIF9MrIja0cBQrUpeWYQMSlNmP8fevLUyF9W38=
|
github.com/aws/aws-sdk-go-v2/credentials v1.13.34/go.mod h1:+wgdxCGNulHme6kTMZuDL9KOagLPloemoYkfjpQkSEU=
|
||||||
github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.10.13 h1:l+VnL8qkVJ/89c9zSQvPdmtQc+tYnuIb4qWZrYsgTBE=
|
github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.10.38 h1:8qKhDyyVtFd4YG1mz7AhX4laQ0wkxKJuNsdX1Si+gDk=
|
||||||
github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.10.13/go.mod h1:tPnUO5mS3JThpwfq4Q8iPd745s7yh6fGPqDUEBw+Wv4=
|
github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.10.38/go.mod h1:3NuokqGQKXxywI3RhwIGliwcsz73Ioja/tIZFpgXZ68=
|
||||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.22 h1:3aMfcTmoXtTZnaT86QlVaYh+BRMbvrrmZwIQ5jWqCZQ=
|
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.10 h1:mgOrtwYfJZ4e3QJe1TrliC/xIkauafGMdLLuCExOqcs=
|
||||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.22/go.mod h1:YGSIJyQ6D6FjKMQh16hVFSIUD54L4F7zTGePqYMYYJU=
|
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.10/go.mod h1:wMsSLVM2hRpDVhd+3dtLUzqwm7/fjuhNN+b1aOLDt6g=
|
||||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.28 h1:r+XwaCLpIvCKjBIYy/HVZujQS9tsz5ohHG3ZIe0wKoE=
|
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.40 h1:CXceCS9BrDInRc74GDCQ8Qyk/Gp9VLdK+Rlve+zELSE=
|
||||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.28/go.mod h1:3lwChorpIM/BhImY/hy+Z6jekmN92cXGPI1QJasVPYY=
|
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.40/go.mod h1:5kKmFhLeOVy6pwPDpDNA6/hK/d6URC98pqDDqHgdBx4=
|
||||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.22 h1:7AwGYXDdqRQYsluvKFmWoqpcOQJ4bH634SkYf3FNj/A=
|
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.34 h1:B+nZtd22cbko5+793hg7LEaTeLMiZwlgCLUrN5Y0uzg=
|
||||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.22/go.mod h1:EqK7gVrIGAHyZItrD1D8B0ilgwMD1GiWAmbU4u/JHNk=
|
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.34/go.mod h1:RZP0scceAyhMIQ9JvFp7HvkpcgqjL4l/4C+7RAeGbuM=
|
||||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.29 h1:J4xhFd6zHhdF9jPP0FQJ6WknzBboGMBNjKOv4iTuw4A=
|
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.41 h1:EcSFdpLdkF3FWizimox0qYLuorn9e4PNMR27mvshGLs=
|
||||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.29/go.mod h1:TwuqRBGzxjQJIwH16/fOZodwXt2Zxa9/cwJC5ke4j7s=
|
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.41/go.mod h1:mKxUXW+TuwpCKKHVlmHGVVuBi9y9LKW8AiQodg23M5E=
|
||||||
github.com/aws/aws-sdk-go-v2/service/dynamodb v1.18.3 h1:MxOpCZ+o9+AIeQHi2ocW7H4D7p0LhEkmetETVvDnkvg=
|
github.com/aws/aws-sdk-go-v2/service/dynamodb v1.21.4 h1:x3V1JRHq7q9RUbDpaeNpLH7QoipGpCo3fdnMMuSeABU=
|
||||||
github.com/aws/aws-sdk-go-v2/service/dynamodb v1.18.3/go.mod h1:nkpC9xkh+3vdxmhqN8Ac10pgV14DsJDLzUsV2CcS+44=
|
github.com/aws/aws-sdk-go-v2/service/dynamodb v1.21.4/go.mod h1:aryF4jxgjhbqpdhj8QybUZI3xYrX8MQIKm4WbOv8Whg=
|
||||||
github.com/aws/aws-sdk-go-v2/service/dynamodbstreams v1.14.3 h1:B+bkmCnNJi194pu9aTtYUe8f4EPXafC+xfU+zciVxdg=
|
github.com/aws/aws-sdk-go-v2/service/dynamodbstreams v1.15.4 h1:W7zl4rdlkSRWa31l7wOtUND6wKcWPW2POvPxMFMBvHM=
|
||||||
github.com/aws/aws-sdk-go-v2/service/dynamodbstreams v1.14.3/go.mod h1:bRphLmXQD9Ux4jLcFEwyrWdmuPTj2Lh8VGl9wILuJII=
|
github.com/aws/aws-sdk-go-v2/service/dynamodbstreams v1.15.4/go.mod h1:W+Ct7i87BUgyqJy50w1NpC0idqnW2w67XLzihxCb5Hk=
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.11 h1:y2+VQzC6Zh2ojtV2LoC0MNwHWc6qXv/j2vrQtlftkdA=
|
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.14 h1:m0QTSI6pZYJTk5WSKx3fm5cNW/DCicVzULBgU/6IyD0=
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.11/go.mod h1:iV4q2hsqtNECrfmlXyord9u4zyuFEJX9eLgLpSPzWA8=
|
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.14/go.mod h1:dDilntgHy9WnHXsh7dDtUPgHKEfTJIBUTHM8OWm0f/0=
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.7.22 h1:6zEryIiJOSk5/OcVHzkPDwzNBQ2atYCTShyA7TqkuxA=
|
github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.7.34 h1:JlxVMFDHivlhNOIxd2O/9z4O0wC2zIC4lRB71lejVHU=
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.7.22/go.mod h1:moeOz5SKfY0p6pNIChdPIQdfaUfWI67+OVe0/r6+aGY=
|
github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.7.34/go.mod h1:CDPcT6pljRaqz1yLsOgPUvOPOczFvXuJxOKzDzAbF0c=
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.22 h1:LjFQf8hFuMO22HkV5VWGLBvmCLBCLPivUAmpdpnp4Vs=
|
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.34 h1:JwvXk+1ePAD9xkFHprhHYqwsxLDcbNFsPI1IAT2sPS0=
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.22/go.mod h1:xt0Au8yPIwYXf/GYPy/vl4K3CgwhfQMYbrH7DlUUIws=
|
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.34/go.mod h1:ytsF+t+FApY2lFnN51fJKPhH6ICKOPXKEcwwgmJEdWI=
|
||||||
github.com/aws/aws-sdk-go-v2/service/sso v1.12.2 h1:EN102fWY7hI5u/2FPheTrwwMHkSXfl49RYkeEnJsrCU=
|
github.com/aws/aws-sdk-go-v2/service/sso v1.13.4 h1:WZPZ7Zf6Yo13lsfTetFrLU/7hZ9CXESDpdIHvmLxQFQ=
|
||||||
github.com/aws/aws-sdk-go-v2/service/sso v1.12.2/go.mod h1:IgV8l3sj22nQDd5qcAGY0WenwCzCphqdbFOpfktZPrI=
|
github.com/aws/aws-sdk-go-v2/service/sso v1.13.4/go.mod h1:FP05hDXTLouXwAMQ1swqybHy7tHySblMkBMKSumaKg0=
|
||||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.2 h1:f1lmlce7r13CX1BPyPqt9oh/H+uqOWc9367lDoGGwNQ=
|
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.15.4 h1:pYFM2U/3/4RLrlMSYXwL1XPBCWvaePk2p+0+i/BgHOs=
|
||||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.2/go.mod h1:O1YSOg3aekZibh2SngvCRRG+cRHKKlYgxf/JBF/Kr/k=
|
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.15.4/go.mod h1:4pdlNASc29u0j9bq2jIQcBghG5Lx2oQAIj91vo1u1t8=
|
||||||
github.com/aws/aws-sdk-go-v2/service/sts v1.18.3 h1:s49mSnsBZEXjfGBkRfmK+nPqzT7Lt3+t2SmAKNyHblw=
|
github.com/aws/aws-sdk-go-v2/service/sts v1.21.4 h1:zj4jxK3L54tGyqKleKDMK4vHolENxlq11dF0v1oBkJo=
|
||||||
github.com/aws/aws-sdk-go-v2/service/sts v1.18.3/go.mod h1:b+psTJn33Q4qGoDaM7ZiOVVG8uVjGI6HaZ8WBHdgDgU=
|
github.com/aws/aws-sdk-go-v2/service/sts v1.21.4/go.mod h1:CQRMCzYvl5eeAQW3AWkRLS+zGGXCucBnsiQlrs+tCeo=
|
||||||
github.com/aws/smithy-go v1.13.5 h1:hgz0X/DX0dGqTYpGALqXJoRKRj5oQ7150i5FdTePzO8=
|
github.com/aws/smithy-go v1.14.2 h1:MJU9hqBGbvWZdApzpvoF2WAIJDbtjK2NDJSiJP7HblQ=
|
||||||
github.com/aws/smithy-go v1.13.5/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA=
|
github.com/aws/smithy-go v1.14.2/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA=
|
||||||
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
|
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/gofiber/utils v1.0.1 h1:knct4cXwBipWQqFrOy1Pv6UcgPM+EXo9jDgc66V1Qio=
|
github.com/gofiber/utils v1.1.0 h1:vdEBpn7AzIUJRhe+CiTOJdUcTg4Q9RK+pEa0KPbLdrM=
|
||||||
github.com/gofiber/utils v1.0.1/go.mod h1:pacRFtghAE3UoknMOUiXh2Io/nLWSUHtQCi/3QASsOc=
|
github.com/gofiber/utils v1.1.0/go.mod h1:poZpsnhBykfnY1Mc0KeEa6mSHrS3dV0+oBWyeQmb2e0=
|
||||||
github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg=
|
github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg=
|
||||||
github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||||
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
|
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
|
||||||
|
85
etcd/README.md
Normal file
85
etcd/README.md
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
---
|
||||||
|
id: etcd
|
||||||
|
title: Etcd
|
||||||
|
---
|
||||||
|
|
||||||
|

|
||||||
|
[](https://gofiber.io/discord)
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
A Etcd storage driver using [`etcd-io/etcd`](https://github.com/etcd-io/etcd).
|
||||||
|
|
||||||
|
### Table of Contents
|
||||||
|
- [Signatures](#signatures)
|
||||||
|
- [Installation](#installation)
|
||||||
|
- [Examples](#examples)
|
||||||
|
- [Config](#config)
|
||||||
|
- [Default Config](#default-config)
|
||||||
|
|
||||||
|
### Signatures
|
||||||
|
```go
|
||||||
|
func New(config ...Config) *Storage
|
||||||
|
func (s *Storage) Get(key string) ([]byte, error)
|
||||||
|
func (s *Storage) Set(key string, val []byte, exp time.Duration) error
|
||||||
|
func (s *Storage) Delete(key string) error
|
||||||
|
func (s *Storage) Reset() error
|
||||||
|
func (s *Storage) Close() error
|
||||||
|
func (s *Storage) Conn() *clientv3.Client
|
||||||
|
```
|
||||||
|
|
||||||
|
### Installation
|
||||||
|
Etcd is tested on the 2 last [Go versions](https://golang.org/dl/) with support for modules. So make sure to initialize one first if you didn't do that yet:
|
||||||
|
```bash
|
||||||
|
go mod init github.com/<user>/<repo>
|
||||||
|
```
|
||||||
|
And then install the etcd implementation:
|
||||||
|
```bash
|
||||||
|
go get github.com/gofiber/storage/etcd
|
||||||
|
```
|
||||||
|
|
||||||
|
### Examples
|
||||||
|
Import the storage package.
|
||||||
|
```go
|
||||||
|
import "github.com/gofiber/storage/etcd"
|
||||||
|
```
|
||||||
|
|
||||||
|
You can use the following possibilities to create a storage:
|
||||||
|
```go
|
||||||
|
// Initialize default config
|
||||||
|
store := etcd.New()
|
||||||
|
|
||||||
|
// Initialize custom config
|
||||||
|
store := etcd.New(Config{
|
||||||
|
Endpoints: []string{"localhost:2379"},
|
||||||
|
})
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
### Config
|
||||||
|
```go
|
||||||
|
type Config struct {
|
||||||
|
// Endpoints is a list of URLs.
|
||||||
|
Endpoints []string
|
||||||
|
// DialTimeout is the timeout for failing to establish a connection.
|
||||||
|
DialTimeout time.Duration
|
||||||
|
// Username is a username for authentication.
|
||||||
|
Username string
|
||||||
|
// Password is a password for authentication.
|
||||||
|
Password string
|
||||||
|
// TLS holds the client secure credentials, if any.
|
||||||
|
TLS *tls.Config
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Default Config
|
||||||
|
```go
|
||||||
|
var ConfigDefault = Config{
|
||||||
|
Endpoints: []string{"localhost:2379"},
|
||||||
|
DialTimeout: 2 * time.Second,
|
||||||
|
Username: "",
|
||||||
|
Password: "",
|
||||||
|
TLS: nil,
|
||||||
|
}
|
||||||
|
```
|
52
etcd/config.go
Normal file
52
etcd/config.go
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
package etcd
|
||||||
|
|
||||||
|
import (
|
||||||
|
"crypto/tls"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Config defines the config for storage.
|
||||||
|
type Config struct {
|
||||||
|
// Endpoints is a list of URLs.
|
||||||
|
Endpoints []string
|
||||||
|
// DialTimeout is the timeout for failing to establish a connection.
|
||||||
|
DialTimeout time.Duration
|
||||||
|
// Username is a username for authentication.
|
||||||
|
Username string
|
||||||
|
// Password is a password for authentication.
|
||||||
|
Password string
|
||||||
|
// TLS holds the client secure credentials, if any.
|
||||||
|
TLS *tls.Config
|
||||||
|
}
|
||||||
|
|
||||||
|
// ConfigDefault is the default config
|
||||||
|
var ConfigDefault = Config{
|
||||||
|
Endpoints: []string{"localhost:2379"},
|
||||||
|
DialTimeout: 2 * time.Second,
|
||||||
|
Username: "",
|
||||||
|
Password: "",
|
||||||
|
TLS: nil,
|
||||||
|
}
|
||||||
|
|
||||||
|
// Helper function to set default values
|
||||||
|
func configDefault(config ...Config) Config {
|
||||||
|
// Return default config if nothing provided
|
||||||
|
if len(config) < 1 {
|
||||||
|
return ConfigDefault
|
||||||
|
}
|
||||||
|
|
||||||
|
// Override default config
|
||||||
|
cfg := config[0]
|
||||||
|
// Set default values
|
||||||
|
if cfg.Username == "" {
|
||||||
|
cfg.Username = ConfigDefault.Username
|
||||||
|
}
|
||||||
|
if cfg.Password == "" {
|
||||||
|
cfg.Password = ConfigDefault.Password
|
||||||
|
}
|
||||||
|
if cfg.DialTimeout == 0 {
|
||||||
|
cfg.DialTimeout = ConfigDefault.DialTimeout
|
||||||
|
}
|
||||||
|
|
||||||
|
return cfg
|
||||||
|
}
|
100
etcd/etcd.go
Normal file
100
etcd/etcd.go
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
package etcd
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"go.etcd.io/etcd/client/v3"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Storage struct {
|
||||||
|
db *clientv3.Client
|
||||||
|
}
|
||||||
|
|
||||||
|
func New(config ...Config) *Storage {
|
||||||
|
cfg := configDefault(config...)
|
||||||
|
|
||||||
|
cli, err := clientv3.New(clientv3.Config{
|
||||||
|
Endpoints: cfg.Endpoints,
|
||||||
|
DialTimeout: cfg.DialTimeout,
|
||||||
|
Username: cfg.Username,
|
||||||
|
Password: cfg.Password,
|
||||||
|
TLS: cfg.TLS,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
store := &Storage{
|
||||||
|
db: cli,
|
||||||
|
}
|
||||||
|
|
||||||
|
return store
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Storage) Get(key string) ([]byte, error) {
|
||||||
|
if len(key) <= 0 {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
item, err := s.db.Get(context.Background(), key)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(item.Kvs) <= 0 {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return item.Kvs[0].Value, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Storage) Set(key string, val []byte, exp time.Duration) error {
|
||||||
|
// Ain't Nobody Got Time For That
|
||||||
|
if len(key) <= 0 || len(val) <= 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
lease, err := s.db.Grant(context.Background(), int64(exp.Seconds()))
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = s.db.Put(context.Background(), key, string(val), clientv3.WithLease(lease.ID))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Storage) Delete(key string) error {
|
||||||
|
if len(key) <= 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err := s.db.Delete(context.Background(), key)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Storage) Reset() error {
|
||||||
|
_, err := s.db.Delete(context.Background(), "", clientv3.WithPrefix())
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Storage) Close() error {
|
||||||
|
return s.db.Close()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Storage) Conn() *clientv3.Client {
|
||||||
|
return s.db
|
||||||
|
}
|
110
etcd/etcd_test.go
Normal file
110
etcd/etcd_test.go
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
package etcd
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/gofiber/utils"
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestSetEtcd_ShouldReturnNoError(t *testing.T) {
|
||||||
|
testStorage := New(Config{
|
||||||
|
Endpoints: []string{"localhost:2379"},
|
||||||
|
})
|
||||||
|
|
||||||
|
var (
|
||||||
|
key = "john"
|
||||||
|
val = []byte("doe")
|
||||||
|
)
|
||||||
|
|
||||||
|
err := testStorage.Set(key, val, 0)
|
||||||
|
utils.AssertEqual(t, nil, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetEtcd_ShouldReturnNil_WhenDocumentNotFound(t *testing.T) {
|
||||||
|
testStorage := New(Config{
|
||||||
|
Endpoints: []string{"localhost:2379"},
|
||||||
|
})
|
||||||
|
|
||||||
|
val, err := testStorage.Get("not_found_key")
|
||||||
|
|
||||||
|
utils.AssertEqual(t, nil, err)
|
||||||
|
utils.AssertEqual(t, 0, len(val))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSetAndGet_GetShouldReturn_SettedValueWithoutError(t *testing.T) {
|
||||||
|
testStorage := New(Config{
|
||||||
|
Endpoints: []string{"localhost:2379"},
|
||||||
|
})
|
||||||
|
|
||||||
|
err := testStorage.Set("test", []byte("fiber_test_value"), 0)
|
||||||
|
utils.AssertEqual(t, nil, err)
|
||||||
|
|
||||||
|
val, err := testStorage.Get("test")
|
||||||
|
|
||||||
|
utils.AssertEqual(t, nil, err)
|
||||||
|
utils.AssertEqual(t, val, []byte("fiber_test_value"))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSetAndGet_GetShouldReturnNil_WhenTTLExpired(t *testing.T) {
|
||||||
|
testStorage := New(Config{
|
||||||
|
Endpoints: []string{"localhost:2379"},
|
||||||
|
})
|
||||||
|
|
||||||
|
err := testStorage.Set("test", []byte("fiber_test_value"), 3*time.Second)
|
||||||
|
utils.AssertEqual(t, nil, err)
|
||||||
|
|
||||||
|
time.Sleep(6 * time.Second)
|
||||||
|
|
||||||
|
val, err := testStorage.Get("test")
|
||||||
|
|
||||||
|
utils.AssertEqual(t, nil, err)
|
||||||
|
utils.AssertEqual(t, 0, len(val))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSetAndDelete_DeleteShouldReturn_NoError(t *testing.T) {
|
||||||
|
testStorage := New(Config{
|
||||||
|
Endpoints: []string{"localhost:2379"},
|
||||||
|
})
|
||||||
|
|
||||||
|
err := testStorage.Set("test", []byte("fiber_test_value"), 0)
|
||||||
|
utils.AssertEqual(t, nil, err)
|
||||||
|
|
||||||
|
err = testStorage.Delete("test")
|
||||||
|
utils.AssertEqual(t, nil, err)
|
||||||
|
|
||||||
|
_, err = testStorage.Get("test")
|
||||||
|
utils.AssertEqual(t, nil, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSetAndReset_ResetShouldReturn_NoError(t *testing.T) {
|
||||||
|
testStorage := New(Config{
|
||||||
|
Endpoints: []string{"localhost:2379"},
|
||||||
|
})
|
||||||
|
|
||||||
|
err := testStorage.Set("test", []byte("fiber_test_value"), 0)
|
||||||
|
utils.AssertEqual(t, nil, err)
|
||||||
|
|
||||||
|
err = testStorage.Reset()
|
||||||
|
utils.AssertEqual(t, nil, err)
|
||||||
|
|
||||||
|
_, err = testStorage.Get("test")
|
||||||
|
utils.AssertEqual(t, nil, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestClose_CloseShouldReturn_NoError(t *testing.T) {
|
||||||
|
testStorage := New(Config{
|
||||||
|
Endpoints: []string{"localhost:2379"},
|
||||||
|
})
|
||||||
|
|
||||||
|
err := testStorage.Close()
|
||||||
|
utils.AssertEqual(t, nil, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetConn_ReturnsNotNill(t *testing.T) {
|
||||||
|
testStorage := New(Config{
|
||||||
|
Endpoints: []string{"localhost:2379"},
|
||||||
|
})
|
||||||
|
|
||||||
|
conn := testStorage.Conn()
|
||||||
|
utils.AssertEqual(t, true, conn != nil)
|
||||||
|
}
|
26
etcd/go.mod
Normal file
26
etcd/go.mod
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
module github.com/gofiber/storage/etcd
|
||||||
|
|
||||||
|
go 1.19
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/gofiber/utils v1.1.0
|
||||||
|
go.etcd.io/etcd/client/v3 v3.5.9
|
||||||
|
)
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/coreos/go-semver v0.3.1 // indirect
|
||||||
|
github.com/coreos/go-systemd/v22 v22.3.2 // indirect
|
||||||
|
github.com/gogo/protobuf v1.3.2 // indirect
|
||||||
|
github.com/golang/protobuf v1.5.3 // indirect
|
||||||
|
go.etcd.io/etcd/api/v3 v3.5.9 // indirect
|
||||||
|
go.etcd.io/etcd/client/pkg/v3 v3.5.9 // indirect
|
||||||
|
go.uber.org/atomic v1.7.0 // indirect
|
||||||
|
go.uber.org/multierr v1.6.0 // indirect
|
||||||
|
go.uber.org/zap v1.24.0 // indirect
|
||||||
|
golang.org/x/net v0.8.0 // indirect
|
||||||
|
golang.org/x/sys v0.6.0 // indirect
|
||||||
|
golang.org/x/text v0.8.0 // indirect
|
||||||
|
google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4 // indirect
|
||||||
|
google.golang.org/grpc v1.55.0 // indirect
|
||||||
|
google.golang.org/protobuf v1.30.0 // indirect
|
||||||
|
)
|
83
etcd/go.sum
Normal file
83
etcd/go.sum
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
|
||||||
|
github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4=
|
||||||
|
github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec=
|
||||||
|
github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI=
|
||||||
|
github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
|
||||||
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
|
||||||
|
github.com/gofiber/utils v1.1.0 h1:vdEBpn7AzIUJRhe+CiTOJdUcTg4Q9RK+pEa0KPbLdrM=
|
||||||
|
github.com/gofiber/utils v1.1.0/go.mod h1:poZpsnhBykfnY1Mc0KeEa6mSHrS3dV0+oBWyeQmb2e0=
|
||||||
|
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
|
||||||
|
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
|
||||||
|
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
||||||
|
github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
|
||||||
|
github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
||||||
|
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
|
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
|
||||||
|
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
|
||||||
|
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||||
|
github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
|
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||||
|
github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
|
||||||
|
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
|
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
|
go.etcd.io/etcd/api/v3 v3.5.9 h1:4wSsluwyTbGGmyjJktOf3wFQoTBIURXHnq9n/G/JQHs=
|
||||||
|
go.etcd.io/etcd/api/v3 v3.5.9/go.mod h1:uyAal843mC8uUVSLWz6eHa/d971iDGnCRpmKd2Z+X8k=
|
||||||
|
go.etcd.io/etcd/client/pkg/v3 v3.5.9 h1:oidDC4+YEuSIQbsR94rY9gur91UPL6DnxDCIYd2IGsE=
|
||||||
|
go.etcd.io/etcd/client/pkg/v3 v3.5.9/go.mod h1:y+CzeSmkMpWN2Jyu1npecjB9BBnABxGM4pN8cGuJeL4=
|
||||||
|
go.etcd.io/etcd/client/v3 v3.5.9 h1:r5xghnU7CwbUxD/fbUtRyJGaYNfDun8sp/gTr1hew6E=
|
||||||
|
go.etcd.io/etcd/client/v3 v3.5.9/go.mod h1:i/Eo5LrZ5IKqpbtpPDuaUnDOUv471oDg8cjQaUr2MbA=
|
||||||
|
go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw=
|
||||||
|
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
|
||||||
|
go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI=
|
||||||
|
go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4=
|
||||||
|
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
|
||||||
|
go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60=
|
||||||
|
go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg=
|
||||||
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
|
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||||
|
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
|
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
|
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
|
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||||
|
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||||
|
golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ=
|
||||||
|
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
|
||||||
|
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
|
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ=
|
||||||
|
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
|
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
|
golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68=
|
||||||
|
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
|
||||||
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
|
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
|
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
||||||
|
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||||
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4 h1:DdoeryqhaXp1LtT/emMP1BRJPHHKFi5akj/nbx/zNTA=
|
||||||
|
google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s=
|
||||||
|
google.golang.org/grpc v1.55.0 h1:3Oj82/tFSCeUrRTg/5E/7d/W5A1tj6Ky1ABAuZuv5ag=
|
||||||
|
google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8=
|
||||||
|
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
|
||||||
|
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||||
|
google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng=
|
||||||
|
google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
||||||
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||||
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
2
go.mod
2
go.mod
@@ -1,3 +1,3 @@
|
|||||||
module github.com/gofiber/storage
|
module github.com/gofiber/storage
|
||||||
|
|
||||||
go 1.16
|
go 1.18
|
||||||
|
@@ -1,4 +1,13 @@
|
|||||||
# Memcache
|
---
|
||||||
|
id: memcache
|
||||||
|
title: Memcache
|
||||||
|
---
|
||||||
|
|
||||||
|

|
||||||
|
[](https://gofiber.io/discord)
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
A Memcache storage driver using [`bradfitz/gomemcache`](https://github.com/bradfitz/gomemcache).
|
A Memcache storage driver using [`bradfitz/gomemcache`](https://github.com/bradfitz/gomemcache).
|
||||||
|
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
module github.com/gofiber/storage/memcache
|
module github.com/gofiber/storage/memcache
|
||||||
|
|
||||||
go 1.16
|
go 1.17
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/bradfitz/gomemcache v0.0.0-20221031212613-62deef7fc822
|
github.com/bradfitz/gomemcache v0.0.0-20221031212613-62deef7fc822
|
||||||
github.com/gofiber/utils v1.0.1
|
github.com/gofiber/utils v1.1.0
|
||||||
)
|
)
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
github.com/bradfitz/gomemcache v0.0.0-20221031212613-62deef7fc822 h1:hjXJeBcAMS1WGENGqDpzvmgS43oECTx8UXq31UBu0Jw=
|
github.com/bradfitz/gomemcache v0.0.0-20221031212613-62deef7fc822 h1:hjXJeBcAMS1WGENGqDpzvmgS43oECTx8UXq31UBu0Jw=
|
||||||
github.com/bradfitz/gomemcache v0.0.0-20221031212613-62deef7fc822/go.mod h1:H0wQNHz2YrLsuXOZozoeDmnHXkNCRmMW0gwFWDfEZDA=
|
github.com/bradfitz/gomemcache v0.0.0-20221031212613-62deef7fc822/go.mod h1:H0wQNHz2YrLsuXOZozoeDmnHXkNCRmMW0gwFWDfEZDA=
|
||||||
github.com/gofiber/utils v1.0.1 h1:knct4cXwBipWQqFrOy1Pv6UcgPM+EXo9jDgc66V1Qio=
|
github.com/gofiber/utils v1.1.0 h1:vdEBpn7AzIUJRhe+CiTOJdUcTg4Q9RK+pEa0KPbLdrM=
|
||||||
github.com/gofiber/utils v1.0.1/go.mod h1:pacRFtghAE3UoknMOUiXh2Io/nLWSUHtQCi/3QASsOc=
|
github.com/gofiber/utils v1.1.0/go.mod h1:poZpsnhBykfnY1Mc0KeEa6mSHrS3dV0+oBWyeQmb2e0=
|
||||||
|
@@ -1,4 +1,14 @@
|
|||||||
# Memory
|
---
|
||||||
|
id: memory
|
||||||
|
title: Memory
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|

|
||||||
|
[](https://gofiber.io/discord)
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
An in-memory storage driver.
|
An in-memory storage driver.
|
||||||
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
module github.com/gofiber/storage/memory
|
module github.com/gofiber/storage/memory
|
||||||
|
|
||||||
go 1.16
|
go 1.17
|
||||||
|
|
||||||
require github.com/gofiber/utils v1.0.1
|
require github.com/gofiber/utils v1.1.0
|
||||||
|
@@ -1,2 +1,2 @@
|
|||||||
github.com/gofiber/utils v1.0.1 h1:knct4cXwBipWQqFrOy1Pv6UcgPM+EXo9jDgc66V1Qio=
|
github.com/gofiber/utils v1.1.0 h1:vdEBpn7AzIUJRhe+CiTOJdUcTg4Q9RK+pEa0KPbLdrM=
|
||||||
github.com/gofiber/utils v1.0.1/go.mod h1:pacRFtghAE3UoknMOUiXh2Io/nLWSUHtQCi/3QASsOc=
|
github.com/gofiber/utils v1.1.0/go.mod h1:poZpsnhBykfnY1Mc0KeEa6mSHrS3dV0+oBWyeQmb2e0=
|
||||||
|
@@ -137,5 +137,7 @@ func (s *Storage) gc() {
|
|||||||
|
|
||||||
// Return database client
|
// Return database client
|
||||||
func (s *Storage) Conn() map[string]entry {
|
func (s *Storage) Conn() map[string]entry {
|
||||||
|
s.mux.RLock()
|
||||||
|
defer s.mux.RUnlock()
|
||||||
return s.db
|
return s.db
|
||||||
}
|
}
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user