mirror of
				https://github.com/gofiber/storage.git
				synced 2025-11-01 04:02:44 +08:00 
			
		
		
		
	Compare commits
	
		
			598 Commits
		
	
	
		
			couchbase/
			...
			rueidis/v1
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 0274593c1a | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | c4b0384ec6 | ||
|   | e8b74fb4fa | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | bf58427578 | ||
|   | d595e35d0a | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 199f089acc | ||
|   | 1a62adf8c9 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | c8329a9079 | ||
|   | 1840d50c51 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 1984d794bd | ||
|   | 98e9960b8a | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 1b17ebe75e | ||
|   | 615ffff3ca | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 7d8c54b7b9 | ||
|   | 37cac945d7 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | ed111a8863 | ||
|   | b6cb0e033a | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 8274bf6bcf | ||
|   | 844d792a9a | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | fb7298cbc7 | ||
|   | 792e73cd50 | ||
|   | 1c4c7b5d41 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 9fea419c52 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | c78b5ddf0d | ||
|   | 2b1b3095d1 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 9f09db82df | ||
|   | a29a7f441b | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 99e0744cde | ||
|   | 64cf5fce96 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | aea5de6571 | ||
|   | 9c5739619e | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | eea44a49a2 | ||
|   | ea88338da0 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 857b7f7752 | ||
|   | 9368c6496f | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | a801d63db5 | ||
|   | 871e126509 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | a6206de18a | ||
|   | 8960007c0c | ||
|   | e019db9fdb | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 7bd7b9128a | ||
|   | de2dbe02e6 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 4b12896f89 | ||
|   | 0937e7de78 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | d23c74a8be | ||
|   | fcaab92837 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | fb335f7824 | ||
|   | acb0ac9333 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 04ab11df63 | ||
|   | eed3f4f839 | ||
|   | 73bd368b66 | ||
|   | 6f5e3d0829 | ||
|   | 18ce1361ef | ||
|   | db7b26f315 | ||
|   | 7770b17ee7 | ||
|   | 4a07c8cdb9 | ||
|   | c144ab7857 | ||
|   | 73765194e1 | ||
|   | f674c88870 | ||
|   | 6b097d5f9e | ||
|   | 44b5e1342e | ||
|   | 3705547f92 | ||
|   | 545555c06c | ||
|   | b246201e6b | ||
|   | 729be9aea6 | ||
|   | 99205e09cb | ||
|   | 0ec0680779 | ||
|   | 1f646e2b61 | ||
|   | 2b6f037031 | ||
|   | 62d73cb2cf | ||
|   | d8c4365480 | ||
|   | a707767170 | ||
|   | b904c404bb | ||
|   | 9ca3516d39 | ||
|   | 58fa288158 | ||
|   | 38f87f38c2 | ||
|   | 42afe64eb3 | ||
|   | 2a09efbde3 | ||
|   | 7685bbbdf4 | ||
|   | da12c5512d | ||
|   | 6b7bed5376 | ||
|   | 30da7363a0 | ||
|   | 748f85b33f | ||
|   | 9190b12c2e | ||
|   | 6d1348bb3e | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 3e2823bd18 | ||
|   | 4b89c87336 | ||
|   | fc7438bcda | ||
|   | 44604ef0ee | ||
|   | 69c06f820e | ||
|   | dcc5fa9451 | ||
|   | 5bcfa0af15 | ||
|   | 748df3e75a | ||
|   | 43a6e9526e | ||
|   | 05d962c004 | ||
|   | daaf02865e | ||
|   | 947d230e20 | ||
|   | adb9923f11 | ||
|   | 28865821d5 | ||
|   | 34ee199967 | ||
|   | 1d5440541f | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 248aec6d41 | ||
|   | 63b5368640 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 15d83baed9 | ||
|   | 1afcddd49d | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 9b70c8a1d1 | ||
|   | 0c037083a9 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 5d13964200 | ||
|   | 4a697a1eb3 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 35c1f8a24b | ||
|   | f3cab378cc | ||
|   | 362bbc1e22 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 87cf90e892 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 0e30a8fd34 | ||
|   | 6ad19f9a74 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 41db66d6fc | ||
|   | c3897e2922 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 2e1212029e | ||
|   | 5b6559e084 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 32a3153566 | ||
|   | b6cf4057d0 | ||
|   | d5968313b3 | ||
|   | 7638e00caa | ||
|   | 25737614cf | ||
|   | ffe12feafa | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 71c101a0fa | ||
|   | a00477e510 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | c3b4b6e96c | ||
|   | ae8f210306 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 139b0f4870 | ||
|   | 8749583563 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 54fa28a305 | ||
|   | ca5ced95d7 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 5c018e302d | ||
|   | 716f5a4878 | ||
|   | 464c871e79 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 56a8596fe9 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 8ba0110b24 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 75ce232c9c | ||
|   | 602deafe0a | ||
|   | 07fab67bb1 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 6b21d0af38 | ||
|   | 9c99c74835 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 05c797f133 | ||
|   | 894f364785 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | b607828b9d | ||
|   | 32c87e29aa | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | ee8aa518e5 | ||
|   | aebce6444e | ||
|   | 3ee7537cc8 | ||
|   | 7091428842 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 6d79796597 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | fbf0bbef5c | ||
|   | 50bea20332 | ||
|   | 22f4401661 | ||
|   | 0e92f332da | ||
|   | 7921dc7e37 | ||
|   | 0b9f4aebc8 | ||
|   | 2143a67c8d | ||
|   | 3b5d81397c | ||
|   | af89d59508 | ||
|   | 74f7e9b4c9 | ||
|   | ddac78a1dd | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 0591ba2589 | ||
|   | f602540e53 | ||
|   | 05194dded6 | ||
|   | 957cba4743 | ||
|   | 2a41f5c60f | ||
|   | f6eab90d0b | ||
|   | f415c93d8b | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | cf8e97a71b | ||
|   | ac0c464e5b | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 4457e96f9b | ||
|   | ddb765f758 | ||
|   | cd80e17ce8 | ||
|   | edb77f865f | ||
|   | a2e3e4fced | ||
|   | c3431ff1af | ||
|   | 62ebac1d4f | ||
|   | 3f4bff91cd | ||
|   | fc00b7501c | ||
|   | 2ba3adef60 | ||
|   | fba0b33855 | ||
|   | f33ba7493c | ||
|   | 1a9f3e144e | ||
|   | 0732a00253 | ||
|   | 2f5ae09380 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 1d0a80e362 | ||
|   | 7e70887486 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 99e619ca77 | ||
|   | 875a5f3081 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 23cac43c89 | ||
|   | 6e44e3c729 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 8a2be493cb | ||
|   | b5a1f8aec4 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | d7b4cc8c6c | ||
|   | 318be60fa9 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 56cbe84675 | ||
|   | 91db8c2e5d | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | e02ca45688 | ||
|   | f864d67dbc | ||
|   | 863767bc9f | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | dca7968160 | ||
|   | 2fd96adf12 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | ec64c27225 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 0dd355a984 | ||
|   | 495f9835f2 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | eb70c9cef1 | ||
|   | 93c051e1a7 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | e86e48703c | ||
|   | 145a7fe255 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | ba555c5a34 | ||
|   | b2f5e6ceb7 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 5eb19f802b | ||
|   | 23131b83cc | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 2ec67be1e9 | ||
|   | e0807d0fb3 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 25c0384af3 | ||
|   | a10c5eb812 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 5cb28ee173 | ||
|   | b486d160a8 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | afd4517c53 | ||
|   | dc9461d2cc | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 433533050c | ||
|   | f9e45829b1 | ||
|   | d4e50f8263 | ||
|   | 6b04025154 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 17f8641ece | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 3780da9230 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 5f6130f3d0 | ||
|   | a5acb4cc84 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 27086258a6 | ||
|   | 83194711c3 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | d809bc6240 | ||
|   | 51a3d39536 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | c2a09a1e85 | ||
|   | 11ea30d1ed | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 8f916fde3c | ||
|   | 26aac40a50 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 9f2fbc07fa | ||
|   | 502cb1dd74 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | c92df2a45b | ||
|   | f0b304a0c6 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 9ad80e96c2 | ||
|   | 3e53b6f96f | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | d18325dea7 | ||
|   | 46c9ec665a | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | d77dda57c2 | ||
|   | 133e1b134b | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | bdf3fafbac | ||
|   | a8098ce577 | ||
|   | 807d903176 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 0c546d9a05 | ||
|   | 6939eda25d | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | be00cc356c | ||
|   | 5fd61e7460 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | a82ac381aa | ||
|   | a0500b170a | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 0bc7d51380 | ||
|   | eb86e00a79 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | d33d3cae34 | ||
|   | e410768f7f | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 421b7f81fd | ||
|   | 747f025819 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 66e0f69437 | ||
|   | 4b59c5aa07 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | f7dbcd1fca | ||
|   | 499d8aa343 | ||
|   | aeb7a24789 | ||
|   | 946562e2a5 | ||
|   | 558ec79281 | ||
|   | f113998db1 | ||
|   | f39724354c | ||
|   | db1dd2bf6a | ||
|   | 36dd674d93 | ||
|   | 55eca1c7b2 | ||
|   | d17795a9a9 | ||
|   | 68d59280d8 | ||
|   | f8afad537f | ||
|   | 468d82d9f7 | ||
|   | 54245b2520 | ||
|   | 1af49ff41d | ||
|   | a21d4daae0 | ||
|   | 7825d579b4 | ||
|   | 2e4b0128fa | ||
|   | a19da2b7c9 | ||
|   | 57e79dffb1 | ||
|   | 8c18ced1a7 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 8dd8253afb | ||
|   | 29370b8740 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 4501c4f5cd | ||
|   | 192b1a1bd1 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | abc64d7e19 | ||
|   | 6c47c82c78 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | edb86a96cc | ||
|   | 0f229274e6 | ||
|   | 78cfcf3206 | ||
|   | e41f3e4131 | ||
|   | 0170bdc737 | ||
|   | d38f0f35f9 | ||
|   | c1055478ef | ||
|   | 88ce7d5d82 | ||
|   | 7eec5856a3 | ||
|   | e357a9c813 | ||
|   | 967b2258b9 | ||
|   | f5c4a78fb1 | ||
|   | 7e2c6a3e62 | ||
|   | 89c473aac7 | ||
|   | c9efab145d | ||
|   | 89be8f9d56 | ||
|   | a5b0a78828 | ||
|   | 6be213707b | ||
|   | 0e55883f05 | ||
|   | 033c8f432d | ||
|   | dc9bb23ade | ||
|   | 629c25208d | ||
|   | bf6aa0132c | ||
|   | 4dfe51aa01 | ||
|   | e735c69371 | ||
|   | ae41d2f5c1 | ||
|   | dc00bab703 | ||
|   | d06fbfc7f3 | ||
|   | e09d83368c | ||
|   | 1ddcc7b3fc | ||
|   | db6c457d5c | ||
|   | 1e3b3f6a5e | ||
|   | 26c755f312 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 095dbdbf59 | ||
|   | f9a87273bb | ||
|   | b6dbad7d88 | ||
|   | 8400db5161 | ||
|   | 2e2f6ca4de | ||
|   | 04d063e759 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | e50171cdf4 | ||
|   | ffd79887c1 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 994023df1e | ||
|   | e8756d084b | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 919f7f5ae7 | ||
|   | f98f6ff9e0 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | b70ea3d72a | ||
|   | 6eba76bd26 | ||
|   | fee5f98406 | ||
|   | 551552f67f | ||
|   | 6cff923227 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 1399f55ed4 | ||
|   | 79fdc2ef78 | ||
|   | f4a12a2a3b | ||
|   | edf7bf23e3 | ||
|   | 1887a32ca2 | ||
|   | a1405af086 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | de487d56be | ||
|   | 5fd9819f5f | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | b86255479c | ||
|   | 67218b0d19 | ||
|   | cdad22386e | ||
|   | cb6a705473 | ||
|   | e0523db53d | ||
|   | c49bca76d7 | ||
|   | 3d598445e3 | ||
|   | 949c597508 | ||
|   | ca32702aa0 | ||
|   | 0ccc5d3faa | ||
|   | 4c8f4dcdfc | ||
|   | d64fa185db | ||
|   | cd33dc926f | ||
|   | fd63105282 | ||
|   | dda7fcf987 | ||
|   | b597a36454 | ||
|   | b2636aa4c1 | ||
|   | b3fe37dd3d | ||
|   | d62aeb54b9 | ||
|   | dab578a096 | ||
|   | 42ff8d51c0 | ||
|   | 68fe393de4 | ||
|   | 4493457cfa | ||
|   | 5b49d3629c | ||
|   | 244330f96e | ||
|   | 7f002b3158 | ||
|   | d3d3a58f6e | ||
|   | bec8bb64e1 | ||
|   | 580a711cb1 | ||
|   | 23de4dd79e | ||
|   | 21eb34fec7 | ||
|   | 4248a8dadd | ||
|   | 5ac0392c81 | ||
|   | 10e4f45ac0 | ||
|   | 52531187b6 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 91238492d9 | ||
|   | cd048ea1e4 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 72a1732d4f | ||
|   | 3c4d46ec33 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | ef8b444526 | ||
|   | cb5c20b678 | ||
|   | 9a076a7d97 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | b3bc9aa5a8 | ||
|   | ae0bd1f240 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 2f08be65dd | ||
|   | 1276f80f98 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | dc747fad0b | ||
|   | bbbf496e55 | ||
|   | 0be0639df2 | ||
|   | aa41235bb1 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 67e0819a58 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | c34cb47590 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 3bad978a1a | ||
|   | eb9a8113a3 | ||
|   | bceeafc8fd | ||
|   | 7ce64c3b69 | ||
|   | e567a01fec | ||
|   | 41ad317a6d | ||
|   | 9ca7b53525 | ||
|   | 63dc8d573e | ||
|   | 5d97bb6ee7 | ||
|   | 9d99e7dd5b | ||
|   | 1a8785d923 | ||
|   | b8ff60572a | ||
|   | e197f1da4f | ||
|   | 2d528c3c8d | ||
|   | dc20615b37 | ||
|   | 047ac39af8 | ||
|   | 4c1b8b2c6f | ||
|   | 861ed0de56 | ||
|   | 97864349cc | ||
|   | e8fd10468f | ||
|   | 332e9e8a34 | ||
|   | cf1a09c9a7 | ||
|   | 146884c135 | ||
|   | b875ca4ec9 | ||
|   | 9570205b8a | ||
|   | 947221b4fb | ||
|   | 0579065c4c | ||
|   | df27520950 | ||
|   | aacefe5192 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 62a7e09e0d | ||
|   | a6d0384463 | ||
|   | dc81749d44 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 11423e276a | ||
|   | 4ca664384d | ||
|   | 287ddc84da | ||
|   | 5c80a1463b | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 943166ff54 | ||
|   | ff142d955f | ||
|   | 8d2fbb7eb6 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | d91fcfedd7 | ||
|   | ffc4ad7fd3 | ||
|   | fe8f993a09 | ||
|   | 2e0424da1b | ||
|   | 4b24a4110d | ||
|   | d732f1fc51 | ||
|   | c0cc07ca93 | ||
|   | 32af1f92eb | ||
|   | d2e42fb3ee | ||
|   | 96f78dabcc | ||
|   | 7b58635b7a | ||
|   | a638b6d4f2 | ||
|   | 9291b82212 | ||
|   | c338ddedc1 | ||
|   | 02d809987a | ||
|   | 2779bfdf01 | ||
|   | 1cfebe3f24 | ||
|   | c08ed0777d | ||
|   | 7378b389fe | ||
|   | 68c7f58148 | ||
|   | 9e70dd7aea | ||
|   | 9afd1a7e2a | ||
|   | 67893bd836 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | c9d759856f | ||
|   | 52575a7a8c | ||
|   | cbd74dfa4b | ||
|   | cc1606c4f0 | ||
|   | 34a3d09c10 | ||
|   | 53b7ad097a | ||
|   | c06825e675 | ||
|   | 9913f90294 | ||
|   | 7c47f7c73b | ||
|   | 8cacec6c93 | ||
|   | 600279ff2b | ||
|   | 8b678034a2 | ||
|   | b846e12cee | ||
|   | c739918a1d | ||
|   | ca369ed8d1 | ||
|   | b3ebd57893 | ||
|   | b88fd4b669 | ||
|   | acf5d5e908 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | b04c6f55ab | ||
|   | 7aac904d3c | ||
|   | 77f2925eb3 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | a90bf53050 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | e1a47955c4 | ||
|   | 1c64281504 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 4f767a442f | ||
|   | d8196abb41 | ||
|   | efd18a5221 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | c13002a7cf | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 16297b41e4 | ||
|   | 9efee1f3fd | ||
|   | 97801c76d1 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | f0c98a8d8a | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 9a68dda690 | ||
|   | 9703f07095 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | e3348774d5 | ||
|   | 5b6ee8d932 | ||
|   | c226e12e98 | ||
|   | 02a2c19bf6 | ||
|   | 7d3e9bd163 | ||
|   | 5e68bddd6b | ||
|   | 1d3b96559f | ||
|   | 65350fb284 | ||
|   | 882dfc4741 | ||
|   | 83671bae11 | ||
|   | f38613bb8d | ||
|   | 43daa3c38f | ||
|   | f3982278e6 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | d214e31e38 | ||
|   | ce198b356f | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | aa3e354dd5 | ||
|   | cd50c3984e | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 7780bb0835 | ||
|   | 5e41163c09 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | e2dbf474d8 | ||
|   | 9bc2d17db3 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | f09e7dd6b3 | ||
|   | 171768b257 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 2ba75947e3 | ||
|   | 6ec8ea5fe1 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | d6d4099b08 | ||
|   | 7d20c7c120 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | a422c6c644 | ||
|   | 9737e2d4ed | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | a3d7a1a2ed | ||
|   | 2290b36a60 | ||
|   | 758db5b001 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 399f853aa9 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 9cd1c62ffa | ||
|   | e3d9a2c985 | ||
|   | 498f5148a1 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 8640390354 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 56e6944f92 | ||
|   | e47c2094dd | ||
|   | 1adda1a865 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 356396f6c3 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 5ef6847c83 | ||
|   | 155170e061 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 13685e4388 | ||
|   | 0be3deac04 | ||
|   | 3729e3401a | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | de5476b910 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | ba2542e0c2 | ||
|   | 6efab9994b | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 6984822651 | ||
|   | 7e1e44dc62 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 59b17408c6 | ||
|   | 4cc0f4f2f4 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | d0d7be2983 | ||
|   | f5c7691e7a | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | cbca7ba17a | ||
|   | e460e37927 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 782c77def0 | ||
|   | 3d3cecf34d | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | c67907f872 | ||
|   | 7f45922477 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 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 | 
							
								
								
									
										31
									
								
								.github/dependabot.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										31
									
								
								.github/dependabot.yml
									
									
									
									
										vendored
									
									
								
							| @@ -32,6 +32,18 @@ updates: | |||||||
|             - "🤖 Dependencies" |             - "🤖 Dependencies" | ||||||
|         schedule: |         schedule: | ||||||
|             interval: "daily" |             interval: "daily" | ||||||
|  |     -   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" |     -   package-ecosystem: "gomod" | ||||||
|         directory: "/pebble/" # Location of package manifests |         directory: "/pebble/" # Location of package manifests | ||||||
|         labels: |         labels: | ||||||
| @@ -56,6 +68,12 @@ updates: | |||||||
|             - "🤖 Dependencies" |             - "🤖 Dependencies" | ||||||
|         schedule: |         schedule: | ||||||
|             interval: "daily" |             interval: "daily" | ||||||
|  |     - package-ecosystem: "gomod" | ||||||
|  |       directory: "/minio/" # Location of package manifests | ||||||
|  |       labels: | ||||||
|  |           - "🤖 Dependencies" | ||||||
|  |       schedule: | ||||||
|  |           interval: "daily" | ||||||
|     -   package-ecosystem: "gomod" |     -   package-ecosystem: "gomod" | ||||||
|         directory: "/mongodb/" # Location of package manifests |         directory: "/mongodb/" # Location of package manifests | ||||||
|         labels: |         labels: | ||||||
| @@ -110,8 +128,21 @@ updates: | |||||||
|             - "🤖 Dependencies" |             - "🤖 Dependencies" | ||||||
|         schedule: |         schedule: | ||||||
|             interval: "daily" |             interval: "daily" | ||||||
|  |     -   package-ecosystem: "gomod" | ||||||
|         directory: "/mssql/" # Location of package manifests |         directory: "/mssql/" # Location of package manifests | ||||||
|         labels: |         labels: | ||||||
|             - "🤖 Dependencies" |             - "🤖 Dependencies" | ||||||
|         schedule: |         schedule: | ||||||
|             interval: "daily" |             interval: "daily" | ||||||
|  |     -   package-ecosystem: "gomod" | ||||||
|  |         directory: "/rueidis/" # Location of package manifests | ||||||
|  |         labels: | ||||||
|  |             - "🤖 Dependencies" | ||||||
|  |         schedule: | ||||||
|  |             interval: "daily" | ||||||
|  |     - package-ecosystem: "gomod" | ||||||
|  |       directory: "/scylladb/" # Location of package manifests | ||||||
|  |       labels: | ||||||
|  |           - "🤖 Dependencies" | ||||||
|  |       schedule: | ||||||
|  |           interval: "daily" | ||||||
							
								
								
									
										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. | ||||||
							
								
								
									
										67
									
								
								.github/release-drafter-couchbase.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										67
									
								
								.github/release-drafter-couchbase.yml
									
									
									
									
										vendored
									
									
								
							| @@ -4,40 +4,47 @@ tag-prefix: couchbase/v | |||||||
| include-paths: | include-paths: | ||||||
|   - couchbase |   - couchbase | ||||||
| categories: | categories: | ||||||
|   - title: '🚀 New' |     - title: '❗ Breaking Changes' | ||||||
|     labels: |       labels: | ||||||
|       - '✏️ Feature' |           - '❗ BreakingChange' | ||||||
|   - title: '🧹 Updates' |     - title: '🚀 New' | ||||||
|     labels: |       labels: | ||||||
|       - '🧹 Updates' |           - '✏️ Feature' | ||||||
|       - '🤖 Dependencies' |     - title: '🧹 Updates' | ||||||
|   - title: '🐛 Fixes' |       labels: | ||||||
|     labels: |           - '🧹 Updates' | ||||||
|       - '☢️ Bug' |           - '🤖 Dependencies' | ||||||
|   - title: '📚 Documentation' |     - title: '🐛 Fixes' | ||||||
|     labels: |       labels: | ||||||
|       - '📒 Documentation' |           - '☢️ Bug' | ||||||
|  |     - title: '📚 Documentation' | ||||||
|  |       labels: | ||||||
|  |           - '📒 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' | ||||||
|   minor: |             - '❗ BreakingChange' | ||||||
|     labels: |     minor: | ||||||
|       - 'minor' |         labels: | ||||||
|       - '✏️ Feature' |             - 'minor' | ||||||
|   patch: |             - '✏️ Feature' | ||||||
|     labels: |     patch: | ||||||
|       - 'patch' |         labels: | ||||||
|       - '📒 Documentation' |             - 'patch' | ||||||
|       - '☢️ Bug' |             - '📒 Documentation' | ||||||
|       - '🤖 Dependencies' |             - '☢️ Bug' | ||||||
|       - '🧹 Updates' |             - '🤖 Dependencies' | ||||||
|   default: patch |             - '🧹 Updates' | ||||||
|  |     default: patch | ||||||
| template: | | template: | | ||||||
|   $CHANGES |   $CHANGES | ||||||
|    |  | ||||||
|   **Full Changelog**: https://github.com/$OWNER/$REPOSITORY/compare/$PREVIOUS_TAG...couchbase/v$RESOLVED_VERSION |   **Full Changelog**: https://github.com/$OWNER/$REPOSITORY/compare/$PREVIOUS_TAG...couchbase/v$RESOLVED_VERSION | ||||||
|    |  | ||||||
|   Thank you $CONTRIBUTORS for making this update possible. |   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' | ||||||
|   | |||||||
							
								
								
									
										50
									
								
								.github/release-drafter-minio.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								.github/release-drafter-minio.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,50 @@ | |||||||
|  | name-template: 'Minio - v$RESOLVED_VERSION' | ||||||
|  | tag-template: 'minio/v$RESOLVED_VERSION' | ||||||
|  | tag-prefix: minio/v | ||||||
|  | include-paths: | ||||||
|  |   - minio | ||||||
|  | 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...minio/v$RESOLVED_VERSION | ||||||
|  |  | ||||||
|  |     Thank you $CONTRIBUTORS for making this update possible. | ||||||
							
								
								
									
										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' | ||||||
|   | |||||||
							
								
								
									
										65
									
								
								.github/release-drafter-pebble.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										65
									
								
								.github/release-drafter-pebble.yml
									
									
									
									
										vendored
									
									
								
							| @@ -4,37 +4,44 @@ tag-prefix: pebble/v | |||||||
| include-paths: | include-paths: | ||||||
|   - pebble |   - pebble | ||||||
| categories: | categories: | ||||||
|   - title: "🚀 New" |     - title: '❗ Breaking Changes' | ||||||
|     labels: |       labels: | ||||||
|       - "✏️ Feature" |           - '❗ BreakingChange' | ||||||
|   - title: "🧹 Updates" |     - title: '🚀 New' | ||||||
|     labels: |       labels: | ||||||
|       - "🧹 Updates" |           - '✏️ Feature' | ||||||
|       - "🤖 Dependencies" |     - title: '🧹 Updates' | ||||||
|   - title: "🐛 Fixes" |       labels: | ||||||
|     labels: |           - '🧹 Updates' | ||||||
|       - "☢️ Bug" |           - '🤖 Dependencies' | ||||||
|   - title: "📚 Documentation" |     - title: '🐛 Fixes' | ||||||
|     labels: |       labels: | ||||||
|       - "📒 Documentation" |           - '☢️ Bug' | ||||||
| change-template: "- $TITLE (#$NUMBER)" |     - title: '📚 Documentation' | ||||||
|  |       labels: | ||||||
|  |           - '📒 Documentation' | ||||||
|  | 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' | ||||||
|   minor: |             - '❗ BreakingChange' | ||||||
|     labels: |     minor: | ||||||
|       - "minor" |         labels: | ||||||
|       - "✏️ Feature" |             - 'minor' | ||||||
|   patch: |             - '✏️ Feature' | ||||||
|     labels: |     patch: | ||||||
|       - "patch" |         labels: | ||||||
|       - "📒 Documentation" |             - 'patch' | ||||||
|       - "☢️ Bug" |             - '📒 Documentation' | ||||||
|       - "🤖 Dependencies" |             - '☢️ Bug' | ||||||
|       - "🧹 Updates" |             - '🤖 Dependencies' | ||||||
|   default: patch |             - '🧹 Updates' | ||||||
|  |     default: patch | ||||||
| template: | | template: | | ||||||
|   $CHANGES |   $CHANGES | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										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' | ||||||
|   | |||||||
							
								
								
									
										50
									
								
								.github/release-drafter-rueidis.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								.github/release-drafter-rueidis.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,50 @@ | |||||||
|  | name-template: 'Rueidis - v$RESOLVED_VERSION' | ||||||
|  | tag-template: 'rueidis/v$RESOLVED_VERSION' | ||||||
|  | tag-prefix: rueidis/v | ||||||
|  | include-paths: | ||||||
|  |   - rueidis | ||||||
|  | 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...rueidis/v$RESOLVED_VERSION | ||||||
|  |  | ||||||
|  |     Thank you $CONTRIBUTORS for making this update possible. | ||||||
							
								
								
									
										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' | ||||||
|   | |||||||
							
								
								
									
										43
									
								
								.github/release-drafter-scylladb.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								.github/release-drafter-scylladb.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | |||||||
|  | name-template: 'ScyllaDb - v$RESOLVED_VERSION' | ||||||
|  | tag-template: 'scylladb/v$RESOLVED_VERSION' | ||||||
|  | tag-prefix: scylladb/v | ||||||
|  | include-paths: | ||||||
|  |   - scylladb | ||||||
|  | categories: | ||||||
|  |   - 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. | ||||||
|  | version-resolver: | ||||||
|  |   major: | ||||||
|  |     labels: | ||||||
|  |       - 'major' | ||||||
|  |   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...scylladb/v$RESOLVED_VERSION | ||||||
|  |    | ||||||
|  |   Thank you $CONTRIBUTORS for making this update possible. | ||||||
							
								
								
									
										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' | ||||||
|   | |||||||
							
								
								
									
										11
									
								
								redis/tests/gen-test-certs.sh → .github/scripts/gen-test-certs.sh
									
									
									
									
										vendored
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										11
									
								
								redis/tests/gen-test-certs.sh → .github/scripts/gen-test-certs.sh
									
									
									
									
										vendored
									
									
										
										
										Normal file → Executable file
									
								
							| @@ -6,7 +6,8 @@ | |||||||
| #   ./tls/redis.{crt,key}       A certificate with no key usage/policy restrictions. | #   ./tls/redis.{crt,key}       A certificate with no key usage/policy restrictions. | ||||||
| #   ./tls/client.{crt,key}      A certificate restricted for SSL client usage. | #   ./tls/client.{crt,key}      A certificate restricted for SSL client usage. | ||||||
| #   ./tls/server.{crt,key}      A certificate restricted for SSL server usage. | #   ./tls/server.{crt,key}      A certificate restricted for SSL server usage. | ||||||
| #   ./tls/redis.dh              DH Params file. | 
 | ||||||
|  | set -e | ||||||
| 
 | 
 | ||||||
| generate_cert() { | generate_cert() { | ||||||
|     local name=$1 |     local name=$1 | ||||||
| @@ -45,6 +46,8 @@ cat > ./tls/openssl.cnf <<_END_ | |||||||
| [ server_cert ] | [ server_cert ] | ||||||
| keyUsage = digitalSignature, keyEncipherment | keyUsage = digitalSignature, keyEncipherment | ||||||
| nsCertType = server | nsCertType = server | ||||||
|  | subjectAltName = DNS:localhost" | ||||||
|  | 
 | ||||||
| [ client_cert ] | [ client_cert ] | ||||||
| keyUsage = digitalSignature, keyEncipherment | keyUsage = digitalSignature, keyEncipherment | ||||||
| nsCertType = client | nsCertType = client | ||||||
| @@ -52,6 +55,8 @@ _END_ | |||||||
| 
 | 
 | ||||||
| generate_cert server "Server-only" "-extfile ./tls/openssl.cnf -extensions server_cert" | generate_cert server "Server-only" "-extfile ./tls/openssl.cnf -extensions server_cert" | ||||||
| generate_cert client "Client-only" "-extfile ./tls/openssl.cnf -extensions client_cert" | generate_cert client "Client-only" "-extfile ./tls/openssl.cnf -extensions client_cert" | ||||||
| generate_cert redis "Generic-cert" | generate_cert redis "localhost" "-extfile ./tls/openssl.cnf -extensions server_cert" | ||||||
| 
 | 
 | ||||||
| [ -f ./tls/redis.dh ] || openssl dhparam -out ./tls/redis.dh 2048 | # List generated certs | ||||||
|  | ls -la ./tls | ||||||
|  | echo "$PWD" | ||||||
							
								
								
									
										84
									
								
								.github/scripts/sync_docs.sh
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										84
									
								
								.github/scripts/sync_docs.sh
									
									
									
									
										vendored
									
									
										Executable file
									
								
							| @@ -0,0 +1,84 @@ | |||||||
|  | #!/usr/bin/env bash | ||||||
|  | set -e | ||||||
|  |  | ||||||
|  | # 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 | ||||||
							
								
								
									
										175
									
								
								.github/workflows/benchmark.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										175
									
								
								.github/workflows/benchmark.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,175 @@ | |||||||
|  | on: | ||||||
|  |   push: | ||||||
|  |     branches: | ||||||
|  |       - master | ||||||
|  |       - main | ||||||
|  |     paths: | ||||||
|  |       - "**" | ||||||
|  |       - "!**.md" | ||||||
|  |   pull_request: | ||||||
|  |     paths: | ||||||
|  |       - "**" | ||||||
|  |       - "!**.md" | ||||||
|  |  | ||||||
|  | permissions: | ||||||
|  |   deployments: write | ||||||
|  |   contents: write | ||||||
|  |  | ||||||
|  | name: Benchmark | ||||||
|  | jobs: | ||||||
|  |   Compare: | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     services: | ||||||
|  |       arangodb: | ||||||
|  |         image: 'arangodb:latest' | ||||||
|  |         env: | ||||||
|  |           ARANGO_NO_AUTH: 1 | ||||||
|  |         ports: | ||||||
|  |           - '8529:8529' | ||||||
|  |       dynamodb: | ||||||
|  |         image: 'amazon/dynamodb-local:latest' | ||||||
|  |         ports: | ||||||
|  |           - '8000:8000' | ||||||
|  |       memcached: | ||||||
|  |         image: 'memcached:latest' | ||||||
|  |         ports: | ||||||
|  |           - '11211:11211' | ||||||
|  |       mongo: | ||||||
|  |         image: 'mongo:latest' | ||||||
|  |         ports: | ||||||
|  |           - '27017:27017' | ||||||
|  |       mssql: | ||||||
|  |         image: 'mcmoe/mssqldocker:latest' | ||||||
|  |         ports: | ||||||
|  |           - '1433:1433' | ||||||
|  |         env: | ||||||
|  |           ACCEPT_EULA: Y | ||||||
|  |           SA_PASSWORD: MsSql!1234 | ||||||
|  |           MSSQL_DB: master | ||||||
|  |           MSSQL_USER: sa | ||||||
|  |           MSSQL_PASSWORD: MsSql!1234 | ||||||
|  |         options: >- | ||||||
|  |           --health-cmd "/opt/mssql-tools/bin/sqlcmd -U sa -P $SA_PASSWORD -Q 'select 1' -b -o /dev/null" | ||||||
|  |           --health-interval 1s | ||||||
|  |           --health-timeout 30s | ||||||
|  |           --health-start-period 10s | ||||||
|  |           --health-retries 20 | ||||||
|  |       mysql: | ||||||
|  |         image: 'mysql:latest' | ||||||
|  |         env: | ||||||
|  |           MYSQL_DATABASE: fiber | ||||||
|  |           MYSQL_USER: username | ||||||
|  |           MYSQL_PASSWORD: password | ||||||
|  |           MYSQL_ROOT_PASSWORD: password | ||||||
|  |         ports: | ||||||
|  |           - '3306:3306' | ||||||
|  |         options: >- | ||||||
|  |           --health-cmd "mysqladmin ping" --health-interval 10s --health-timeout | ||||||
|  |           5s --health-retries 5 | ||||||
|  |       postgres: | ||||||
|  |         image: 'postgres:latest' | ||||||
|  |         ports: | ||||||
|  |           - '5432:5432' | ||||||
|  |         env: | ||||||
|  |           POSTGRES_DB: fiber | ||||||
|  |           POSTGRES_USER: username | ||||||
|  |           POSTGRES_PASSWORD: "pass#w%rd" | ||||||
|  |         options: >- | ||||||
|  |           --health-cmd pg_isready --health-interval 10s --health-timeout 5s | ||||||
|  |           --health-retries 5 | ||||||
|  |     steps: | ||||||
|  |       - name: Fetch Repository | ||||||
|  |         uses: actions/checkout@v4 | ||||||
|  |  | ||||||
|  |       - name: Install Go | ||||||
|  |         uses: actions/setup-go@v4 | ||||||
|  |         with: | ||||||
|  |           # NOTE: Keep this in sync with the version from go.mod | ||||||
|  |           go-version: "1.20.x" | ||||||
|  |  | ||||||
|  |       - name: Install Azurite | ||||||
|  |         run: | | ||||||
|  |           docker run -d -p 10000:10000 mcr.microsoft.com/azure-storage/azurite azurite-blob --blobHost 0.0.0.0 --blobPort 10000 | ||||||
|  |  | ||||||
|  |       - name: Install Coherence | ||||||
|  |         run: | | ||||||
|  |           docker run -d -p 1408:1408 -p 30000:30000 ghcr.io/oracle/coherence-ce:22.06.5 | ||||||
|  |           sleep 30 | ||||||
|  |  | ||||||
|  |       - 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 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 MinIO | ||||||
|  |         run: | | ||||||
|  |           docker run -d --restart always -p 9000:9000 --name storage-minio -e MINIO_ROOT_USER='minio-user' -e MINIO_ROOT_PASSWORD='minio-password' minio/minio server /data | ||||||
|  |  | ||||||
|  |       - name: Install ScyllaDb | ||||||
|  |         run: | | ||||||
|  |           docker run --name scylladb -p 9042:9042 -p 19042:19042 -p 9160:9160 -p 7000:7000 -p 7001:7001 -p 7199:7199 -p 9180:9180 -d scylladb/scylla:latest --broadcast-address 127.0.0.1 --listen-address 0.0.0.0 --broadcast-rpc-address 127.0.0.1 | ||||||
|  |           sleep 15 # Wait for ScyllaDb to initialize | ||||||
|  |  | ||||||
|  |       - name: Setup Redis | ||||||
|  |         uses: shogo82148/actions-setup-redis@v1 | ||||||
|  |         with: | ||||||
|  |           redis-version: '7.x' | ||||||
|  |           auto-start: 'false' | ||||||
|  |  | ||||||
|  |       - name: Run Redis | ||||||
|  |         run: | | ||||||
|  |           redis-server --port 6379 & | ||||||
|  |  | ||||||
|  |       - name: Run Benchmarks | ||||||
|  |         run: | | ||||||
|  |           set -o pipefail | ||||||
|  |           for d in */ ; do | ||||||
|  |             [[ $d == "tls/" ]] && continue | ||||||
|  |  | ||||||
|  |             cd "$d" | ||||||
|  |             go test ./... -benchmem -run=^$ -bench . | tee -a ../output.txt | ||||||
|  |             cd .. | ||||||
|  |           done | ||||||
|  |         shell: bash | ||||||
|  |         env: | ||||||
|  |           MSSQL_DATABASE: master | ||||||
|  |           MSSQL_USERNAME: sa | ||||||
|  |           MSSQL_PASSWORD: MsSql!1234 | ||||||
|  |           MYSQL_USERNAME: username | ||||||
|  |           MYSQL_PASSWORD: password | ||||||
|  |           MYSQL_DATABASE: fiber | ||||||
|  |           POSTGRES_DATABASE: fiber | ||||||
|  |           POSTGRES_USERNAME: username | ||||||
|  |           POSTGRES_PASSWORD: "pass#w%rd" | ||||||
|  |  | ||||||
|  |       - name: Get Previous Benchmark Results | ||||||
|  |         uses: actions/cache@v3 | ||||||
|  |         with: | ||||||
|  |           path: ./cache | ||||||
|  |           key: ${{ runner.os }}-benchmark | ||||||
|  |  | ||||||
|  |       - name: Save Benchmark Results | ||||||
|  |         uses: benchmark-action/github-action-benchmark@v1.18.0 | ||||||
|  |         with: | ||||||
|  |           tool: "go" | ||||||
|  |           output-file-path: output.txt | ||||||
|  |           github-token: ${{ secrets.GITHUB_TOKEN }} | ||||||
|  |           benchmark-data-dir-path: "benchmarks" | ||||||
|  |           alert-threshold: "300%" | ||||||
|  |           fail-on-alert: true | ||||||
|  |           comment-on-alert: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }} | ||||||
|  |           #summary-always: ${{ github.event_name != 'push' && github.event_name != 'workflow_dispatch' }} | ||||||
|  |           auto-push: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }} | ||||||
|  |           save-data-file: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }} | ||||||
							
								
								
									
										2
									
								
								.github/workflows/codeql-analysis.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/codeql-analysis.yml
									
									
									
									
										vendored
									
									
								
							| @@ -16,7 +16,7 @@ jobs: | |||||||
|  |  | ||||||
|     steps: |     steps: | ||||||
|     - name: Checkout repository |     - name: Checkout repository | ||||||
|       uses: actions/checkout@v3 |       uses: actions/checkout@v4 | ||||||
|       with: |       with: | ||||||
|         # We must fetch at least the immediate parents so that if this is |         # We must fetch at least the immediate parents so that if this is | ||||||
|         # a pull request then we can checkout the head. |         # a pull request then we can checkout the head. | ||||||
|   | |||||||
							
								
								
									
										45
									
								
								.github/workflows/golangci-lint.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										45
									
								
								.github/workflows/golangci-lint.yml
									
									
									
									
										vendored
									
									
								
							| @@ -1,4 +1,4 @@ | |||||||
| name: Golangci Lint Check | name: Golangci-Lint Check | ||||||
|  |  | ||||||
| on: | on: | ||||||
|   push: |   push: | ||||||
| @@ -20,12 +20,49 @@ on: | |||||||
|       - ".github/dependabot.yml" |       - ".github/dependabot.yml" | ||||||
|  |  | ||||||
| jobs: | jobs: | ||||||
|   golangci-lint: |   generate-matrix: | ||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|  |     outputs: | ||||||
|  |       matrix: ${{ steps.set-matrix.outputs.matrix }} | ||||||
|     steps: |     steps: | ||||||
|       - name: Fetch Repository |       - name: Fetch Repository | ||||||
|         uses: actions/checkout@v3 |         uses: actions/checkout@v4 | ||||||
|  |         with: | ||||||
|  |           fetch-depth: 0 | ||||||
|  |       - id: set-matrix | ||||||
|  |         run: | | ||||||
|  |           # Determine the base and head commits for diff based on the event type | ||||||
|  |           BASE_SHA="${{ github.event.pull_request.base.sha || github.event.before }}" | ||||||
|  |           HEAD_SHA="${{ github.event.pull_request.head.sha || github.event.after }}" | ||||||
|  |  | ||||||
|  |           # Extract directories from changed files, only include those with go.mod files | ||||||
|  |           GO_MOD_DIRECTORIES=() | ||||||
|  |           FILES=$(git diff --name-only $BASE_SHA $HEAD_SHA | grep -vE '/\.') | ||||||
|  |           DIRECTORIES=$(echo "$FILES" | xargs -L1 dirname | sort -u) | ||||||
|  |  | ||||||
|  |           for dir in $DIRECTORIES; do | ||||||
|  |             if [[ -f "$dir/go.mod" ]]; then | ||||||
|  |               GO_MOD_DIRECTORIES+=("$dir") | ||||||
|  |             fi | ||||||
|  |           done | ||||||
|  |  | ||||||
|  |           # Export the JSON array | ||||||
|  |           JSON_ARRAY=$(printf '%s\n' "${GO_MOD_DIRECTORIES[@]}" | jq -R -s -c 'split("\n")[:-1]') | ||||||
|  |           echo "matrix=${JSON_ARRAY}" >> $GITHUB_OUTPUT | ||||||
|  |  | ||||||
|  |   lint: | ||||||
|  |     needs: generate-matrix | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     strategy: | ||||||
|  |       matrix: | ||||||
|  |         modules: ${{fromJson(needs.generate-matrix.outputs.matrix)}} | ||||||
|  |     steps: | ||||||
|  |       - name: Fetch Repository | ||||||
|  |         uses: actions/checkout@v4 | ||||||
|       - name: Run golangci-lint |       - name: Run golangci-lint | ||||||
|         uses: reviewdog/action-golangci-lint@v2 |         uses: reviewdog/action-golangci-lint@v2 | ||||||
|         with: |         with: | ||||||
|           golangci_lint_flags: "--tests=false" |           golangci_lint_flags: "--tests=false --timeout=5m" | ||||||
|  |           workdir: ${{ matrix.modules }} | ||||||
|  |           fail_on_error: true | ||||||
|  |           filter_mode: nofilter | ||||||
|   | |||||||
							
								
								
									
										104
									
								
								.github/workflows/gosec.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										104
									
								
								.github/workflows/gosec.yml
									
									
									
									
										vendored
									
									
								
							| @@ -20,91 +20,45 @@ on: | |||||||
|       - ".github/dependabot.yml" |       - ".github/dependabot.yml" | ||||||
|  |  | ||||||
| jobs: | jobs: | ||||||
|  |   detect-changes: | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     outputs: | ||||||
|  |       matrix: ${{ steps.changed-files.outputs.all_changed_files }} | ||||||
|  |     steps: | ||||||
|  |       - uses: actions/checkout@v4 | ||||||
|  |         with: | ||||||
|  |           fetch-depth: 0 | ||||||
|  |       - name: Changed Files | ||||||
|  |         uses: tj-actions/changed-files@v40 | ||||||
|  |         id: changed-files | ||||||
|  |         with: | ||||||
|  |           files_ignore: | | ||||||
|  |             .github/** | ||||||
|  |             **.md | ||||||
|  |           json: true | ||||||
|  |           escape_json: false | ||||||
|  |           dir_names: true | ||||||
|  |           dir_names_exclude_current_dir: true | ||||||
|  |  | ||||||
|   gosec-scan: |   gosec-scan: | ||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|  |     needs: detect-changes | ||||||
|     env: |     env: | ||||||
|       GO111MODULE: on |       GO111MODULE: on | ||||||
|  |     strategy: | ||||||
|  |       matrix: | ||||||
|  |         modules: ${{ fromJSON(needs.detect-changes.outputs.matrix) }} | ||||||
|     steps: |     steps: | ||||||
|       - name: Fetch Repository |       - name: Fetch Repository | ||||||
|         uses: actions/checkout@v3 |         uses: actions/checkout@v4 | ||||||
|       - name: Install Go |       - name: Install Go | ||||||
|         uses: actions/setup-go@v4 |         uses: actions/setup-go@v4 | ||||||
|         with: |         with: | ||||||
|           go-version: '^1.18.x' |           go-version: '^1.19.x' | ||||||
|           check-latest: true |           check-latest: true | ||||||
|           cache: false |           cache: false | ||||||
|       - name: Install Gosec |       - name: Install gosec | ||||||
|         run: go install github.com/securego/gosec/v2/cmd/gosec@latest |         run: go install github.com/securego/gosec/v2/cmd/gosec@latest | ||||||
|       - name: Run Gosec (root) |       - name: Run gosec | ||||||
|         working-directory: . |         working-directory: ${{ matrix.modules }} | ||||||
|         run: | |  | ||||||
|           gosec -exclude-dir=arangodb -exclude-dir=badger -exclude-dir=couchbase -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 -exclude-dir=pebble ./.... |  | ||||||
|         # ----- |  | ||||||
|       - name: Run Gosec (arangodb) |  | ||||||
|         working-directory: ./arangodb |  | ||||||
|         run: gosec ./... |         run: gosec ./... | ||||||
|         # ----- |  | ||||||
|       - name: Run Gosec (badger) |  | ||||||
|         working-directory: ./badger |  | ||||||
|         run: gosec ./... |  | ||||||
|         # ----- |  | ||||||
|       - name: Run Gosec (couchbase) |  | ||||||
|         working-directory: ./couchbase |  | ||||||
|         run: gosec ./... |  | ||||||
|         # ----- |  | ||||||
|       - name: Run Gosec (dynamodb) |  | ||||||
|         working-directory: ./dynamodb |  | ||||||
|         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 ./... |  | ||||||
|         # ----- |  | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								.github/workflows/govulncheck.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/govulncheck.yml
									
									
									
									
										vendored
									
									
								
							| @@ -26,7 +26,7 @@ jobs: | |||||||
|       GO111MODULE: on |       GO111MODULE: on | ||||||
|     steps: |     steps: | ||||||
|     - name: Fetch Repository |     - name: Fetch Repository | ||||||
|       uses: actions/checkout@v3 |       uses: actions/checkout@v4 | ||||||
|     - name: Install Go |     - name: Install Go | ||||||
|       uses: actions/setup-go@v4 |       uses: actions/setup-go@v4 | ||||||
|       with: |       with: | ||||||
|   | |||||||
							
								
								
									
										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-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-memory.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								.github/workflows/release-drafter-memory.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | |||||||
|  | name: Release Drafter Memory | ||||||
|  | on: | ||||||
|  |     push: | ||||||
|  |         # branches to consider in the event; optional, defaults to all | ||||||
|  |         branches: | ||||||
|  |             - master | ||||||
|  |             - main | ||||||
|  |         paths: | ||||||
|  |             - 'memory/**' | ||||||
|  | jobs: | ||||||
|  |     draft_release_memcache: | ||||||
|  |         runs-on: ubuntu-latest | ||||||
|  |         timeout-minutes: 30 | ||||||
|  |         steps: | ||||||
|  |             -   uses: release-drafter/release-drafter@v5 | ||||||
|  |                 with: | ||||||
|  |                     config-name: release-drafter-memory.yml | ||||||
|  |                 env: | ||||||
|  |                     GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||||
							
								
								
									
										19
									
								
								.github/workflows/release-drafter-minio.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								.github/workflows/release-drafter-minio.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | |||||||
|  | name: Release Drafter Minio | ||||||
|  | on: | ||||||
|  |     push: | ||||||
|  |         # branches to consider in the event; optional, defaults to all | ||||||
|  |         branches: | ||||||
|  |             - master | ||||||
|  |             - main | ||||||
|  |         paths: | ||||||
|  |             - 'minio/**' | ||||||
|  | jobs: | ||||||
|  |     draft_release_minio: | ||||||
|  |         runs-on: ubuntu-latest | ||||||
|  |         timeout-minutes: 30 | ||||||
|  |         steps: | ||||||
|  |             -   uses: release-drafter/release-drafter@v5 | ||||||
|  |                 with: | ||||||
|  |                     config-name: release-drafter-minio.yml | ||||||
|  |                 env: | ||||||
|  |                     GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||||
							
								
								
									
										19
									
								
								.github/workflows/release-drafter-rueidis.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								.github/workflows/release-drafter-rueidis.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | |||||||
|  | name: Release Drafter Rueidis | ||||||
|  | on: | ||||||
|  |     push: | ||||||
|  |         # branches to consider in the event; optional, defaults to all | ||||||
|  |         branches: | ||||||
|  |             - master | ||||||
|  |             - main | ||||||
|  |         paths: | ||||||
|  |             - 'rueidis/**' | ||||||
|  | jobs: | ||||||
|  |     draft_release_rueidis: | ||||||
|  |         runs-on: ubuntu-latest | ||||||
|  |         timeout-minutes: 30 | ||||||
|  |         steps: | ||||||
|  |             -   uses: release-drafter/release-drafter@v5 | ||||||
|  |                 with: | ||||||
|  |                     config-name: release-drafter-rueidis.yml | ||||||
|  |                 env: | ||||||
|  |                     GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||||
							
								
								
									
										19
									
								
								.github/workflows/release-drafter-scylladb.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								.github/workflows/release-drafter-scylladb.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | |||||||
|  | name: Release Drafter ScyllaDb | ||||||
|  | on: | ||||||
|  |   push: | ||||||
|  |     # branches to consider in the event; optional, defaults to all | ||||||
|  |     branches: | ||||||
|  |       - master | ||||||
|  |       - main | ||||||
|  |     paths: | ||||||
|  |       - 'scylladb/**' | ||||||
|  | jobs: | ||||||
|  |   draft_release_scylladb: | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     timeout-minutes: 30 | ||||||
|  |     steps: | ||||||
|  |       -   uses: release-drafter/release-drafter@v5 | ||||||
|  |           with: | ||||||
|  |             config-name: release-drafter-scylladb.yml | ||||||
|  |           env: | ||||||
|  |             GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||||
							
								
								
									
										0
									
								
								.github/workflows/security.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										0
									
								
								.github/workflows/security.yml
									
									
									
									
										vendored
									
									
								
							
							
								
								
									
										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@v4 | ||||||
|  |               with: | ||||||
|  |                   ref: ${{ github.event.pull_request.head.sha }} | ||||||
|  |                   fetch-depth: 2 | ||||||
|  |  | ||||||
|  |             - name: Setup Node.js environment | ||||||
|  |               uses: actions/setup-node@v4 | ||||||
|  |               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 }} | ||||||
							
								
								
									
										5
									
								
								.github/workflows/test-arangodb.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								.github/workflows/test-arangodb.yml
									
									
									
									
										vendored
									
									
								
							| @@ -22,13 +22,12 @@ jobs: | |||||||
|         strategy: |         strategy: | ||||||
|             matrix: |             matrix: | ||||||
|                 go-version: |                 go-version: | ||||||
|                     - 1.17.x |  | ||||||
|                     - 1.18.x |  | ||||||
|                     - 1.19.x |                     - 1.19.x | ||||||
|                     - 1.20.x |                     - 1.20.x | ||||||
|  |                     - 1.21.x | ||||||
|         steps: |         steps: | ||||||
|             -   name: Fetch Repository |             -   name: Fetch Repository | ||||||
|                 uses: actions/checkout@v3 |                 uses: actions/checkout@v4 | ||||||
|             -   name: Install Go |             -   name: Install Go | ||||||
|                 uses: actions/setup-go@v4 |                 uses: actions/setup-go@v4 | ||||||
|                 with: |                 with: | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								.github/workflows/test-azureblob.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/workflows/test-azureblob.yml
									
									
									
									
										vendored
									
									
								
							| @@ -15,15 +15,15 @@ jobs: | |||||||
|         strategy: |         strategy: | ||||||
|             matrix: |             matrix: | ||||||
|                 go-version: |                 go-version: | ||||||
|                     - 1.18.x |  | ||||||
|                     - 1.19.x |                     - 1.19.x | ||||||
|                     - 1.20.x |                     - 1.20.x | ||||||
|  |                     - 1.21.x | ||||||
|         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: Fetch Repository |         -   name: Fetch Repository | ||||||
|             uses: actions/checkout@v3 |             uses: actions/checkout@v4 | ||||||
|         -   name: Install Go |         -   name: Install Go | ||||||
|             uses: actions/setup-go@v4 |             uses: actions/setup-go@v4 | ||||||
|             with: |             with: | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								.github/workflows/test-badger.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/workflows/test-badger.yml
									
									
									
									
										vendored
									
									
								
							| @@ -14,13 +14,13 @@ jobs: | |||||||
|         strategy: |         strategy: | ||||||
|             matrix: |             matrix: | ||||||
|                 go-version: |                 go-version: | ||||||
|                     - 1.18.x |  | ||||||
|                     - 1.19.x |                     - 1.19.x | ||||||
|                     - 1.20.x |                     - 1.20.x | ||||||
|  |                     - 1.21.x | ||||||
|         runs-on: ubuntu-latest |         runs-on: ubuntu-latest | ||||||
|         steps: |         steps: | ||||||
|             -   name: Fetch Repository |             -   name: Fetch Repository | ||||||
|                 uses: actions/checkout@v3 |                 uses: actions/checkout@v4 | ||||||
|             -   name: Install Go |             -   name: Install Go | ||||||
|                 uses: actions/setup-go@v4 |                 uses: actions/setup-go@v4 | ||||||
|                 with: |                 with: | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								.github/workflows/test-bbolt.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/workflows/test-bbolt.yml
									
									
									
									
										vendored
									
									
								
							| @@ -15,12 +15,12 @@ jobs: | |||||||
|         strategy: |         strategy: | ||||||
|             matrix: |             matrix: | ||||||
|                 go-version: |                 go-version: | ||||||
|                     - 1.18.x |  | ||||||
|                     - 1.19.x |                     - 1.19.x | ||||||
|                     - 1.20.x |                     - 1.20.x | ||||||
|  |                     - 1.21.x | ||||||
|         steps: |         steps: | ||||||
|             -   name: Fetch Repository |             -   name: Fetch Repository | ||||||
|                 uses: actions/checkout@v3 |                 uses: actions/checkout@v4 | ||||||
|             -   name: Install Go |             -   name: Install Go | ||||||
|                 uses: actions/setup-go@v4 |                 uses: actions/setup-go@v4 | ||||||
|                 with: |                 with: | ||||||
|   | |||||||
							
								
								
									
										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@v4 | ||||||
|  |       - 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 | ||||||
							
								
								
									
										3
									
								
								.github/workflows/test-couchbase.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.github/workflows/test-couchbase.yml
									
									
									
									
										vendored
									
									
								
							| @@ -17,9 +17,10 @@ jobs: | |||||||
|         go-version: |         go-version: | ||||||
|           - 1.19.x |           - 1.19.x | ||||||
|           - 1.20.x |           - 1.20.x | ||||||
|  |           - 1.21.x | ||||||
|     steps: |     steps: | ||||||
|       - name: Fetch Repository |       - name: Fetch Repository | ||||||
|         uses: actions/checkout@v3 |         uses: actions/checkout@v4 | ||||||
|       - name: Install couchbase |       - name: Install couchbase | ||||||
|         run: | |         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 |           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 | ||||||
|   | |||||||
							
								
								
									
										5
									
								
								.github/workflows/test-dynamodb.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								.github/workflows/test-dynamodb.yml
									
									
									
									
										vendored
									
									
								
							| @@ -20,13 +20,12 @@ jobs: | |||||||
|         strategy: |         strategy: | ||||||
|             matrix: |             matrix: | ||||||
|                 go-version: |                 go-version: | ||||||
|                     - 1.17.x |  | ||||||
|                     - 1.18.x |  | ||||||
|                     - 1.19.x |                     - 1.19.x | ||||||
|                     - 1.20.x |                     - 1.20.x | ||||||
|  |                     - 1.21.x | ||||||
|         steps: |         steps: | ||||||
|             -   name: Fetch Repository |             -   name: Fetch Repository | ||||||
|                 uses: actions/checkout@v3 |                 uses: actions/checkout@v4 | ||||||
|             -   name: Install Go |             -   name: Install Go | ||||||
|                 uses: actions/setup-go@v4 |                 uses: actions/setup-go@v4 | ||||||
|                 with: |                 with: | ||||||
|   | |||||||
							
								
								
									
										38
									
								
								.github/workflows/test-etcd.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								.github/workflows/test-etcd.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,38 @@ | |||||||
|  | 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 | ||||||
|  |                     - 1.21.x | ||||||
|  |         steps: | ||||||
|  |             -   name: Fetch Repository | ||||||
|  |                 uses: actions/checkout@v4 | ||||||
|  |             -   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 | ||||||
							
								
								
									
										5
									
								
								.github/workflows/test-memcache.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								.github/workflows/test-memcache.yml
									
									
									
									
										vendored
									
									
								
							| @@ -20,13 +20,12 @@ jobs: | |||||||
|         strategy: |         strategy: | ||||||
|             matrix: |             matrix: | ||||||
|                 go-version: |                 go-version: | ||||||
|                     - 1.17.x |  | ||||||
|                     - 1.18.x |  | ||||||
|                     - 1.19.x |                     - 1.19.x | ||||||
|                     - 1.20.x |                     - 1.20.x | ||||||
|  |                     - 1.21.x | ||||||
|         steps: |         steps: | ||||||
|             -   name: Fetch Repository |             -   name: Fetch Repository | ||||||
|                 uses: actions/checkout@v3 |                 uses: actions/checkout@v4 | ||||||
|             -   name: Install Go |             -   name: Install Go | ||||||
|                 uses: actions/setup-go@v4 |                 uses: actions/setup-go@v4 | ||||||
|                 with: |                 with: | ||||||
|   | |||||||
| @@ -14,14 +14,13 @@ jobs: | |||||||
|         strategy: |         strategy: | ||||||
|             matrix: |             matrix: | ||||||
|                 go-version: |                 go-version: | ||||||
|                     - 1.17.x |  | ||||||
|                     - 1.18.x |  | ||||||
|                     - 1.19.x |                     - 1.19.x | ||||||
|                     - 1.20.x |                     - 1.20.x | ||||||
|  |                     - 1.21.x | ||||||
|         runs-on: ubuntu-latest |         runs-on: ubuntu-latest | ||||||
|         steps: |         steps: | ||||||
|             -   name: Fetch Repository |             -   name: Fetch Repository | ||||||
|                 uses: actions/checkout@v3 |                 uses: actions/checkout@v4 | ||||||
|             -   name: Install Go |             -   name: Install Go | ||||||
|                 uses: actions/setup-go@v4 |                 uses: actions/setup-go@v4 | ||||||
|                 with: |                 with: | ||||||
							
								
								
									
										33
									
								
								.github/workflows/test-minio.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								.github/workflows/test-minio.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | |||||||
|  | on: | ||||||
|  |     push: | ||||||
|  |         branches: | ||||||
|  |             - master | ||||||
|  |             - main | ||||||
|  |         paths: | ||||||
|  |             - 'minio/**' | ||||||
|  |     pull_request: | ||||||
|  |         paths: | ||||||
|  |             - 'minio/**' | ||||||
|  | name: "Tests Minio" | ||||||
|  | jobs: | ||||||
|  |     Tests: | ||||||
|  |         runs-on: ubuntu-latest | ||||||
|  |         strategy: | ||||||
|  |             matrix: | ||||||
|  |                 go-version: | ||||||
|  |                     - 1.19.x | ||||||
|  |                     - 1.20.x | ||||||
|  |                     - 1.21.x | ||||||
|  |         steps: | ||||||
|  |             -   name: Install MinIO | ||||||
|  |                 run: | | ||||||
|  |                     docker run -d --restart always -p 9000:9000 --name storage-minio -e MINIO_ROOT_USER='minio-user' -e MINIO_ROOT_PASSWORD='minio-password' minio/minio server /data | ||||||
|  |  | ||||||
|  |             -   name: Fetch Repository | ||||||
|  |                 uses: actions/checkout@v4 | ||||||
|  |             -   name: Install Go | ||||||
|  |                 uses: actions/setup-go@v4 | ||||||
|  |                 with: | ||||||
|  |                     go-version: '${{ matrix.go-version }}' | ||||||
|  |             -   name: Run Test | ||||||
|  |                 run: cd ./minio && go test ./... -v -race | ||||||
							
								
								
									
										5
									
								
								.github/workflows/test-mongodb.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								.github/workflows/test-mongodb.yml
									
									
									
									
										vendored
									
									
								
							| @@ -20,13 +20,12 @@ jobs: | |||||||
|         strategy: |         strategy: | ||||||
|             matrix: |             matrix: | ||||||
|                 go-version: |                 go-version: | ||||||
|                     - 1.17.x |  | ||||||
|                     - 1.18.x |  | ||||||
|                     - 1.19.x |                     - 1.19.x | ||||||
|                     - 1.20.x |                     - 1.20.x | ||||||
|  |                     - 1.21.x | ||||||
|         steps: |         steps: | ||||||
|             -   name: Fetch Repository |             -   name: Fetch Repository | ||||||
|                 uses: actions/checkout@v3 |                 uses: actions/checkout@v4 | ||||||
|             -   name: Install Go |             -   name: Install Go | ||||||
|                 uses: actions/setup-go@v4 |                 uses: actions/setup-go@v4 | ||||||
|                 with: |                 with: | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								.github/workflows/test-mssql.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/workflows/test-mssql.yml
									
									
									
									
										vendored
									
									
								
							| @@ -32,12 +32,12 @@ jobs: | |||||||
|         strategy: |         strategy: | ||||||
|             matrix: |             matrix: | ||||||
|                 go-version: |                 go-version: | ||||||
|                     - 1.18.x |  | ||||||
|                     - 1.19.x |                     - 1.19.x | ||||||
|                     - 1.20.x |                     - 1.20.x | ||||||
|  |                     - 1.21.x | ||||||
|         steps: |         steps: | ||||||
|             -   name: Fetch Repository |             -   name: Fetch Repository | ||||||
|                 uses: actions/checkout@v3 |                 uses: actions/checkout@v4 | ||||||
|             -   name: Install Go |             -   name: Install Go | ||||||
|                 uses: actions/setup-go@v4 |                 uses: actions/setup-go@v4 | ||||||
|                 with: |                 with: | ||||||
|   | |||||||
							
								
								
									
										5
									
								
								.github/workflows/test-mysql.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								.github/workflows/test-mysql.yml
									
									
									
									
										vendored
									
									
								
							| @@ -28,13 +28,12 @@ jobs: | |||||||
|         strategy: |         strategy: | ||||||
|             matrix: |             matrix: | ||||||
|                 go-version: |                 go-version: | ||||||
|                     - 1.17.x |  | ||||||
|                     - 1.18.x |  | ||||||
|                     - 1.19.x |                     - 1.19.x | ||||||
|                     - 1.20.x |                     - 1.20.x | ||||||
|  |                     - 1.21.x | ||||||
|         steps: |         steps: | ||||||
|             -   name: Fetch Repository |             -   name: Fetch Repository | ||||||
|                 uses: actions/checkout@v3 |                 uses: actions/checkout@v4 | ||||||
|             -   name: Install Go |             -   name: Install Go | ||||||
|                 uses: actions/setup-go@v4 |                 uses: actions/setup-go@v4 | ||||||
|                 with: |                 with: | ||||||
|   | |||||||
							
								
								
									
										3
									
								
								.github/workflows/test-pebble.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.github/workflows/test-pebble.yml
									
									
									
									
										vendored
									
									
								
							| @@ -16,10 +16,11 @@ jobs: | |||||||
|         go-version: |         go-version: | ||||||
|           - 1.19.x |           - 1.19.x | ||||||
|           - 1.20.x |           - 1.20.x | ||||||
|  |           - 1.21.x | ||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|     steps: |     steps: | ||||||
|     -   name: Fetch Repository |     -   name: Fetch Repository | ||||||
|         uses: actions/checkout@v3 |         uses: actions/checkout@v4 | ||||||
|     -   name: Install Go |     -   name: Install Go | ||||||
|         uses: actions/setup-go@v4 |         uses: actions/setup-go@v4 | ||||||
|         with: |         with: | ||||||
|   | |||||||
							
								
								
									
										3
									
								
								.github/workflows/test-postgres.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.github/workflows/test-postgres.yml
									
									
									
									
										vendored
									
									
								
							| @@ -29,9 +29,10 @@ jobs: | |||||||
|                 go-version: |                 go-version: | ||||||
|                     - 1.19.x |                     - 1.19.x | ||||||
|                     - 1.20.x |                     - 1.20.x | ||||||
|  |                     - 1.21.x | ||||||
|         steps: |         steps: | ||||||
|             -   name: Fetch Repository |             -   name: Fetch Repository | ||||||
|                 uses: actions/checkout@v3 |                 uses: actions/checkout@v4 | ||||||
|             -   name: Install Go |             -   name: Install Go | ||||||
|                 uses: actions/setup-go@v4 |                 uses: actions/setup-go@v4 | ||||||
|                 with: |                 with: | ||||||
|   | |||||||
							
								
								
									
										35
									
								
								.github/workflows/test-redis.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										35
									
								
								.github/workflows/test-redis.yml
									
									
									
									
										vendored
									
									
								
							| @@ -15,33 +15,48 @@ jobs: | |||||||
|         strategy: |         strategy: | ||||||
|             matrix: |             matrix: | ||||||
|                 go-version: |                 go-version: | ||||||
|                     - 1.18.x |  | ||||||
|                     - 1.19.x |                     - 1.19.x | ||||||
|                     - 1.20.x |                     - 1.20.x | ||||||
|  |                     - 1.21.x | ||||||
|                 redis: |                 redis: | ||||||
|                     - '6.x' |                     - '6.x' | ||||||
|                     - '7.x' |                     - '7.x' | ||||||
|         steps: |         steps: | ||||||
|             -   name: Fetch Repository |             -   name: Fetch Repository | ||||||
|                 uses: actions/checkout@v3 |                 uses: actions/checkout@v4 | ||||||
|  |  | ||||||
|  |             -   name: Generate TLS certs | ||||||
|  |                 run: ./.github/scripts/gen-test-certs.sh | ||||||
|  |  | ||||||
|  |             -   name: Add Custom CA cert | ||||||
|  |                 run: sudo cp /home/runner/work/storage/storage/tls/ca.crt /usr/local/share/ca-certificates/custom.crt | ||||||
|  |  | ||||||
|  |             -   name: Trust Custom CA Cert | ||||||
|  |                 run: sudo update-ca-certificates | ||||||
|  |  | ||||||
|             -   name: Setup Redis |             -   name: Setup Redis | ||||||
|                 uses: shogo82148/actions-setup-redis@v1 |                 uses: shogo82148/actions-setup-redis@v1 | ||||||
|                 with: |                 with: | ||||||
|                     redis-version: ${{ matrix.redis }} |                     redis-version: ${{ matrix.redis }} | ||||||
|                     auto-start: 'false' |                     auto-start: 'false' | ||||||
|                     redis-port: '6379' |  | ||||||
|                     redis-tls-port: '6380' |  | ||||||
|  |  | ||||||
|             -   name: Run Redis |             -   name: Run Redis | ||||||
|                 run: | |                 run: | | ||||||
|                     redis-server --tls-port 6380 --port 6379 \ |                     redis-server --tls-port 6380 --port 6379 \ | ||||||
|                     --tls-cert-file ./redis/tests/tls/redis.crt \ |                     --tls-cert-file /home/runner/work/storage/storage/tls/redis.crt \ | ||||||
|                     --tls-key-file ./redis/tests/tls/redis.key \ |                     --tls-key-file /home/runner/work/storage/storage/tls/redis.key \ | ||||||
|                     --tls-ca-cert-file ./redis/tests/tls/ca.crt& |                     --tls-ca-cert-file /home/runner/work/storage/storage/tls/ca.crt & | ||||||
|  |  | ||||||
|  |             -   name: Run Redis instance with MTLS disabled | ||||||
|  |                 run: | | ||||||
|  |                     redis-server --tls-port 16380 --port 16379 \ | ||||||
|  |                     --tls-cert-file /home/runner/work/storage/storage/tls/redis.crt \ | ||||||
|  |                     --tls-key-file /home/runner/work/storage/storage/tls/redis.key \ | ||||||
|  |                     --tls-ca-cert-file /home/runner/work/storage/storage/tls/ca.crt \ | ||||||
|  |                     --tls-auth-clients no & | ||||||
|  |  | ||||||
|             -   name: Setup Redis Cluster |             -   name: Setup Redis Cluster | ||||||
|                 uses: vishnudxb/redis-cluster@1.0.5 |                 uses: vishnudxb/redis-cluster@1.0.9 | ||||||
|                 with: |                 with: | ||||||
|                     master1-port: 7000 |                     master1-port: 7000 | ||||||
|                     master2-port: 7001 |                     master2-port: 7001 | ||||||
| @@ -49,6 +64,10 @@ jobs: | |||||||
|                     slave1-port: 7003 |                     slave1-port: 7003 | ||||||
|                     slave2-port: 7004 |                     slave2-port: 7004 | ||||||
|                     slave3-port: 7005 |                     slave3-port: 7005 | ||||||
|  |                     sleep-duration: 10 | ||||||
|  |  | ||||||
|  |             -   name: Wait for Redis to Start | ||||||
|  |                 run: sleep 15 | ||||||
|  |  | ||||||
|             -   name: Install Go |             -   name: Install Go | ||||||
|                 uses: actions/setup-go@v4 |                 uses: actions/setup-go@v4 | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								.github/workflows/test-ristretto.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/workflows/test-ristretto.yml
									
									
									
									
										vendored
									
									
								
							| @@ -15,12 +15,12 @@ jobs: | |||||||
|         strategy: |         strategy: | ||||||
|             matrix: |             matrix: | ||||||
|                 go-version: |                 go-version: | ||||||
|                     - 1.18.x |  | ||||||
|                     - 1.19.x |                     - 1.19.x | ||||||
|                     - 1.20.x |                     - 1.20.x | ||||||
|  |                     - 1.21.x | ||||||
|         steps: |         steps: | ||||||
|             -   name: Fetch Repository |             -   name: Fetch Repository | ||||||
|                 uses: actions/checkout@v3 |                 uses: actions/checkout@v4 | ||||||
|             -   name: Install Go |             -   name: Install Go | ||||||
|                 uses: actions/setup-go@v4 |                 uses: actions/setup-go@v4 | ||||||
|                 with: |                 with: | ||||||
|   | |||||||
							
								
								
									
										62
									
								
								.github/workflows/test-rueidis.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								.github/workflows/test-rueidis.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,62 @@ | |||||||
|  | on: | ||||||
|  |     push: | ||||||
|  |         branches: | ||||||
|  |             - master | ||||||
|  |             - main | ||||||
|  |         paths: | ||||||
|  |             - 'rueidis/**' | ||||||
|  |     pull_request: | ||||||
|  |         paths: | ||||||
|  |             - 'rueidis/**' | ||||||
|  | name: "Tests Rueidis" | ||||||
|  | jobs: | ||||||
|  |     Tests: | ||||||
|  |         runs-on: ubuntu-latest | ||||||
|  |         strategy: | ||||||
|  |             matrix: | ||||||
|  |                 go-version: | ||||||
|  |                     - 1.20.x | ||||||
|  |                     - 1.21.x | ||||||
|  |                 redis: | ||||||
|  |                     - '6.x' | ||||||
|  |                     - '7.x' | ||||||
|  |         steps: | ||||||
|  |             -   name: Fetch Repository | ||||||
|  |                 uses: actions/checkout@v4 | ||||||
|  |  | ||||||
|  |             -   name: Generate TLS certs | ||||||
|  |                 run: ./.github/scripts/gen-test-certs.sh | ||||||
|  |  | ||||||
|  |             -   name: Setup Redis | ||||||
|  |                 uses: shogo82148/actions-setup-redis@v1 | ||||||
|  |                 with: | ||||||
|  |                     redis-version: ${{ matrix.redis }} | ||||||
|  |                     auto-start: 'false' | ||||||
|  |                     redis-port: '6379' | ||||||
|  |                     redis-tls-port: '6380' | ||||||
|  |  | ||||||
|  |             -   name: Run Redis | ||||||
|  |                 run: | | ||||||
|  |                     redis-server --tls-port 6380 --port 6379 \ | ||||||
|  |                     --tls-cert-file /home/runner/work/storage/storage/tls/redis.crt \ | ||||||
|  |                     --tls-key-file /home/runner/work/storage/storage/tls/redis.key \ | ||||||
|  |                     --tls-ca-cert-file /home/runner/work/storage/storage/tls/ca.crt & | ||||||
|  |  | ||||||
|  |             -   name: Setup Redis Cluster | ||||||
|  |                 uses: vishnudxb/redis-cluster@1.0.9 | ||||||
|  |                 with: | ||||||
|  |                     master1-port: 7000 | ||||||
|  |                     master2-port: 7001 | ||||||
|  |                     master3-port: 7002 | ||||||
|  |                     slave1-port: 7003 | ||||||
|  |                     slave2-port: 7004 | ||||||
|  |                     slave3-port: 7005 | ||||||
|  |                     sleep-duration: 10 | ||||||
|  |  | ||||||
|  |             -   name: Install Go | ||||||
|  |                 uses: actions/setup-go@v4 | ||||||
|  |                 with: | ||||||
|  |                     go-version: '${{ matrix.go-version }}' | ||||||
|  |  | ||||||
|  |             -   name: Run Test | ||||||
|  |                 run: cd ./rueidis && go test ./... -v -race | ||||||
							
								
								
									
										13
									
								
								.github/workflows/test-s3.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										13
									
								
								.github/workflows/test-s3.yml
									
									
									
									
										vendored
									
									
								
							| @@ -15,21 +15,14 @@ jobs: | |||||||
|         strategy: |         strategy: | ||||||
|             matrix: |             matrix: | ||||||
|                 go-version: |                 go-version: | ||||||
|                     - 1.18.x |  | ||||||
|                     - 1.19.x |                     - 1.19.x | ||||||
|                     - 1.20.x |                     - 1.20.x | ||||||
|  |                     - 1.21.x | ||||||
|         steps: |         steps: | ||||||
|         -   name: Install MinIO |         -   name: Install MinIO | ||||||
|             run: | |             run:  docker run -d --restart always -p 9000:9000 --name storage-minio -e MINIO_ROOT_USER='minio-user' -e MINIO_ROOT_PASSWORD='minio-password' minio/minio server /data | ||||||
|                 docker run -d -p 9000:9000 --name minio minio/minio server /data |  | ||||||
|  |  | ||||||
|                 export AWS_ACCESS_KEY_ID=minioadmin |  | ||||||
|                 export AWS_SECRET_ACCESS_KEY=minioadmin |  | ||||||
|                 export AWS_EC2_METADATA_DISABLED=true |  | ||||||
|  |  | ||||||
|                 aws --endpoint-url http://127.0.0.1:9000/ s3 mb s3://testbucket |  | ||||||
|         -   name: Fetch Repository |         -   name: Fetch Repository | ||||||
|             uses: actions/checkout@v3 |             uses: actions/checkout@v4 | ||||||
|         -   name: Install Go |         -   name: Install Go | ||||||
|             uses: actions/setup-go@v4 |             uses: actions/setup-go@v4 | ||||||
|             with: |             with: | ||||||
|   | |||||||
							
								
								
									
										39
									
								
								.github/workflows/test-scylladb.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								.github/workflows/test-scylladb.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,39 @@ | |||||||
|  | on: | ||||||
|  |   push: | ||||||
|  |     branches: | ||||||
|  |       - master | ||||||
|  |       - main | ||||||
|  |     paths: | ||||||
|  |       - 'scylladb/**' | ||||||
|  |   pull_request: | ||||||
|  |     paths: | ||||||
|  |       - 'scylladb/**' | ||||||
|  |  | ||||||
|  | name: "Tests ScyllaDb" | ||||||
|  |  | ||||||
|  | jobs: | ||||||
|  |   Tests: | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |  | ||||||
|  |     strategy: | ||||||
|  |       matrix: | ||||||
|  |         go-version: | ||||||
|  |           - 1.20.x | ||||||
|  |           - 1.21.x | ||||||
|  |  | ||||||
|  |     steps: | ||||||
|  |       - name: Fetch Repository | ||||||
|  |         uses: actions/checkout@v4 | ||||||
|  |  | ||||||
|  |       - name: Run ScyllaDb | ||||||
|  |         run: | | ||||||
|  |           docker run --name scylladb -p 9042:9042 -p 19042:19042 -p 9160:9160 -p 10000:10000 -p 7000:7000 -p 7001:7001 -p 7199:7199 -p 9180:9180 -d scylladb/scylla:latest --broadcast-address 127.0.0.1 --listen-address 0.0.0.0 --broadcast-rpc-address 127.0.0.1 | ||||||
|  |           sleep 30 # Wait for ScyllaDb to initialize | ||||||
|  |  | ||||||
|  |       - name: Install Go | ||||||
|  |         uses: actions/setup-go@v4 | ||||||
|  |         with: | ||||||
|  |           go-version: '${{ matrix.go-version }}' | ||||||
|  |  | ||||||
|  |       - name: Run Test | ||||||
|  |         run: cd ./scylladb && go test ./... -v -race | ||||||
							
								
								
									
										5
									
								
								.github/workflows/test-sqlite3.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								.github/workflows/test-sqlite3.yml
									
									
									
									
										vendored
									
									
								
							| @@ -14,14 +14,13 @@ jobs: | |||||||
|         strategy: |         strategy: | ||||||
|             matrix: |             matrix: | ||||||
|                 go-version: |                 go-version: | ||||||
|                     - 1.17.x |  | ||||||
|                     - 1.18.x |  | ||||||
|                     - 1.19.x |                     - 1.19.x | ||||||
|                     - 1.20.x |                     - 1.20.x | ||||||
|  |                     - 1.21.x | ||||||
|         runs-on: ubuntu-latest |         runs-on: ubuntu-latest | ||||||
|         steps: |         steps: | ||||||
|             -   name: Fetch Repository |             -   name: Fetch Repository | ||||||
|                 uses: actions/checkout@v3 |                 uses: actions/checkout@v4 | ||||||
|             -   name: Install Go |             -   name: Install Go | ||||||
|                 uses: actions/setup-go@v4 |                 uses: actions/setup-go@v4 | ||||||
|                 with: |                 with: | ||||||
|   | |||||||
							
								
								
									
										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. |  | ||||||
							
								
								
									
										90
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										90
									
								
								README.md
									
									
									
									
									
								
							| @@ -1,20 +1,22 @@ | |||||||
| <p align="center"> | --- | ||||||
|   <picture> | title: 👋 Welcome | ||||||
|     <source height="125" media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/gofiber/docs/master/static/img/logo-dark.svg"> | description: 📦 Premade storage drivers for 🚀 Fiber. | ||||||
|     <img height="125" alt="Fiber" src="https://raw.githubusercontent.com/gofiber/docs/master/static/img/logo.svg"> | sidebar_position: 1 | ||||||
|   </picture> | --- | ||||||
|   <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" /> | ||||||
|  |   <img height="125" alt="Fiber" src="https://raw.githubusercontent.com/gofiber/storage/master/.github/logo.svg#gh-light-mode-only" /> | ||||||
|  |   <br/> | ||||||
|  |  | ||||||
|   <a href="https://pkg.go.dev/github.com/gofiber/storage?tab=doc"> |   <a href="https://pkg.go.dev/github.com/gofiber/storage?tab=doc"> | ||||||
|     <img src="https://img.shields.io/badge/%F0%9F%93%9A%20godoc-pkg-00ACD7.svg?color=00ACD7&style=flat"> |     <img src="https://img.shields.io/badge/%F0%9F%93%9A%20godoc-pkg-00ACD7.svg?color=00ACD7&style=flat"/> | ||||||
|   </a> |   </a> | ||||||
|   <a href="https://goreportcard.com/report/github.com/gofiber/storage"> |   <a href="https://goreportcard.com/report/github.com/gofiber/storage"> | ||||||
|     <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%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> | ||||||
|  |  | ||||||
| @@ -48,51 +50,25 @@ type Storage interface { | |||||||
|  |  | ||||||
| ## 📑 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"> | - [Minio](./minio/README.md) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+Minio%22"> <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-minio.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B" /> </a> | ||||||
|   </a> | - [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> | ||||||
| - [Couchbase](/couchbase) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+Couchbase%22"> | - [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> | ||||||
|     <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"> | - [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> | ||||||
|   </a> | - [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> | ||||||
| - [DynamoDB](/dynamodb) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+DynamoDB%22"> | - [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> | ||||||
|   <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"> | - [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> | ||||||
|   </a> | - [Rueidis](./rueidis/README.md) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+rueidis%22"> <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-rueidis.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"> | - [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> | ||||||
|   <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"> | - [ScyllaDB](./scylladb/README.md) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+scylladb%22"> <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-scylladb.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> |  | ||||||
| - [Pebble](/pebble) <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> |  | ||||||
| - [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"> |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,6 +1,18 @@ | |||||||
| # 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). | ||||||
|  |  | ||||||
|  | **Note: Requires Go 1.19 and above** | ||||||
|  |  | ||||||
| ### Table of Contents | ### Table of Contents | ||||||
| - [Signatures](#signatures) | - [Signatures](#signatures) | ||||||
| - [Installation](#installation) | - [Installation](#installation) | ||||||
| @@ -25,13 +37,13 @@ go mod init github.com/<user>/<repo> | |||||||
| ``` | ``` | ||||||
| And then install the mysql implementation: | And then install the mysql implementation: | ||||||
| ```bash | ```bash | ||||||
| go get github.com/gofiber/storage/arangodb | go get github.com/gofiber/storage/arangodb/v2 | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| ### Examples | ### Examples | ||||||
| Import the storage package. | Import the storage package. | ||||||
| ```go | ```go | ||||||
| import "github.com/gofiber/storage/arangodb" | import "github.com/gofiber/storage/arangodb/v2" | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| You can use the following possibilities to create a storage: | You can use the following possibilities to create a storage: | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ import ( | |||||||
|  |  | ||||||
| 	"github.com/arangodb/go-driver" | 	"github.com/arangodb/go-driver" | ||||||
| 	"github.com/arangodb/go-driver/http" | 	"github.com/arangodb/go-driver/http" | ||||||
| 	"github.com/gofiber/utils" | 	"github.com/gofiber/utils/v2" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| // Storage interface that is implemented by storage providers | // Storage interface that is implemented by storage providers | ||||||
|   | |||||||
| @@ -4,51 +4,51 @@ import ( | |||||||
| 	"testing" | 	"testing" | ||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
| 	"github.com/gofiber/utils" | 	"github.com/stretchr/testify/require" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| var testStore = New(Config{ | var testStore = New(Config{ | ||||||
| 	Reset: true, | 	Reset: true, | ||||||
| }) | }) | ||||||
|  |  | ||||||
| func Test_ARANGODB_Set(t *testing.T) { | func Test_ArangoDB_Set(t *testing.T) { | ||||||
| 	var ( | 	var ( | ||||||
| 		key = "john" | 		key = "john" | ||||||
| 		val = []byte("doe") | 		val = []byte("doe") | ||||||
| 	) | 	) | ||||||
|  |  | ||||||
| 	err := testStore.Set(key, val, 0) | 	err := testStore.Set(key, val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_ARANGODB_Upsert(t *testing.T) { | func Test_ArangoDB_Upsert(t *testing.T) { | ||||||
| 	var ( | 	var ( | ||||||
| 		key = "john" | 		key = "john" | ||||||
| 		val = []byte("doe") | 		val = []byte("doe") | ||||||
| 	) | 	) | ||||||
|  |  | ||||||
| 	err := testStore.Set(key, val, 0) | 	err := testStore.Set(key, val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	err = testStore.Set(key, val, 0) | 	err = testStore.Set(key, val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_ARANGODB_Get(t *testing.T) { | func Test_ArangoDB_Get(t *testing.T) { | ||||||
| 	var ( | 	var ( | ||||||
| 		key = "john" | 		key = "john" | ||||||
| 		val = []byte("doe") | 		val = []byte("doe") | ||||||
| 	) | 	) | ||||||
|  |  | ||||||
| 	err := testStore.Set(key, val, 0) | 	err := testStore.Set(key, val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	result, err := testStore.Get(key) | 	result, err := testStore.Get(key) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| 	utils.AssertEqual(t, val, result) | 	require.Equal(t, val, result) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_ARANGODB_Set_Expiration(t *testing.T) { | func Test_ArangoDB_Set_Expiration(t *testing.T) { | ||||||
| 	var ( | 	var ( | ||||||
| 		key = "john" | 		key = "john" | ||||||
| 		val = []byte("doe") | 		val = []byte("doe") | ||||||
| @@ -56,83 +56,117 @@ func Test_ARANGODB_Set_Expiration(t *testing.T) { | |||||||
| 	) | 	) | ||||||
|  |  | ||||||
| 	err := testStore.Set(key, val, exp) | 	err := testStore.Set(key, val, exp) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	time.Sleep(1100 * time.Millisecond) | 	time.Sleep(1100 * time.Millisecond) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_ARANGODB_Get_Expired(t *testing.T) { | func Test_ArangoDB_Get_Expired(t *testing.T) { | ||||||
| 	var ( | 	key := "john" | ||||||
| 		key = "john" |  | ||||||
| 	) |  | ||||||
|  |  | ||||||
| 	result, err := testStore.Get(key) | 	result, err := testStore.Get(key) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| 	utils.AssertEqual(t, true, len(result) == 0) | 	require.Zero(t, len(result)) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_ARANGODB_Get_NotExist(t *testing.T) { | func Test_ArangoDB_Get_NotExist(t *testing.T) { | ||||||
|  |  | ||||||
| 	result, err := testStore.Get("notexist") | 	result, err := testStore.Get("notexist") | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| 	utils.AssertEqual(t, true, len(result) == 0) | 	require.Zero(t, len(result)) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_ARANGODB_Delete(t *testing.T) { | func Test_ArangoDB_Delete(t *testing.T) { | ||||||
| 	var ( | 	var ( | ||||||
| 		key = "john" | 		key = "john" | ||||||
| 		val = []byte("doe") | 		val = []byte("doe") | ||||||
| 	) | 	) | ||||||
|  |  | ||||||
| 	err := testStore.Set(key, val, 0) | 	err := testStore.Set(key, val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	err = testStore.Delete(key) | 	err = testStore.Delete(key) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	result, err := testStore.Get(key) | 	result, err := testStore.Get(key) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| 	utils.AssertEqual(t, true, len(result) == 0) | 	require.Zero(t, len(result)) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_ARANGODB_Reset(t *testing.T) { | func Test_ArangoDB_Reset(t *testing.T) { | ||||||
| 	var ( | 	val := []byte("doe") | ||||||
| 		val = []byte("doe") |  | ||||||
| 	) |  | ||||||
|  |  | ||||||
| 	err := testStore.Set("john1", val, 0) | 	err := testStore.Set("john1", val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	err = testStore.Set("john2", val, 0) | 	err = testStore.Set("john2", val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	err = testStore.Reset() | 	err = testStore.Reset() | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	result, err := testStore.Get("john1") | 	result, err := testStore.Get("john1") | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| 	utils.AssertEqual(t, true, len(result) == 0) | 	require.Zero(t, len(result)) | ||||||
|  |  | ||||||
| 	result, err = testStore.Get("john2") | 	result, err = testStore.Get("john2") | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| 	utils.AssertEqual(t, true, len(result) == 0) | 	require.Zero(t, len(result)) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_ARANGODB_Non_UTF8(t *testing.T) { | func Test_ArangoDB_Non_UTF8(t *testing.T) { | ||||||
| 	val := []byte("0xF5") | 	val := []byte("0xF5") | ||||||
|  |  | ||||||
| 	err := testStore.Set("0xF6", val, 0) | 	err := testStore.Set("0xF6", val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	result, err := testStore.Get("0xF6") | 	result, err := testStore.Get("0xF6") | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| 	utils.AssertEqual(t, val, result) | 	require.Equal(t, val, result) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_ARANGODB_Close(t *testing.T) { | func Test_ArangoDB_Close(t *testing.T) { | ||||||
| 	utils.AssertEqual(t, nil, testStore.Close()) | 	require.Nil(t, testStore.Close()) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_ARANGODB_Conn(t *testing.T) { | func Test_ArangoDB_Conn(t *testing.T) { | ||||||
| 	utils.AssertEqual(t, true, testStore.Conn() != nil) | 	require.True(t, testStore.Conn() != nil) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func Benchmark_ArangoDB_Set(b *testing.B) { | ||||||
|  | 	b.ReportAllocs() | ||||||
|  | 	b.ResetTimer() | ||||||
|  |  | ||||||
|  | 	var err error | ||||||
|  | 	for i := 0; i < b.N; i++ { | ||||||
|  | 		err = testStore.Set("john", []byte("doe"), 0) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	require.NoError(b, err) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func Benchmark_ArangoDB_Get(b *testing.B) { | ||||||
|  | 	err := testStore.Set("john", []byte("doe"), 0) | ||||||
|  | 	require.NoError(b, err) | ||||||
|  |  | ||||||
|  | 	b.ReportAllocs() | ||||||
|  | 	b.ResetTimer() | ||||||
|  |  | ||||||
|  | 	for i := 0; i < b.N; i++ { | ||||||
|  | 		_, err = testStore.Get("john") | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	require.NoError(b, err) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func Benchmark_ArangoDB_SetAndDelete(b *testing.B) { | ||||||
|  | 	b.ReportAllocs() | ||||||
|  | 	b.ResetTimer() | ||||||
|  |  | ||||||
|  | 	var err error | ||||||
|  | 	for i := 0; i < b.N; i++ { | ||||||
|  | 		_ = testStore.Set("john", []byte("doe"), 0) | ||||||
|  | 		err = testStore.Delete("john") | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	require.NoError(b, err) | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,13 +1,18 @@ | |||||||
| module github.com/gofiber/storage/arangodb | module github.com/gofiber/storage/arangodb/v2 | ||||||
|  |  | ||||||
| go 1.17 | go 1.19 | ||||||
|  |  | ||||||
| require ( | require ( | ||||||
| 	github.com/arangodb/go-driver v1.6.0 | 	github.com/arangodb/go-driver v1.6.1 | ||||||
| 	github.com/gofiber/utils v1.1.0 | 	github.com/gofiber/utils/v2 v2.0.0-beta.3 | ||||||
|  | 	github.com/stretchr/testify v1.8.4 | ||||||
| ) | ) | ||||||
|  |  | ||||||
| require ( | require ( | ||||||
| 	github.com/arangodb/go-velocypack v0.0.0-20200318135517-5af53c29c67e // indirect | 	github.com/arangodb/go-velocypack v0.0.0-20200318135517-5af53c29c67e // indirect | ||||||
|  | 	github.com/davecgh/go-spew v1.1.1 // indirect | ||||||
|  | 	github.com/google/uuid v1.3.1 // indirect | ||||||
| 	github.com/pkg/errors v0.9.1 // indirect | 	github.com/pkg/errors v0.9.1 // indirect | ||||||
|  | 	github.com/pmezard/go-difflib v1.0.0 // indirect | ||||||
|  | 	gopkg.in/yaml.v3 v3.0.1 // indirect | ||||||
| ) | ) | ||||||
|   | |||||||
| @@ -1,54 +1,24 @@ | |||||||
| github.com/arangodb/go-driver v1.6.0 h1:NFWj/idqXZxhFVueihMSI2R9NotNIsgvNfM/xmpekb4= | github.com/arangodb/go-driver v1.6.1 h1:bnhrpbA4U1NU13JOWs5sWWYMtQwdjKT0+jkl8dSndyY= | ||||||
| github.com/arangodb/go-driver v1.6.0/go.mod h1:HQmdGkvNMVBTE3SIPSQ8T/ZddC6iwNsfMR+dDJQxIsI= | github.com/arangodb/go-driver v1.6.1/go.mod h1:ywucwwi34GBxxXFWw/ym+7/66//L4K9abxk/sFJro2k= | ||||||
| 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-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= |  | ||||||
| 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/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= | ||||||
| github.com/gofiber/utils v1.1.0 h1:vdEBpn7AzIUJRhe+CiTOJdUcTg4Q9RK+pEa0KPbLdrM= | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||||
| github.com/gofiber/utils v1.1.0/go.mod h1:poZpsnhBykfnY1Mc0KeEa6mSHrS3dV0+oBWyeQmb2e0= | github.com/gofiber/utils/v2 v2.0.0-beta.3 h1:pfOhUDDVjBJpkWv6C5jaDyYLvpui7zQ97zpyFFsUOKw= | ||||||
| github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= | github.com/gofiber/utils/v2 v2.0.0-beta.3/go.mod h1:jsl17+MsKfwJjM3ONCE9Rzji/j8XNbwjhUVTjzgfDCo= | ||||||
| github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= | github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= | ||||||
| github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= | ||||||
| github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= | github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= | ||||||
| github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | ||||||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | 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/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||||
| github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= |  | ||||||
| github.com/rs/zerolog v1.19.0/go.mod h1:IzD0RJ65iWH0w97OQQebJEvTZYvsCUm9WVLWBQrJRjo= |  | ||||||
| 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/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= | github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= | ||||||
| golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= | github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= | ||||||
| golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= | ||||||
| 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-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-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-20201119102817-f84b799fce68/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.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-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= |  | ||||||
| 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/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||||
|  | gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= | ||||||
|  | gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||||||
|   | |||||||
| @@ -1,8 +1,17 @@ | |||||||
| # 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. | ||||||
|  |  | ||||||
| > NOTE: Go **1.18** or later is required. Source: [link](https://github.com/Azure/azure-sdk-for-go/blob/main/README.md) | **Note: Requires Go 1.19 and above** | ||||||
|  |  | ||||||
| ### Table of Contents | ### Table of Contents | ||||||
|  |  | ||||||
| @@ -35,7 +44,7 @@ go mod init github.com/<user>/<repo> | |||||||
| And then install the azure blob implementation: | And then install the azure blob implementation: | ||||||
|  |  | ||||||
| ```bash | ```bash | ||||||
| go get github.com/gofiber/storage/azureblob | go get github.com/gofiber/storage/azureblob/v2 | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| ### Examples | ### Examples | ||||||
| @@ -43,7 +52,7 @@ go get github.com/gofiber/storage/azureblob | |||||||
| Import the storage package. | Import the storage package. | ||||||
|  |  | ||||||
| ```go | ```go | ||||||
| import "github.com/gofiber/storage/azureblob" | import "github.com/gofiber/storage/azureblob/v2" | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| You can use the following possibilities to create a storage: | You can use the following possibilities to create a storage: | ||||||
|   | |||||||
| @@ -2,12 +2,12 @@ package azureblob | |||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"context" | 	"context" | ||||||
| 	"errors" |  | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob" |  | ||||||
| 	"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/bloberror" |  | ||||||
| 	"io" | 	"io" | ||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
|  | 	"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob" | ||||||
|  | 	"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/bloberror" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| // Storage interface that is implemented by storage providers | // Storage interface that is implemented by storage providers | ||||||
| @@ -107,7 +107,7 @@ func (s *Storage) Reset() error { | |||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	if errCounter > 0 { | 	if errCounter > 0 { | ||||||
| 		return errors.New(fmt.Sprintf("%d errors occured while resetting", errCounter)) | 		return fmt.Errorf("%d errors occured while resetting", errCounter) | ||||||
| 	} | 	} | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,13 +1,17 @@ | |||||||
| package azureblob | package azureblob | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/bloberror" | 	"os" | ||||||
| 	"github.com/gofiber/fiber/v2/utils" |  | ||||||
| 	"testing" | 	"testing" | ||||||
|  |  | ||||||
|  | 	"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/bloberror" | ||||||
|  | 	"github.com/stretchr/testify/require" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func newStore() *Storage { | var testStore *Storage | ||||||
| 	return New(Config{ |  | ||||||
|  | func TestMain(m *testing.M) { | ||||||
|  | 	testStore = New(Config{ | ||||||
| 		Account:   "devstoreaccount1", | 		Account:   "devstoreaccount1", | ||||||
| 		Container: "test", | 		Container: "test", | ||||||
| 		Endpoint:  "http://127.0.0.1:10000/devstoreaccount1", | 		Endpoint:  "http://127.0.0.1:10000/devstoreaccount1", | ||||||
| @@ -15,21 +19,27 @@ func newStore() *Storage { | |||||||
| 			Account: "devstoreaccount1", | 			Account: "devstoreaccount1", | ||||||
| 			Key:     "Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==", | 			Key:     "Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==", | ||||||
| 		}, | 		}, | ||||||
|  | 		Reset: true, | ||||||
| 	}) | 	}) | ||||||
|  |  | ||||||
|  | 	code := m.Run() | ||||||
|  |  | ||||||
|  | 	_ = testStore.Close() | ||||||
|  | 	os.Exit(code) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_AzureBlob_Get(t *testing.T) { | func Test_AzureBlob_Get(t *testing.T) { | ||||||
| 	var ( | 	var ( | ||||||
| 		key = "john" | 		key = "john" | ||||||
| 		val = []byte("doe") | 		val = []byte("doe") | ||||||
| 	) | 	) | ||||||
| 	testStore := newStore() |  | ||||||
|  |  | ||||||
| 	err := testStore.Set(key, val, 0) | 	err := testStore.Set(key, val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	result, err := testStore.Get(key) | 	result, err := testStore.Get(key) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| 	utils.AssertEqual(t, val, result) | 	require.Equal(t, val, result) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_AzureBlob_Set(t *testing.T) { | func Test_AzureBlob_Set(t *testing.T) { | ||||||
| @@ -38,9 +48,8 @@ func Test_AzureBlob_Set(t *testing.T) { | |||||||
| 		val = []byte("doe") | 		val = []byte("doe") | ||||||
| 	) | 	) | ||||||
|  |  | ||||||
| 	testStore := newStore() |  | ||||||
| 	err := testStore.Set(key, val, 0) | 	err := testStore.Set(key, val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_AzureBlob_Delete(t *testing.T) { | func Test_AzureBlob_Delete(t *testing.T) { | ||||||
| @@ -48,13 +57,12 @@ func Test_AzureBlob_Delete(t *testing.T) { | |||||||
| 		key = "john" | 		key = "john" | ||||||
| 		val = []byte("doe") | 		val = []byte("doe") | ||||||
| 	) | 	) | ||||||
| 	testStore := newStore() |  | ||||||
|  |  | ||||||
| 	err := testStore.Set(key, val, 0) | 	err := testStore.Set(key, val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	err = testStore.Delete(key) | 	err = testStore.Delete(key) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	result, err := testStore.Get(key) | 	result, err := testStore.Get(key) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| @@ -62,8 +70,8 @@ func Test_AzureBlob_Delete(t *testing.T) { | |||||||
| 			err = nil | 			err = nil | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| 	utils.AssertEqual(t, true, len(result) == 0) | 	require.Zero(t, len(result)) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_AzureBlob_Override(t *testing.T) { | func Test_AzureBlob_Override(t *testing.T) { | ||||||
| @@ -71,41 +79,36 @@ func Test_AzureBlob_Override(t *testing.T) { | |||||||
| 		key = "john" | 		key = "john" | ||||||
| 		val = []byte("doe") | 		val = []byte("doe") | ||||||
| 	) | 	) | ||||||
| 	testStore := newStore() |  | ||||||
|  |  | ||||||
| 	err := testStore.Set(key, val, 0) | 	err := testStore.Set(key, val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	err = testStore.Set(key, val, 0) | 	err = testStore.Set(key, val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_AzureBlob_Get_NotExist(t *testing.T) { | func Test_AzureBlob_Get_NotExist(t *testing.T) { | ||||||
| 	testStore := newStore() |  | ||||||
| 	result, err := testStore.Get("notexist") | 	result, err := testStore.Get("notexist") | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		if bloberror.HasCode(err, bloberror.BlobNotFound) { | 		if bloberror.HasCode(err, bloberror.BlobNotFound) { | ||||||
| 			err = nil | 			err = nil | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| 	utils.AssertEqual(t, true, len(result) == 0) | 	require.Zero(t, len(result)) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_AzureBlob_Reset(t *testing.T) { | func Test_AzureBlob_Reset(t *testing.T) { | ||||||
| 	var ( | 	val := []byte("doe") | ||||||
| 		val = []byte("doe") |  | ||||||
| 	) |  | ||||||
| 	testStore := newStore() |  | ||||||
|  |  | ||||||
| 	err := testStore.Set("john1", val, 0) | 	err := testStore.Set("john1", val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	err = testStore.Set("john2", val, 0) | 	err = testStore.Set("john2", val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	err = testStore.Reset() | 	err = testStore.Reset() | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	result, err := testStore.Get("john1") | 	result, err := testStore.Get("john1") | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| @@ -113,8 +116,8 @@ func Test_AzureBlob_Reset(t *testing.T) { | |||||||
| 			err = nil | 			err = nil | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| 	utils.AssertEqual(t, true, len(result) == 0) | 	require.Zero(t, len(result)) | ||||||
|  |  | ||||||
| 	result, err = testStore.Get("john2") | 	result, err = testStore.Get("john2") | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| @@ -122,16 +125,53 @@ func Test_AzureBlob_Reset(t *testing.T) { | |||||||
| 			err = nil | 			err = nil | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| 	utils.AssertEqual(t, true, len(result) == 0) | 	require.Zero(t, len(result)) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_S3_Conn(t *testing.T) { | func Test_S3_Conn(t *testing.T) { | ||||||
| 	testStore := newStore() | 	require.True(t, testStore.Conn() != nil) | ||||||
| 	utils.AssertEqual(t, true, testStore.Conn() != nil) |  | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_AzureBlob_Close(t *testing.T) { | func Test_AzureBlob_Close(t *testing.T) { | ||||||
| 	testStore := newStore() | 	require.Nil(t, testStore.Close()) | ||||||
| 	utils.AssertEqual(t, nil, testStore.Close()) | } | ||||||
|  |  | ||||||
|  | func Benchmark_AzureBlob_Set(b *testing.B) { | ||||||
|  | 	b.ReportAllocs() | ||||||
|  | 	b.ResetTimer() | ||||||
|  |  | ||||||
|  | 	var err error | ||||||
|  | 	for i := 0; i < b.N; i++ { | ||||||
|  | 		err = testStore.Set("john", []byte("doe"), 0) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	require.NoError(b, err) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func Benchmark_AzureBlob_Get(b *testing.B) { | ||||||
|  | 	err := testStore.Set("john", []byte("doe"), 0) | ||||||
|  | 	require.NoError(b, err) | ||||||
|  |  | ||||||
|  | 	b.ReportAllocs() | ||||||
|  | 	b.ResetTimer() | ||||||
|  |  | ||||||
|  | 	for i := 0; i < b.N; i++ { | ||||||
|  | 		_, err = testStore.Get("john") | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	require.NoError(b, err) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func Benchmark_AzureBlob_SetAndDelete(b *testing.B) { | ||||||
|  | 	b.ReportAllocs() | ||||||
|  | 	b.ResetTimer() | ||||||
|  |  | ||||||
|  | 	var err error | ||||||
|  | 	for i := 0; i < b.N; i++ { | ||||||
|  | 		_ = testStore.Set("john", []byte("doe"), 0) | ||||||
|  | 		err = testStore.Delete("john") | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	require.NoError(b, err) | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,17 +1,18 @@ | |||||||
| module github.com/gofiber/storage/azureblob | module github.com/gofiber/storage/azureblob/v2 | ||||||
|  |  | ||||||
| go 1.18 | go 1.19 | ||||||
|  |  | ||||||
| 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 v1.2.0 | ||||||
| 	github.com/gofiber/fiber/v2 v2.43.0 | 	github.com/stretchr/testify v1.8.4 | ||||||
| ) | ) | ||||||
|  |  | ||||||
| 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.7.1 // indirect | ||||||
| 	github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.2 // indirect | 	github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 // indirect | ||||||
| 	github.com/google/uuid v1.3.0 // indirect | 	github.com/davecgh/go-spew v1.1.1 // indirect | ||||||
| 	golang.org/x/crypto v0.7.0 // indirect | 	github.com/pmezard/go-difflib v1.0.0 // indirect | ||||||
| 	golang.org/x/net v0.8.0 // indirect | 	golang.org/x/net v0.17.0 // indirect | ||||||
| 	golang.org/x/text v0.8.0 // indirect | 	golang.org/x/text v0.13.0 // indirect | ||||||
|  | 	gopkg.in/yaml.v3 v3.0.1 // indirect | ||||||
| ) | ) | ||||||
|   | |||||||
| @@ -1,28 +1,31 @@ | |||||||
| 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.7.1 h1:/iHxaJhsFr0+xVFfbMr5vxz848jyiWuIEDhYq3y5odY= | ||||||
| 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.7.1/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= | ||||||
| github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.1.0 h1:QkAcEIAKbNL4KoFr4SathZPhDhF4mVwpBMFlYjyAqy8= | github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0 h1:vcYCAze6p19qBW7MhZybIsqD8sMV8js0NyQM8JDnVtg= | ||||||
| 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.3.0 h1:sXr+ck84g/ZlZUOZiNELInmMgOsuGwdjjVkEIde0OtY= | ||||||
| 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.3.0/go.mod h1:okt5dMMTOFjX/aovMlrjvvXoPMBVSPzk9185BT0+eZM= | ||||||
| github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.6.1 h1:YvQv9Mz6T8oR5ypQOL6erY0Z5t71ak1uHV4QFokCOZk= | github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.2.0 h1:Ma67P/GGprNwsslzEH6+Kb8nybI8jpDTm4Wmzu2ReK8= | ||||||
| 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 v1.2.0 h1:gggzg0SUMs6SQbEw+3LoSsYf9YMjkupeAnHMX8O9mmY= | ||||||
| github.com/AzureAD/microsoft-authentication-library-for-go v0.5.1 h1:BWe8a+f/t+7KY7zH2mqygeUD0t8hNFXe08p1Pb3/jKE= | github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.2.0/go.mod h1:+6KLcKIVgxoBDMqMO/Nvy7bZ9a0nbU3I1DtFQK3YvB4= | ||||||
|  | github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0 h1:OBhqkivkhkMqLPymWEppkm7vgPQY2XsHoEkaMQ0AdZY= | ||||||
| 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/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||||
| github.com/gofiber/fiber/v2 v2.43.0 h1:yit3E4kHf178B60p5CQBa/3v+WVuziWMa/G2ZNyLJB0= | github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= | ||||||
| github.com/gofiber/fiber/v2 v2.43.0/go.mod h1:mpS1ZNE5jU+u+BA4FbM+KKnUzJ4wzTK+FT2tG3tU+6I= | github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= | ||||||
| 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/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= | github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= | ||||||
| github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4 h1:Qj1ukM4GlMWXNdMBuXcXfz/Kw9s1qm0CLY32QxuSImI= | github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= | ||||||
| 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/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||||
| golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A= | github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= | ||||||
| golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= | github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= | ||||||
| golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= | golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= | ||||||
| golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= | golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= | ||||||
| golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= | golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= | ||||||
| golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= | golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= | ||||||
| golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= | golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= | ||||||
|  | golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= | ||||||
|  | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= | ||||||
|  | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||||
| 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.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= | ||||||
|  | gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||||||
|   | |||||||
| @@ -1,7 +1,18 @@ | |||||||
| # 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) | ||||||
|  |  | ||||||
|  | **Note: Requires Go 1.19 and above** | ||||||
|  |  | ||||||
| ### Table of Contents | ### Table of Contents | ||||||
|  |  | ||||||
| - [Signatures](#signatures) | - [Signatures](#signatures) | ||||||
| @@ -33,7 +44,7 @@ go mod init github.com/<user>/<repo> | |||||||
| And then install the badger implementation: | And then install the badger implementation: | ||||||
|  |  | ||||||
| ```bash | ```bash | ||||||
| go get github.com/gofiber/storage/badger | go get github.com/gofiber/storage/badger/v2 | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| ### Examples | ### Examples | ||||||
| @@ -41,7 +52,7 @@ go get github.com/gofiber/storage/badger | |||||||
| Import the storage package. | Import the storage package. | ||||||
|  |  | ||||||
| ```go | ```go | ||||||
| import "github.com/gofiber/storage/badger" | import "github.com/gofiber/storage/badger/v2" | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| You can use the following possibilities to create a storage: | You can use the following possibilities to create a storage: | ||||||
|   | |||||||
| @@ -4,7 +4,7 @@ import ( | |||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
| 	"github.com/dgraph-io/badger/v3" | 	"github.com/dgraph-io/badger/v3" | ||||||
| 	"github.com/gofiber/utils" | 	"github.com/gofiber/utils/v2" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| // Storage interface that is implemented by storage providers | // Storage interface that is implemented by storage providers | ||||||
|   | |||||||
| @@ -4,10 +4,12 @@ import ( | |||||||
| 	"testing" | 	"testing" | ||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
| 	"github.com/gofiber/utils" | 	"github.com/stretchr/testify/require" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| var testStore = New() | var testStore = New(Config{ | ||||||
|  | 	Reset: true, | ||||||
|  | }) | ||||||
|  |  | ||||||
| func Test_Badger_Set(t *testing.T) { | func Test_Badger_Set(t *testing.T) { | ||||||
| 	var ( | 	var ( | ||||||
| @@ -16,7 +18,7 @@ func Test_Badger_Set(t *testing.T) { | |||||||
| 	) | 	) | ||||||
|  |  | ||||||
| 	err := testStore.Set(key, val, 0) | 	err := testStore.Set(key, val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_Badger_Set_Override(t *testing.T) { | func Test_Badger_Set_Override(t *testing.T) { | ||||||
| @@ -26,10 +28,10 @@ func Test_Badger_Set_Override(t *testing.T) { | |||||||
| 	) | 	) | ||||||
|  |  | ||||||
| 	err := testStore.Set(key, val, 0) | 	err := testStore.Set(key, val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	err = testStore.Set(key, val, 0) | 	err = testStore.Set(key, val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_Badger_Get(t *testing.T) { | func Test_Badger_Get(t *testing.T) { | ||||||
| @@ -39,11 +41,11 @@ func Test_Badger_Get(t *testing.T) { | |||||||
| 	) | 	) | ||||||
|  |  | ||||||
| 	err := testStore.Set(key, val, 0) | 	err := testStore.Set(key, val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	result, err := testStore.Get(key) | 	result, err := testStore.Get(key) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| 	utils.AssertEqual(t, val, result) | 	require.Equal(t, val, result) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_Badger_Set_Expiration(t *testing.T) { | func Test_Badger_Set_Expiration(t *testing.T) { | ||||||
| @@ -54,26 +56,23 @@ func Test_Badger_Set_Expiration(t *testing.T) { | |||||||
| 	) | 	) | ||||||
|  |  | ||||||
| 	err := testStore.Set(key, val, exp) | 	err := testStore.Set(key, val, exp) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	time.Sleep(1100 * time.Millisecond) | 	time.Sleep(1100 * time.Millisecond) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_Badger_Get_Expired(t *testing.T) { | func Test_Badger_Get_Expired(t *testing.T) { | ||||||
| 	var ( | 	key := "john" | ||||||
| 		key = "john" |  | ||||||
| 	) |  | ||||||
|  |  | ||||||
| 	result, err := testStore.Get(key) | 	result, err := testStore.Get(key) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| 	utils.AssertEqual(t, true, len(result) == 0) | 	require.Zero(t, len(result)) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_Badger_Get_NotExist(t *testing.T) { | func Test_Badger_Get_NotExist(t *testing.T) { | ||||||
|  |  | ||||||
| 	result, err := testStore.Get("notexist") | 	result, err := testStore.Get("notexist") | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| 	utils.AssertEqual(t, true, len(result) == 0) | 	require.Zero(t, len(result)) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_Badger_Delete(t *testing.T) { | func Test_Badger_Delete(t *testing.T) { | ||||||
| @@ -83,43 +82,80 @@ func Test_Badger_Delete(t *testing.T) { | |||||||
| 	) | 	) | ||||||
|  |  | ||||||
| 	err := testStore.Set(key, val, 0) | 	err := testStore.Set(key, val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	err = testStore.Delete(key) | 	err = testStore.Delete(key) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	result, err := testStore.Get(key) | 	result, err := testStore.Get(key) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| 	utils.AssertEqual(t, true, len(result) == 0) | 	require.Zero(t, len(result)) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_Badger_Reset(t *testing.T) { | func Test_Badger_Reset(t *testing.T) { | ||||||
| 	var ( | 	val := []byte("doe") | ||||||
| 		val = []byte("doe") |  | ||||||
| 	) |  | ||||||
|  |  | ||||||
| 	err := testStore.Set("john1", val, 0) | 	err := testStore.Set("john1", val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	err = testStore.Set("john2", val, 0) | 	err = testStore.Set("john2", val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	err = testStore.Reset() | 	err = testStore.Reset() | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	result, err := testStore.Get("john1") | 	result, err := testStore.Get("john1") | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| 	utils.AssertEqual(t, true, len(result) == 0) | 	require.Zero(t, len(result)) | ||||||
|  |  | ||||||
| 	result, err = testStore.Get("john2") | 	result, err = testStore.Get("john2") | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| 	utils.AssertEqual(t, true, len(result) == 0) | 	require.Zero(t, len(result)) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_Badger_Close(t *testing.T) { | func Test_Badger_Close(t *testing.T) { | ||||||
| 	utils.AssertEqual(t, nil, testStore.Close()) | 	require.Nil(t, testStore.Close()) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_Badger_Conn(t *testing.T) { | func Test_Badger_Conn(t *testing.T) { | ||||||
| 	utils.AssertEqual(t, true, testStore.Conn() != nil) | 	require.True(t, testStore.Conn() != nil) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | func Benchmark_Badger_Set(b *testing.B) { | ||||||
|  | 	b.ReportAllocs() | ||||||
|  | 	b.ResetTimer() | ||||||
|  |  | ||||||
|  | 	var err error | ||||||
|  | 	for i := 0; i < b.N; i++ { | ||||||
|  | 		err = testStore.Set("john", []byte("doe"), 0) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	require.NoError(b, err) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func Benchmark_Badger_Get(b *testing.B) { | ||||||
|  | 	err := testStore.Set("john", []byte("doe"), 0) | ||||||
|  | 	require.NoError(b, err) | ||||||
|  |  | ||||||
|  | 	b.ReportAllocs() | ||||||
|  | 	b.ResetTimer() | ||||||
|  |  | ||||||
|  | 	for i := 0; i < b.N; i++ { | ||||||
|  | 		_, err = testStore.Get("john") | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	require.NoError(b, err) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func Benchmark_Badger_SetAndDelete(b *testing.B) { | ||||||
|  | 	b.ReportAllocs() | ||||||
|  | 	b.ResetTimer() | ||||||
|  |  | ||||||
|  | 	var err error | ||||||
|  | 	for i := 0; i < b.N; i++ { | ||||||
|  | 		_ = testStore.Set("john", []byte("doe"), 0) | ||||||
|  | 		err = testStore.Delete("john") | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	require.NoError(b, err) | ||||||
|  | } | ||||||
|   | |||||||
| @@ -1,8 +1,9 @@ | |||||||
| package badger | package badger | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"github.com/dgraph-io/badger/v3" |  | ||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
|  | 	"github.com/dgraph-io/badger/v3" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| // Config defines the config for storage. | // Config defines the config for storage. | ||||||
|   | |||||||
| @@ -1,14 +1,15 @@ | |||||||
| package badger | package badger | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"github.com/dgraph-io/badger/v3" |  | ||||||
| 	"github.com/gofiber/utils" |  | ||||||
| 	"testing" | 	"testing" | ||||||
|  |  | ||||||
|  | 	"github.com/dgraph-io/badger/v3" | ||||||
|  | 	"github.com/stretchr/testify/require" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func assertRecoveryPanic(t *testing.T) { | func assertRecoveryPanic(t *testing.T) { | ||||||
| 	err := recover() | 	err := recover() | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.Nil(t, nil, err) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_Badger_Only_Name(t *testing.T) { | func Test_Badger_Only_Name(t *testing.T) { | ||||||
| @@ -17,7 +18,7 @@ func Test_Badger_Only_Name(t *testing.T) { | |||||||
| 		Database:  "fiber.config.badger", | 		Database:  "fiber.config.badger", | ||||||
| 		UseLogger: false, | 		UseLogger: false, | ||||||
| 	}) | 	}) | ||||||
| 	utils.AssertEqual(t, nil, testDB.Close()) | 	require.Nil(t, testDB.Close()) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_Badger_Options(t *testing.T) { | func Test_Badger_Options(t *testing.T) { | ||||||
| @@ -26,11 +27,11 @@ func Test_Badger_Options(t *testing.T) { | |||||||
| 		BadgerOptions: badger.DefaultOptions("fiber.with_options.badger"), | 		BadgerOptions: badger.DefaultOptions("fiber.with_options.badger"), | ||||||
| 		UseLogger:     false, | 		UseLogger:     false, | ||||||
| 	}) | 	}) | ||||||
| 	utils.AssertEqual(t, nil, testDB.Close()) | 	require.Nil(t, testDB.Close()) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_Empty_Config(t *testing.T) { | func Test_Empty_Config(t *testing.T) { | ||||||
| 	defer assertRecoveryPanic(t) | 	defer assertRecoveryPanic(t) | ||||||
| 	testDB := New(Config{}) | 	testDB := New(Config{}) | ||||||
| 	utils.AssertEqual(t, nil, testDB.Close()) | 	require.Nil(t, testDB.Close()) | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,27 +1,32 @@ | |||||||
| module github.com/gofiber/storage/badger | module github.com/gofiber/storage/badger/v2 | ||||||
|  |  | ||||||
| go 1.18 | go 1.19 | ||||||
|  |  | ||||||
| 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.1.0 | 	github.com/gofiber/utils/v2 v2.0.0-beta.3 | ||||||
|  | 	github.com/stretchr/testify v1.8.4 | ||||||
| ) | ) | ||||||
|  |  | ||||||
| require ( | require ( | ||||||
| 	github.com/cespare/xxhash v1.1.0 // indirect | 	github.com/cespare/xxhash v1.1.0 // indirect | ||||||
| 	github.com/cespare/xxhash/v2 v2.1.2 // indirect | 	github.com/cespare/xxhash/v2 v2.2.0 // indirect | ||||||
|  | 	github.com/davecgh/go-spew v1.1.1 // indirect | ||||||
| 	github.com/dgraph-io/ristretto v0.1.1 // indirect | 	github.com/dgraph-io/ristretto v0.1.1 // indirect | ||||||
| 	github.com/dustin/go-humanize v1.0.0 // indirect | 	github.com/dustin/go-humanize v1.0.1 // indirect | ||||||
| 	github.com/gogo/protobuf v1.3.2 // indirect | 	github.com/gogo/protobuf v1.3.2 // indirect | ||||||
| 	github.com/golang/glog v1.0.0 // indirect | 	github.com/golang/glog v1.1.2 // indirect | ||||||
| 	github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect | 	github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect | ||||||
| 	github.com/golang/protobuf v1.5.2 // indirect | 	github.com/golang/protobuf v1.5.3 // indirect | ||||||
| 	github.com/golang/snappy v0.0.4 // indirect | 	github.com/golang/snappy v0.0.4 // indirect | ||||||
| 	github.com/google/flatbuffers v22.10.26+incompatible // indirect | 	github.com/google/flatbuffers v23.5.26+incompatible // indirect | ||||||
| 	github.com/klauspost/compress v1.15.12 // indirect | 	github.com/google/uuid v1.3.1 // indirect | ||||||
|  | 	github.com/klauspost/compress v1.16.7 // indirect | ||||||
| 	github.com/pkg/errors v0.9.1 // indirect | 	github.com/pkg/errors v0.9.1 // indirect | ||||||
|  | 	github.com/pmezard/go-difflib v1.0.0 // indirect | ||||||
| 	go.opencensus.io v0.24.0 // indirect | 	go.opencensus.io v0.24.0 // indirect | ||||||
| 	golang.org/x/net v0.7.0 // indirect | 	golang.org/x/net v0.17.0 // indirect | ||||||
| 	golang.org/x/sys v0.5.0 // indirect | 	golang.org/x/sys v0.13.0 // indirect | ||||||
| 	google.golang.org/protobuf v1.28.1 // indirect | 	google.golang.org/protobuf v1.31.0 // indirect | ||||||
|  | 	gopkg.in/yaml.v3 v3.0.1 // indirect | ||||||
| ) | ) | ||||||
|   | |||||||
| @@ -7,8 +7,8 @@ github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA | |||||||
| github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= | github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= | ||||||
| github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= | github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= | ||||||
| github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= | github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= | ||||||
| github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= | github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= | ||||||
| github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= | github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= | ||||||
| github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= | github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= | ||||||
| github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= | github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= | ||||||
| github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= | github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= | ||||||
| @@ -24,20 +24,21 @@ github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWa | |||||||
| github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= | github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= | ||||||
| github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2 h1:tdlZCpZ/P9DhczCTSixgIKmwPv6+wP5DGjqLYw5SUiA= | github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2 h1:tdlZCpZ/P9DhczCTSixgIKmwPv6+wP5DGjqLYw5SUiA= | ||||||
| github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= | github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= | ||||||
| github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= |  | ||||||
| github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= | github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= | ||||||
|  | github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= | ||||||
|  | github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= | ||||||
| github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= | github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= | ||||||
| github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= | github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= | ||||||
| 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.1.0 h1:vdEBpn7AzIUJRhe+CiTOJdUcTg4Q9RK+pEa0KPbLdrM= | github.com/gofiber/utils/v2 v2.0.0-beta.3 h1:pfOhUDDVjBJpkWv6C5jaDyYLvpui7zQ97zpyFFsUOKw= | ||||||
| github.com/gofiber/utils v1.1.0/go.mod h1:poZpsnhBykfnY1Mc0KeEa6mSHrS3dV0+oBWyeQmb2e0= | github.com/gofiber/utils/v2 v2.0.0-beta.3/go.mod h1:jsl17+MsKfwJjM3ONCE9Rzji/j8XNbwjhUVTjzgfDCo= | ||||||
| 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= | ||||||
| github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ= | github.com/golang/glog v1.1.2 h1:DVjP2PbBOzHyzA+dn3WhHIq4NdVu3Q+pvivFICf/7fo= | ||||||
| github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= | github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= | ||||||
| github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= | github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= | ||||||
| github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= | github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= | ||||||
| github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= | github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= | ||||||
| @@ -54,14 +55,14 @@ github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvq | |||||||
| github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= | github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= | ||||||
| github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= | github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= | ||||||
| github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= | 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.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= | ||||||
| github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= | github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= | ||||||
| github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= | github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= | ||||||
| github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= | github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= | ||||||
| github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= | github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= | ||||||
| github.com/google/flatbuffers v1.12.1/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= | github.com/google/flatbuffers v1.12.1/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= | ||||||
| github.com/google/flatbuffers v22.10.26+incompatible h1:z1QiaMyPu1x3Z6xf2u1dsLj1ZxicdGSeaLpCuIsQNZM= | github.com/google/flatbuffers v23.5.26+incompatible h1:M9dgRyhJemaM4Sw8+66GHBu8ioaQmyPLg1b8VwK5WJg= | ||||||
| github.com/google/flatbuffers v22.10.26+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= | github.com/google/flatbuffers v23.5.26+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= | ||||||
| github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= | github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= | ||||||
| github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= | github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= | ||||||
| github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= | github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= | ||||||
| @@ -72,15 +73,19 @@ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ | |||||||
| github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= | github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= | ||||||
| github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= | github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= | ||||||
| github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= | github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= | ||||||
|  | github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= | ||||||
|  | github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= | ||||||
| github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= | github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= | ||||||
| github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= | github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= | ||||||
| github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= | 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/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= | ||||||
| github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= | github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= | ||||||
| github.com/klauspost/compress v1.15.12 h1:YClS/PImqYbn+UILDnqxQCZ3RehC9N318SU3kElDUEM= | github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I= | ||||||
| github.com/klauspost/compress v1.15.12/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= | github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= | ||||||
|  | github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= | ||||||
| github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= | github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= | ||||||
| github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= | github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= | ||||||
|  | github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= | ||||||
| github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= | github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= | ||||||
| github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= | github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= | ||||||
| github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= | github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= | ||||||
| @@ -108,8 +113,9 @@ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXf | |||||||
| github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= | github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= | ||||||
| github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= | 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.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= | ||||||
| github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= |  | ||||||
| github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= | github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= | ||||||
|  | github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= | ||||||
|  | github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= | ||||||
| github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= | github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= | ||||||
| github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= | github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= | ||||||
| github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | ||||||
| @@ -136,8 +142,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.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= | golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= | ||||||
| golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= | golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= | ||||||
| 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 +158,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.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= | golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= | ||||||
| golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | golang.org/x/sys v0.13.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= | ||||||
| @@ -192,9 +198,10 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD | |||||||
| google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= | google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= | ||||||
| google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= | 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.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= | ||||||
| google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= | google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= | ||||||
| google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= | google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= | ||||||
| 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/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= | ||||||
| gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||||
| gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||||
| gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||||||
|   | |||||||
| @@ -1,6 +1,17 @@ | |||||||
| # 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. | ||||||
|  |  | ||||||
|  | **Note: Requires Go 1.19 and above** | ||||||
|  |  | ||||||
| ### Table of Contents | ### Table of Contents | ||||||
| - [Signatures](#signatures) | - [Signatures](#signatures) | ||||||
| @@ -26,13 +37,13 @@ go mod init github.com/<user>/<repo> | |||||||
| ``` | ``` | ||||||
| And then install the s3 implementation: | And then install the s3 implementation: | ||||||
| ```bash | ```bash | ||||||
| go get github.com/gofiber/storage/bbolt | go get github.com/gofiber/storage/bbolt/v2 | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| ### Examples | ### Examples | ||||||
| Import the storage package. | Import the storage package. | ||||||
| ```go | ```go | ||||||
| import "github.com/gofiber/storage/bbolt" | import "github.com/gofiber/storage/bbolt/v2" | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| You can use the following possibilities to create a storage: | You can use the following possibilities to create a storage: | ||||||
|   | |||||||
| @@ -3,7 +3,7 @@ package bbolt | |||||||
| import ( | import ( | ||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
| 	"github.com/gofiber/utils" | 	"github.com/gofiber/utils/v2" | ||||||
| 	"go.etcd.io/bbolt" | 	"go.etcd.io/bbolt" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| @@ -18,7 +18,7 @@ func New(config ...Config) *Storage { | |||||||
| 	// Set default config | 	// Set default config | ||||||
| 	cfg := configDefault(config...) | 	cfg := configDefault(config...) | ||||||
|  |  | ||||||
| 	conn, err := bbolt.Open(cfg.Database, 0666, &bbolt.Options{ | 	conn, err := bbolt.Open(cfg.Database, 0o666, &bbolt.Options{ | ||||||
| 		Timeout:  cfg.Timeout, | 		Timeout:  cfg.Timeout, | ||||||
| 		ReadOnly: cfg.ReadOnly, | 		ReadOnly: cfg.ReadOnly, | ||||||
| 	}) | 	}) | ||||||
| @@ -42,7 +42,6 @@ func New(config ...Config) *Storage { | |||||||
| 		conn:   conn, | 		conn:   conn, | ||||||
| 		bucket: cfg.Bucket, | 		bucket: cfg.Bucket, | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| } | } | ||||||
|  |  | ||||||
| // Get value by key | // Get value by key | ||||||
|   | |||||||
| @@ -1,12 +1,25 @@ | |||||||
| package bbolt | package bbolt | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
|  | 	"os" | ||||||
| 	"testing" | 	"testing" | ||||||
|  |  | ||||||
| 	"github.com/gofiber/utils" | 	"github.com/stretchr/testify/require" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| var testStore = New() | var testStore *Storage | ||||||
|  |  | ||||||
|  | func TestMain(m *testing.M) { | ||||||
|  | 	testStore = New(Config{ | ||||||
|  | 		Bucket: "fiber-bucket", | ||||||
|  | 		Reset:  true, | ||||||
|  | 	}) | ||||||
|  |  | ||||||
|  | 	code := m.Run() | ||||||
|  |  | ||||||
|  | 	_ = testStore.Close() | ||||||
|  | 	os.Exit(code) | ||||||
|  | } | ||||||
|  |  | ||||||
| func Test_Bbolt_Set(t *testing.T) { | func Test_Bbolt_Set(t *testing.T) { | ||||||
| 	var ( | 	var ( | ||||||
| @@ -15,7 +28,7 @@ func Test_Bbolt_Set(t *testing.T) { | |||||||
| 	) | 	) | ||||||
|  |  | ||||||
| 	err := testStore.Set(key, val, 0) | 	err := testStore.Set(key, val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_Bbolt_Set_Override(t *testing.T) { | func Test_Bbolt_Set_Override(t *testing.T) { | ||||||
| @@ -25,10 +38,10 @@ func Test_Bbolt_Set_Override(t *testing.T) { | |||||||
| 	) | 	) | ||||||
|  |  | ||||||
| 	err := testStore.Set(key, val, 0) | 	err := testStore.Set(key, val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	err = testStore.Set(key, val, 0) | 	err = testStore.Set(key, val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_Bbolt_Get(t *testing.T) { | func Test_Bbolt_Get(t *testing.T) { | ||||||
| @@ -38,18 +51,17 @@ func Test_Bbolt_Get(t *testing.T) { | |||||||
| 	) | 	) | ||||||
|  |  | ||||||
| 	err := testStore.Set(key, val, 0) | 	err := testStore.Set(key, val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	result, err := testStore.Get(key) | 	result, err := testStore.Get(key) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| 	utils.AssertEqual(t, val, result) | 	require.Equal(t, val, result) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_Bbolt_Get_NotExist(t *testing.T) { | func Test_Bbolt_Get_NotExist(t *testing.T) { | ||||||
|  |  | ||||||
| 	result, err := testStore.Get("notexist") | 	result, err := testStore.Get("notexist") | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| 	utils.AssertEqual(t, true, len(result) == 0) | 	require.Zero(t, len(result)) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_Bbolt_Delete(t *testing.T) { | func Test_Bbolt_Delete(t *testing.T) { | ||||||
| @@ -59,43 +71,80 @@ func Test_Bbolt_Delete(t *testing.T) { | |||||||
| 	) | 	) | ||||||
|  |  | ||||||
| 	err := testStore.Set(key, val, 0) | 	err := testStore.Set(key, val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	err = testStore.Delete(key) | 	err = testStore.Delete(key) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	result, err := testStore.Get(key) | 	result, err := testStore.Get(key) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| 	utils.AssertEqual(t, true, len(result) == 0) | 	require.Zero(t, len(result)) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_Bbolt_Reset(t *testing.T) { | func Test_Bbolt_Reset(t *testing.T) { | ||||||
| 	var ( | 	val := []byte("doe") | ||||||
| 		val = []byte("doe") |  | ||||||
| 	) |  | ||||||
|  |  | ||||||
| 	err := testStore.Set("john1", val, 0) | 	err := testStore.Set("john1", val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	err = testStore.Set("john2", val, 0) | 	err = testStore.Set("john2", val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	err = testStore.Reset() | 	err = testStore.Reset() | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	result, err := testStore.Get("john1") | 	result, err := testStore.Get("john1") | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| 	utils.AssertEqual(t, true, len(result) == 0) | 	require.Zero(t, len(result)) | ||||||
|  |  | ||||||
| 	result, err = testStore.Get("john2") | 	result, err = testStore.Get("john2") | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| 	utils.AssertEqual(t, true, len(result) == 0) | 	require.Zero(t, len(result)) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_Bbolt_Close(t *testing.T) { | func Test_Bbolt_Close(t *testing.T) { | ||||||
| 	utils.AssertEqual(t, nil, testStore.Close()) | 	require.Nil(t, testStore.Close()) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_Bbolt_Conn(t *testing.T) { | func Test_Bbolt_Conn(t *testing.T) { | ||||||
| 	utils.AssertEqual(t, true, testStore.Conn() != nil) | 	require.True(t, testStore.Conn() != nil) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func Benchmark_Bbolt_Set(b *testing.B) { | ||||||
|  | 	b.ReportAllocs() | ||||||
|  | 	b.ResetTimer() | ||||||
|  |  | ||||||
|  | 	var err error | ||||||
|  | 	for i := 0; i < b.N; i++ { | ||||||
|  | 		err = testStore.Set("john", []byte("doe"), 0) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	require.NoError(b, err) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func Benchmark_Bbolt_Get(b *testing.B) { | ||||||
|  | 	err := testStore.Set("john", []byte("doe"), 0) | ||||||
|  | 	require.NoError(b, err) | ||||||
|  |  | ||||||
|  | 	b.ReportAllocs() | ||||||
|  | 	b.ResetTimer() | ||||||
|  |  | ||||||
|  | 	for i := 0; i < b.N; i++ { | ||||||
|  | 		_, err = testStore.Get("john") | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	require.NoError(b, err) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func Benchmark_Bbolt_SetAndDelete(b *testing.B) { | ||||||
|  | 	b.ReportAllocs() | ||||||
|  | 	b.ResetTimer() | ||||||
|  |  | ||||||
|  | 	var err error | ||||||
|  | 	for i := 0; i < b.N; i++ { | ||||||
|  | 		_ = testStore.Set("john", []byte("doe"), 0) | ||||||
|  | 		err = testStore.Delete("john") | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	require.NoError(b, err) | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										17
									
								
								bbolt/go.mod
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								bbolt/go.mod
									
									
									
									
									
								
							| @@ -1,10 +1,17 @@ | |||||||
| module github.com/gofiber/storage/bbolt | module github.com/gofiber/storage/bbolt/v2 | ||||||
|  |  | ||||||
| go 1.18 | go 1.19 | ||||||
|  |  | ||||||
| require ( | require ( | ||||||
| 	github.com/gofiber/utils v1.0.1 | 	github.com/gofiber/utils/v2 v2.0.0-beta.3 | ||||||
| 	go.etcd.io/bbolt v1.3.7 | 	github.com/stretchr/testify v1.8.4 | ||||||
|  | 	go.etcd.io/bbolt v1.3.8 | ||||||
| ) | ) | ||||||
|  |  | ||||||
| require golang.org/x/sys v0.4.0 // indirect | require ( | ||||||
|  | 	github.com/davecgh/go-spew v1.1.1 // indirect | ||||||
|  | 	github.com/google/uuid v1.3.1 // indirect | ||||||
|  | 	github.com/pmezard/go-difflib v1.0.0 // indirect | ||||||
|  | 	golang.org/x/sys v0.11.0 // indirect | ||||||
|  | 	gopkg.in/yaml.v3 v3.0.1 // indirect | ||||||
|  | ) | ||||||
|   | |||||||
							
								
								
									
										22
									
								
								bbolt/go.sum
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								bbolt/go.sum
									
									
									
									
									
								
							| @@ -1,10 +1,18 @@ | |||||||
| 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/gofiber/utils v1.0.1 h1:knct4cXwBipWQqFrOy1Pv6UcgPM+EXo9jDgc66V1Qio= | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||||
| github.com/gofiber/utils v1.0.1/go.mod h1:pacRFtghAE3UoknMOUiXh2Io/nLWSUHtQCi/3QASsOc= | github.com/gofiber/utils/v2 v2.0.0-beta.3 h1:pfOhUDDVjBJpkWv6C5jaDyYLvpui7zQ97zpyFFsUOKw= | ||||||
|  | github.com/gofiber/utils/v2 v2.0.0-beta.3/go.mod h1:jsl17+MsKfwJjM3ONCE9Rzji/j8XNbwjhUVTjzgfDCo= | ||||||
|  | github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= | ||||||
|  | github.com/google/uuid v1.3.1/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 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||||
| github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||||
| go.etcd.io/bbolt v1.3.7 h1:j+zJOnnEjF/kyHlDDgGnVL/AIqIJPq8UoB2GSNfkUfQ= | github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= | ||||||
| go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= | github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= | ||||||
| golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18= | go.etcd.io/bbolt v1.3.8 h1:xs88BrvEv273UsB79e0hcVrlUWmS0a8upikMFhSyAtA= | ||||||
| golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | go.etcd.io/bbolt v1.3.8/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= | ||||||
|  | golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= | ||||||
|  | golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||||
|  | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= | ||||||
|  | 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 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= | ||||||
|  | gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||||||
|   | |||||||
| @@ -1,7 +1,8 @@ | |||||||
| package bbolt | package bbolt | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"github.com/gofiber/utils" | 	"errors" | ||||||
|  | 	"github.com/gofiber/utils/v2" | ||||||
| 	"go.etcd.io/bbolt" | 	"go.etcd.io/bbolt" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| @@ -15,6 +16,11 @@ func createBucket(cfg Config, conn *bbolt.DB) error { | |||||||
|  |  | ||||||
| func removeBucket(cfg Config, conn *bbolt.DB) error { | func removeBucket(cfg Config, conn *bbolt.DB) error { | ||||||
| 	return conn.Update(func(tx *bbolt.Tx) error { | 	return conn.Update(func(tx *bbolt.Tx) error { | ||||||
| 		return tx.DeleteBucket(utils.UnsafeBytes(cfg.Bucket)) | 		err := tx.DeleteBucket(utils.UnsafeBytes(cfg.Bucket)) | ||||||
|  | 		if errors.Is(err, bbolt.ErrBucketNotFound) { | ||||||
|  | 			return nil | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		return err | ||||||
| 	}) | 	}) | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										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/coherence-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, | ||||||
|  | } | ||||||
|  | ``` | ||||||
							
								
								
									
										156
									
								
								coherence/coherence.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										156
									
								
								coherence/coherence.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,156 @@ | |||||||
|  | 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.Second | ||||||
|  | 	defaultAddress   = "localhost:1408" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | // 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:   defaultAddress, | ||||||
|  | 	Timeout:   defaultTimeout, | ||||||
|  | 	ScopeName: defaultScopeName, | ||||||
|  | 	Reset:     false, | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // New returns a new [Storage] given a [Config]. | ||||||
|  | func New(config ...Config) (*Storage, error) { | ||||||
|  | 	cfg := setupConfig(config...) | ||||||
|  |  | ||||||
|  | 	options := make([]func(session *coh.SessionOptions), 0) | ||||||
|  |  | ||||||
|  | 	// apply any config values as Coherence options | ||||||
|  | 	options = append(options, coh.WithAddress(cfg.Address)) | ||||||
|  |  | ||||||
|  | 	if cfg.TLSConfig != nil { | ||||||
|  | 		options = append(options, coh.WithTLSConfig(cfg.TLSConfig)) | ||||||
|  | 	} else { | ||||||
|  | 		options = append(options, coh.WithPlainText()) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	options = append(options, coh.WithRequestTimeout(cfg.Timeout)) | ||||||
|  |  | ||||||
|  | 	// create the Coherence session | ||||||
|  | 	session, err := coh.NewSession(context.Background(), options...) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	store, err := newCoherenceStorage(session, cfg.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 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // setupConfig sets the default config. | ||||||
|  | func setupConfig(config ...Config) Config { | ||||||
|  | 	// if nothing provided then use the default config values | ||||||
|  | 	if len(config) == 0 { | ||||||
|  | 		return DefaultConfig | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	cfg := config[0] | ||||||
|  |  | ||||||
|  | 	// Check for any invalid default values and overwrite them | ||||||
|  | 	if cfg.Address == "" { | ||||||
|  | 		cfg.Address = DefaultConfig.Address | ||||||
|  | 	} | ||||||
|  | 	if cfg.ScopeName == "" { | ||||||
|  | 		cfg.ScopeName = DefaultConfig.ScopeName | ||||||
|  | 	} | ||||||
|  | 	if cfg.Timeout == 0 { | ||||||
|  | 		cfg.Timeout = DefaultConfig.Timeout | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return cfg | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // 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() | ||||||
|  | } | ||||||
							
								
								
									
										230
									
								
								coherence/coherence_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										230
									
								
								coherence/coherence_test.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,230 @@ | |||||||
|  | package coherence | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |  * Copyright © 2023, Oracle and/or its affiliates. | ||||||
|  |  */ | ||||||
|  | import ( | ||||||
|  | 	"github.com/stretchr/testify/require" | ||||||
|  | 	"os" | ||||||
|  | 	"testing" | ||||||
|  | 	"time" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | var ( | ||||||
|  | 	key1       = "key1" | ||||||
|  | 	key2       = "key2" | ||||||
|  | 	missingKey = "missing-key" | ||||||
|  | 	value1     = []byte("value1") | ||||||
|  | 	value2     = []byte("value2") | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | var testStore *Storage | ||||||
|  |  | ||||||
|  | func TestMain(m *testing.M) { | ||||||
|  | 	testStore, _ = New(Config{ | ||||||
|  | 		Reset: true, | ||||||
|  | 	}) | ||||||
|  |  | ||||||
|  | 	code := m.Run() | ||||||
|  |  | ||||||
|  | 	_ = testStore.Close() | ||||||
|  | 	os.Exit(code) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // newTestStore returns a new Coherence Store and ensures it is reset. | ||||||
|  | func newTestStore(t testing.TB, config ...Config) (*Storage, error) { | ||||||
|  | 	t.Helper() | ||||||
|  |  | ||||||
|  | 	testStore, err := New(config...) | ||||||
|  | 	require.NoError(t, err) | ||||||
|  |  | ||||||
|  | 	err = testStore.Reset() | ||||||
|  |  | ||||||
|  | 	return testStore, err | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func Test_Coherence_Set_And_Get(t *testing.T) { | ||||||
|  | 	var val []byte | ||||||
|  |  | ||||||
|  | 	err := testStore.Set(key1, value1, 0) | ||||||
|  | 	require.NoError(t, err) | ||||||
|  |  | ||||||
|  | 	val, err = testStore.Get(key1) | ||||||
|  | 	require.NoError(t, err) | ||||||
|  | 	require.Equal(t, value1, val) | ||||||
|  |  | ||||||
|  | 	require.NotNil(t, testStore.Conn()) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func Test_Coherence_Set_Override(t *testing.T) { | ||||||
|  | 	var val []byte | ||||||
|  |  | ||||||
|  | 	err := testStore.Set(key1, value1, 0) | ||||||
|  | 	require.NoError(t, err) | ||||||
|  |  | ||||||
|  | 	err = testStore.Set(key1, value2, 0) | ||||||
|  | 	require.NoError(t, err) | ||||||
|  |  | ||||||
|  | 	val, err = testStore.Get(key1) | ||||||
|  | 	require.NoError(t, err) | ||||||
|  | 	require.Equal(t, value2, val) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func Test_Coherence_Set_With_Reset(t *testing.T) { | ||||||
|  | 	var val []byte | ||||||
|  |  | ||||||
|  | 	err := testStore.Set(key1, value1, 0) | ||||||
|  | 	require.NoError(t, err) | ||||||
|  |  | ||||||
|  | 	val, err = testStore.Get(key1) | ||||||
|  | 	require.NoError(t, err) | ||||||
|  | 	require.Equal(t, value1, val) | ||||||
|  |  | ||||||
|  | 	// get a new store but reset it, so the subsequent Get will return nil | ||||||
|  | 	testStore2, err := newTestStore(t, Config{Reset: true}) | ||||||
|  | 	require.NoError(t, err) | ||||||
|  |  | ||||||
|  | 	val, err = testStore2.Get(key1) | ||||||
|  | 	require.NoError(t, err) | ||||||
|  | 	require.True(t, len(val) == 0) | ||||||
|  |  | ||||||
|  | 	require.Equal(t, nil, testStore2.Close()) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func Test_Coherence_Set_With_Expiry(t *testing.T) { | ||||||
|  | 	var val []byte | ||||||
|  |  | ||||||
|  | 	// set with an expiry of 5 seconds | ||||||
|  | 	err := testStore.Set(key1, value1, time.Duration(5)*time.Second) | ||||||
|  | 	require.NoError(t, err) | ||||||
|  | 	time.Sleep(time.Duration(6) * time.Second) | ||||||
|  |  | ||||||
|  | 	val, err = testStore.Get(key1) | ||||||
|  | 	require.NoError(t, err) | ||||||
|  | 	require.True(t, len(val) == 0) | ||||||
|  |  | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func Test_Coherence_Get_Missing(t *testing.T) { | ||||||
|  | 	var val []byte | ||||||
|  |  | ||||||
|  | 	val, err := testStore.Get(missingKey) | ||||||
|  | 	require.NoError(t, err) | ||||||
|  | 	require.True(t, len(val) == 0) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func Test_Coherence_Reset(t *testing.T) { | ||||||
|  | 	var val []byte | ||||||
|  |  | ||||||
|  | 	err := testStore.Set(key1, value1, 0) | ||||||
|  | 	require.NoError(t, err) | ||||||
|  |  | ||||||
|  | 	err = testStore.Set(key2, value2, 0) | ||||||
|  | 	require.NoError(t, err) | ||||||
|  |  | ||||||
|  | 	// check the keys exist | ||||||
|  | 	val, err = testStore.Get(key1) | ||||||
|  | 	require.NoError(t, err) | ||||||
|  | 	require.Equal(t, value1, val) | ||||||
|  |  | ||||||
|  | 	val, err = testStore.Get(key2) | ||||||
|  | 	require.NoError(t, err) | ||||||
|  | 	require.Equal(t, value2, val) | ||||||
|  |  | ||||||
|  | 	// reset the store, this should remove both entries | ||||||
|  | 	err = testStore.Reset() | ||||||
|  |  | ||||||
|  | 	// check the keys have expired | ||||||
|  | 	val, err = testStore.Get(key1) | ||||||
|  | 	require.NoError(t, err) | ||||||
|  | 	require.True(t, len(val) == 0) | ||||||
|  |  | ||||||
|  | 	val, err = testStore.Get(key2) | ||||||
|  | 	require.NoError(t, err) | ||||||
|  | 	require.True(t, len(val) == 0) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func Test_Coherence_Set_And_Delete(t *testing.T) { | ||||||
|  | 	var val []byte | ||||||
|  |  | ||||||
|  | 	err := testStore.Set(key1, value1, 0) | ||||||
|  | 	require.NoError(t, err) | ||||||
|  |  | ||||||
|  | 	err = testStore.Delete(key1) | ||||||
|  | 	require.NoError(t, err) | ||||||
|  |  | ||||||
|  | 	// ensure the key has gone | ||||||
|  | 	val, err = testStore.Get(key1) | ||||||
|  | 	require.NoError(t, err) | ||||||
|  | 	require.True(t, len(val) == 0) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // 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"}) | ||||||
|  | 	require.NoError(t, err) | ||||||
|  |  | ||||||
|  | 	testStore2, err := newTestStore(t, Config{ScopeName: "scope2"}) | ||||||
|  | 	require.NoError(t, err) | ||||||
|  |  | ||||||
|  | 	// ensure we can put the same key with different values in each scope | ||||||
|  | 	err = testStore1.Set(key1, value1, 0) | ||||||
|  | 	require.NoError(t, err) | ||||||
|  |  | ||||||
|  | 	err = testStore2.Set(key1, value2, 0) | ||||||
|  | 	require.NoError(t, err) | ||||||
|  |  | ||||||
|  | 	// ensure the value of "key1" is different for each store | ||||||
|  | 	val, err = testStore1.Get(key1) | ||||||
|  | 	require.NoError(t, err) | ||||||
|  | 	require.Equal(t, value1, val) | ||||||
|  |  | ||||||
|  | 	val, err = testStore2.Get(key1) | ||||||
|  | 	require.NoError(t, err) | ||||||
|  | 	require.Equal(t, value2, val) | ||||||
|  |  | ||||||
|  | 	require.NoError(t, testStore1.Close()) | ||||||
|  | 	require.NoError(t, testStore2.Close()) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func Benchmark_Coherence_Set(b *testing.B) { | ||||||
|  | 	b.ReportAllocs() | ||||||
|  | 	b.ResetTimer() | ||||||
|  |  | ||||||
|  | 	var err error | ||||||
|  | 	for i := 0; i < b.N; i++ { | ||||||
|  | 		err = testStore.Set("john", []byte("doe"), 0) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	require.NoError(b, err) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func Benchmark_Coherence_Get(b *testing.B) { | ||||||
|  | 	err := testStore.Set("john", []byte("doe"), 0) | ||||||
|  | 	require.NoError(b, err) | ||||||
|  |  | ||||||
|  | 	b.ReportAllocs() | ||||||
|  | 	b.ResetTimer() | ||||||
|  |  | ||||||
|  | 	for i := 0; i < b.N; i++ { | ||||||
|  | 		_, err = testStore.Get("john") | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	require.NoError(b, err) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func Benchmark_Coherence_SetAndDelete(b *testing.B) { | ||||||
|  | 	b.ReportAllocs() | ||||||
|  | 	b.ResetTimer() | ||||||
|  |  | ||||||
|  | 	var err error | ||||||
|  | 	for i := 0; i < b.N; i++ { | ||||||
|  | 		_ = testStore.Set("john", []byte("doe"), 0) | ||||||
|  | 		err = testStore.Delete("john") | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	require.NoError(b, err) | ||||||
|  | } | ||||||
							
								
								
									
										26
									
								
								coherence/go.mod
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								coherence/go.mod
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | |||||||
|  | module github.com/gofiber/storage/coherence | ||||||
|  |  | ||||||
|  | go 1.19 | ||||||
|  |  | ||||||
|  | require ( | ||||||
|  | 	github.com/oracle/coherence-go-client v1.0.3 | ||||||
|  | 	github.com/stretchr/testify v1.8.4 | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | require ( | ||||||
|  | 	github.com/davecgh/go-spew v1.1.1 // indirect | ||||||
|  | 	github.com/kr/text v0.2.0 // indirect | ||||||
|  | 	github.com/pmezard/go-difflib v1.0.0 // indirect | ||||||
|  | 	google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 // indirect | ||||||
|  | 	gopkg.in/yaml.v3 v3.0.1 // indirect | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | require ( | ||||||
|  | 	github.com/golang/protobuf v1.5.3 // indirect | ||||||
|  | 	github.com/google/uuid v1.3.1 // indirect | ||||||
|  | 	golang.org/x/net v0.17.0 // indirect | ||||||
|  | 	golang.org/x/sys v0.13.0 // indirect | ||||||
|  | 	golang.org/x/text v0.13.0 // indirect | ||||||
|  | 	google.golang.org/grpc v1.58.3 // indirect | ||||||
|  | 	google.golang.org/protobuf v1.31.0 // indirect | ||||||
|  | ) | ||||||
							
								
								
									
										40
									
								
								coherence/go.sum
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								coherence/go.sum
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,40 @@ | |||||||
|  | github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= | ||||||
|  | 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/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/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= | ||||||
|  | github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= | ||||||
|  | github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= | ||||||
|  | github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= | ||||||
|  | github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= | ||||||
|  | github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE= | ||||||
|  | github.com/oracle/coherence-go-client v1.0.3 h1:P8Rzgo21BAaJsKzemzMCFY9I27PdKBpr5ZqrHhZ7zPg= | ||||||
|  | github.com/oracle/coherence-go-client v1.0.3/go.mod h1:IAk8etsxzhUK6YaGzbInR1LYlh+1fiG85bGpyvzY0QY= | ||||||
|  | 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/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= | ||||||
|  | github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= | ||||||
|  | golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= | ||||||
|  | golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= | ||||||
|  | golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= | ||||||
|  | golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||||
|  | golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= | ||||||
|  | golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= | ||||||
|  | golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||||
|  | google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 h1:bVf09lpb+OJbByTj913DRJioFFAjf/ZGxEz7MajTp2U= | ||||||
|  | google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= | ||||||
|  | google.golang.org/grpc v1.58.3 h1:BjnpXut1btbtgN/6sp+brB2Kbm2LjNXnidYujAVbSoQ= | ||||||
|  | google.golang.org/grpc v1.58.3/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= | ||||||
|  | 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.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= | ||||||
|  | google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= | ||||||
|  | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||||
|  | gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= | ||||||
|  | gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= | ||||||
|  | gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= | ||||||
|  | gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||||||
| @@ -1,7 +1,18 @@ | |||||||
| # Couchbase | --- | ||||||
|  | id: couchbase | ||||||
|  | title: Couchbase | ||||||
|  | --- | ||||||
|  |  | ||||||
|  |  | ||||||
|  | [](https://gofiber.io/discord) | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| A Couchbase storage driver using [couchbase/gocb](https://github.com/couchbase/gocb). | A Couchbase storage driver using [couchbase/gocb](https://github.com/couchbase/gocb). | ||||||
|  |  | ||||||
|  | **Note: Requires Go 1.19 and above** | ||||||
|  |  | ||||||
| ### Table of Contents | ### Table of Contents | ||||||
| - [Signatures](#signatures) | - [Signatures](#signatures) | ||||||
| - [Installation](#installation) | - [Installation](#installation) | ||||||
| @@ -26,13 +37,13 @@ go mod init github.com/<user>/<repo> | |||||||
| ``` | ``` | ||||||
| And then install the Couchbase implementation: | And then install the Couchbase implementation: | ||||||
| ```bash | ```bash | ||||||
| go get github.com/gofiber/storage/couchbase | go get github.com/gofiber/storage/couchbase/v2 | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| ### Examples | ### Examples | ||||||
| Import the storage package. | Import the storage package. | ||||||
| ```go | ```go | ||||||
| import "github.com/gofiber/storage/couchbase" | import "github.com/gofiber/storage/couchbase/v2" | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| You can use the following possibilities to create a storage: | You can use the following possibilities to create a storage: | ||||||
|   | |||||||
| @@ -26,7 +26,6 @@ func New(config ...Config) *Storage { | |||||||
| 		}, | 		}, | ||||||
| 		Transcoder: gocb.NewLegacyTranscoder(), | 		Transcoder: gocb.NewLegacyTranscoder(), | ||||||
| 	}) | 	}) | ||||||
|  |  | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		panic(err) | 		panic(err) | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -4,127 +4,142 @@ import ( | |||||||
| 	"testing" | 	"testing" | ||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
| 	"github.com/gofiber/utils" | 	"github.com/stretchr/testify/require" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func TestSetCouchbase_ShouldReturnNoError(t *testing.T) { | func newTestStore(t testing.TB) *Storage { | ||||||
| 	testStorage := New(Config{ | 	t.Helper() | ||||||
|  | 	return New(Config{ | ||||||
| 		Username: "admin", | 		Username: "admin", | ||||||
| 		Password: "123456", | 		Password: "123456", | ||||||
| 		Host:     "127.0.0.1:8091", | 		Host:     "127.0.0.1:8091", | ||||||
| 		Bucket:   "fiber_storage", | 		Bucket:   "fiber_storage", | ||||||
| 	}) | 	}) | ||||||
|  | } | ||||||
|  |  | ||||||
| 	err := testStorage.Set("test", []byte("test"), 0) | func TestSetCouchbase_ShouldReturnNoError(t *testing.T) { | ||||||
|  | 	testStore := newTestStore(t) | ||||||
|  |  | ||||||
| 	utils.AssertEqual(t, nil, err) | 	err := testStore.Set("test", []byte("test"), 0) | ||||||
|  |  | ||||||
|  | 	require.NoError(t, err) | ||||||
| } | } | ||||||
|  |  | ||||||
| func TestGetCouchbase_ShouldReturnNil_WhenDocumentNotFound(t *testing.T) { | func TestGetCouchbase_ShouldReturnNil_WhenDocumentNotFound(t *testing.T) { | ||||||
| 	testStorage := New(Config{ | 	testStore := newTestStore(t) | ||||||
| 		Username: "admin", |  | ||||||
| 		Password: "123456", |  | ||||||
| 		Host:     "127.0.0.1:8091", |  | ||||||
| 		Bucket:   "fiber_storage", |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	val, err := testStorage.Get("not_found_key") | 	val, err := testStore.Get("not_found_key") | ||||||
|  |  | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| 	utils.AssertEqual(t, 0, len(val)) | 	require.Zero(t, len(val)) | ||||||
| } | } | ||||||
|  |  | ||||||
| func TestSetAndGet_GetShouldReturn_SettedValueWithoutError(t *testing.T) { | func TestSetAndGet_GetShouldReturn_SetValueWithoutError(t *testing.T) { | ||||||
| 	testStorage := New(Config{ | 	testStore := newTestStore(t) | ||||||
| 		Username: "admin", |  | ||||||
| 		Password: "123456", |  | ||||||
| 		Host:     "127.0.0.1:8091", |  | ||||||
| 		Bucket:   "fiber_storage", |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	err := testStorage.Set("test", []byte("fiber_test_value"), 0) | 	err := testStore.Set("test", []byte("fiber_test_value"), 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	val, err := testStorage.Get("test") | 	val, err := testStore.Get("test") | ||||||
|  |  | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| 	utils.AssertEqual(t, val, []byte("fiber_test_value")) | 	require.Equal(t, val, []byte("fiber_test_value")) | ||||||
| } | } | ||||||
|  |  | ||||||
| func TestSetAndGet_GetShouldReturnNil_WhenTTLExpired(t *testing.T) { | func TestSetAndGet_GetShouldReturnNil_WhenTTLExpired(t *testing.T) { | ||||||
| 	testStorage := New(Config{ | 	testStore := newTestStore(t) | ||||||
| 		Username: "admin", |  | ||||||
| 		Password: "123456", |  | ||||||
| 		Host:     "127.0.0.1:8091", |  | ||||||
| 		Bucket:   "fiber_storage", |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	err := testStorage.Set("test", []byte("fiber_test_value"), 3*time.Second) | 	err := testStore.Set("test", []byte("fiber_test_value"), 3*time.Second) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	time.Sleep(6 * time.Second) | 	time.Sleep(6 * time.Second) | ||||||
|  |  | ||||||
| 	val, err := testStorage.Get("test") | 	val, err := testStore.Get("test") | ||||||
|  |  | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| 	utils.AssertEqual(t, 0, len(val)) | 	require.Zero(t, len(val)) | ||||||
| } | } | ||||||
|  |  | ||||||
| func TestSetAndDelete_DeleteShouldReturn_NoError(t *testing.T) { | func TestSetAndDelete_DeleteShouldReturn_NoError(t *testing.T) { | ||||||
| 	testStorage := New(Config{ | 	testStore := newTestStore(t) | ||||||
| 		Username: "admin", |  | ||||||
| 		Password: "123456", |  | ||||||
| 		Host:     "127.0.0.1:8091", |  | ||||||
| 		Bucket:   "fiber_storage", |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	err := testStorage.Set("test", []byte("fiber_test_value"), 0) | 	err := testStore.Set("test", []byte("fiber_test_value"), 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	err = testStorage.Delete("test") | 	err = testStore.Delete("test") | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	_, err = testStorage.Get("test") | 	_, err = testStore.Get("test") | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| } | } | ||||||
|  |  | ||||||
| func TestSetAndReset_ResetShouldReturn_NoError(t *testing.T) { | func TestSetAndReset_ResetShouldReturn_NoError(t *testing.T) { | ||||||
| 	testStorage := New(Config{ | 	testStore := newTestStore(t) | ||||||
| 		Username: "admin", |  | ||||||
| 		Password: "123456", |  | ||||||
| 		Host:     "127.0.0.1:8091", |  | ||||||
| 		Bucket:   "fiber_storage", |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	err := testStorage.Set("test", []byte("fiber_test_value"), 0) | 	err := testStore.Set("test", []byte("fiber_test_value"), 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	err = testStorage.Reset() | 	err = testStore.Reset() | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	_, err = testStorage.Get("test") | 	_, err = testStore.Get("test") | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| } | } | ||||||
|  |  | ||||||
| func TestClose_CloseShouldReturn_NoError(t *testing.T) { | func TestClose_CloseShouldReturn_NoError(t *testing.T) { | ||||||
| 	testStorage := New(Config{ | 	testStore := newTestStore(t) | ||||||
| 		Username: "admin", |  | ||||||
| 		Password: "123456", |  | ||||||
| 		Host:     "127.0.0.1:8091", |  | ||||||
| 		Bucket:   "fiber_storage", |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	err := testStorage.Close() | 	err := testStore.Close() | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| } | } | ||||||
|  |  | ||||||
| func TestGetConn_ReturnsNotNill(t *testing.T) { | func TestGetConn_ReturnsNotNil(t *testing.T) { | ||||||
| 	testStorage := New(Config{ | 	testStore := newTestStore(t) | ||||||
| 		Username: "admin", |  | ||||||
| 		Password: "123456", | 	require.True(t, testStore.Conn() != nil) | ||||||
| 		Host:     "127.0.0.1:8091", | } | ||||||
| 		Bucket:   "fiber_storage", |  | ||||||
| 	}) | func Benchmark_Couchbase_Set(b *testing.B) { | ||||||
| 	conn := testStorage.Conn() | 	testStore := newTestStore(b) | ||||||
| 	utils.AssertEqual(t, true, conn != nil) |  | ||||||
|  | 	b.ReportAllocs() | ||||||
|  | 	b.ResetTimer() | ||||||
|  |  | ||||||
|  | 	var err error | ||||||
|  | 	for i := 0; i < b.N; i++ { | ||||||
|  | 		err = testStore.Set("john", []byte("doe"), 0) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	require.NoError(b, err) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func Benchmark_Couchbase_Get(b *testing.B) { | ||||||
|  | 	testStore := newTestStore(b) | ||||||
|  |  | ||||||
|  | 	err := testStore.Set("john", []byte("doe"), 0) | ||||||
|  | 	require.NoError(b, err) | ||||||
|  |  | ||||||
|  | 	b.ReportAllocs() | ||||||
|  | 	b.ResetTimer() | ||||||
|  |  | ||||||
|  | 	for i := 0; i < b.N; i++ { | ||||||
|  | 		_, err = testStore.Get("john") | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	require.NoError(b, err) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func Benchmark_Couchbase_SetAndDelete(b *testing.B) { | ||||||
|  | 	testStore := newTestStore(b) | ||||||
|  |  | ||||||
|  | 	b.ReportAllocs() | ||||||
|  | 	b.ResetTimer() | ||||||
|  |  | ||||||
|  | 	var err error | ||||||
|  | 	for i := 0; i < b.N; i++ { | ||||||
|  | 		_ = testStore.Set("john", []byte("doe"), 0) | ||||||
|  | 		err = testStore.Delete("john") | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	require.NoError(b, err) | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,14 +1,30 @@ | |||||||
| module github.com/gofiber/storage/couchbase | module github.com/gofiber/storage/couchbase/v2 | ||||||
|  |  | ||||||
| go 1.19 | go 1.19 | ||||||
|  |  | ||||||
| require ( | require ( | ||||||
| 	github.com/couchbase/gocb/v2 v2.6.3 | 	github.com/couchbase/gocb/v2 v2.7.0 | ||||||
| 	github.com/gofiber/utils v1.1.0 | 	github.com/stretchr/testify v1.8.4 | ||||||
| ) | ) | ||||||
|  |  | ||||||
| require ( | require ( | ||||||
| 	github.com/couchbase/gocbcore/v10 v10.2.3 // indirect | 	github.com/couchbase/gocbcore/v10 v10.3.0 // indirect | ||||||
|  | 	github.com/couchbase/gocbcoreps v0.1.0 // indirect | ||||||
|  | 	github.com/couchbase/goprotostellar v1.0.0 // indirect | ||||||
|  | 	github.com/couchbaselabs/gocbconnstr/v2 v2.0.0-20230515165046-68b522a21131 // indirect | ||||||
|  | 	github.com/davecgh/go-spew v1.1.1 // indirect | ||||||
|  | 	github.com/golang/protobuf v1.5.3 // indirect | ||||||
| 	github.com/golang/snappy v0.0.4 // indirect | 	github.com/golang/snappy v0.0.4 // indirect | ||||||
| 	github.com/google/uuid v1.3.0 // indirect | 	github.com/google/uuid v1.3.1 // indirect | ||||||
|  | 	github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect | ||||||
|  | 	github.com/pmezard/go-difflib v1.0.0 // indirect | ||||||
|  | 	go.uber.org/multierr v1.11.0 // indirect | ||||||
|  | 	go.uber.org/zap v1.26.0 // indirect | ||||||
|  | 	golang.org/x/net v0.17.0 // indirect | ||||||
|  | 	golang.org/x/sys v0.13.0 // indirect | ||||||
|  | 	golang.org/x/text v0.13.0 // indirect | ||||||
|  | 	google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b // indirect | ||||||
|  | 	google.golang.org/grpc v1.59.0 // indirect | ||||||
|  | 	google.golang.org/protobuf v1.31.0 // indirect | ||||||
|  | 	gopkg.in/yaml.v3 v3.0.1 // indirect | ||||||
| ) | ) | ||||||
|   | |||||||
							
								
								
									
										154
									
								
								couchbase/go.sum
									
									
									
									
									
								
							
							
						
						
									
										154
									
								
								couchbase/go.sum
									
									
									
									
									
								
							| @@ -1,30 +1,166 @@ | |||||||
| github.com/couchbase/gocb/v2 v2.6.3 h1:5RsMo+RRfK0mVxHLAfpBz3/tHlgXZb1WBNItLk9Ab+c= | cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= | ||||||
| github.com/couchbase/gocb/v2 v2.6.3/go.mod h1:yF5F6BHTZ/ZowhEuZbySbXrlI4rHd1TIhm5azOaMbJU= | github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= | ||||||
| github.com/couchbase/gocbcore/v10 v10.2.3 h1:PEkRSNSkKjUBXx82Ucr094+anoiCG5GleOOQZOHo6D4= | github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= | ||||||
| github.com/couchbase/gocbcore/v10 v10.2.3/go.mod h1:lYQIIk+tzoMcwtwU5GzPbDdqEkwkH3isI2rkSpfL0oM= | github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= | ||||||
|  | github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= | ||||||
|  | github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= | ||||||
|  | github.com/couchbase/gocb/v2 v2.7.0 h1:zU/Eh9+RIS1TvQFiEF4JBajMm9VTjkeQssE9ov7F87c= | ||||||
|  | github.com/couchbase/gocb/v2 v2.7.0/go.mod h1:IHq/c3cnrqKq9scFQJ8OyD/xhqZ0b4mHYVH6VEMnsnw= | ||||||
|  | github.com/couchbase/gocbcore/v10 v10.3.0 h1:cu5KWP5Yq9cANw0UitpKWmb8mv9NDhC0ApIf9rMrVq8= | ||||||
|  | github.com/couchbase/gocbcore/v10 v10.3.0/go.mod h1:lYQIIk+tzoMcwtwU5GzPbDdqEkwkH3isI2rkSpfL0oM= | ||||||
|  | github.com/couchbase/gocbcoreps v0.1.0 h1:9+Qq+H/YXYn+H6f5A5MndUv40qdCwPwoJjinHolxq2g= | ||||||
|  | github.com/couchbase/gocbcoreps v0.1.0/go.mod h1:LjH33s/LNVBAwVU1Ka/YU3cLkuAyFC2dzGGiValJ5oY= | ||||||
|  | github.com/couchbase/goprotostellar v1.0.0 h1:umfH4hOxrUS/0QY1AkdoVcpp9rg7Jl+UNWzNJ3KxIHc= | ||||||
|  | github.com/couchbase/goprotostellar v1.0.0/go.mod h1:gs1eioLVOHETTFWxDY4v7Q/kRPMgqmX6t/TPcI429ls= | ||||||
| github.com/couchbaselabs/gocaves/client v0.0.0-20230307083111-cc3960c624b1/go.mod h1:AVekAZwIY2stsJOMWLAS/0uA/+qdp7pjO8EHnl61QkY= | 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 h1:2TXy68EGEzIMHOx9UvczR5ApVecwCfQZ0LjkmwMI6g4= | ||||||
| github.com/couchbaselabs/gocaves/client v0.0.0-20230404095311-05e3ba4f0259/go.mod h1:AVekAZwIY2stsJOMWLAS/0uA/+qdp7pjO8EHnl61QkY= | github.com/couchbaselabs/gocbconnstr/v2 v2.0.0-20230515165046-68b522a21131 h1:2EAfFswAfgYn3a05DVcegiw6DgMgn1Mv5eGz6IHt1Cw= | ||||||
|  | github.com/couchbaselabs/gocbconnstr/v2 v2.0.0-20230515165046-68b522a21131/go.mod h1:o7T431UOfFVHDNvMBUmUxpHnhivwv7BziUao/nMl81E= | ||||||
| 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/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= | 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/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/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= | ||||||
| github.com/gofiber/utils v1.1.0/go.mod h1:poZpsnhBykfnY1Mc0KeEa6mSHrS3dV0+oBWyeQmb2e0= | github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= | ||||||
|  | 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/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= | ||||||
|  | github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= | ||||||
|  | github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= | ||||||
|  | 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/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= | ||||||
|  | github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= | ||||||
|  | github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= | ||||||
|  | github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= | ||||||
|  | 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/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= | github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= | ||||||
| github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= | 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/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= | ||||||
|  | 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/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= | github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= | ||||||
|  | github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= | ||||||
|  | github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= | ||||||
|  | github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= | ||||||
|  | github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= | ||||||
|  | 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/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= | ||||||
|  | github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= | ||||||
|  | github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= | ||||||
|  | github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= | ||||||
|  | github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= | ||||||
|  | github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= | ||||||
|  | github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= | ||||||
|  | github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | ||||||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | 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/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||||
|  | github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= | ||||||
|  | github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= | ||||||
| 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/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | ||||||
| github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= | 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 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= | ||||||
| github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= | github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= | ||||||
|  | github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= | ||||||
|  | github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= | ||||||
|  | github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= | ||||||
|  | github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= | ||||||
| github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= | 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.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= | github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= | ||||||
|  | github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= | ||||||
|  | github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= | ||||||
|  | github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | ||||||
|  | github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | ||||||
|  | go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= | ||||||
|  | go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= | ||||||
|  | go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= | ||||||
|  | go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= | ||||||
|  | go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= | ||||||
|  | go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= | ||||||
|  | go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= | ||||||
|  | go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= | ||||||
|  | go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= | ||||||
|  | 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/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= | ||||||
|  | golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= | ||||||
|  | golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= | ||||||
|  | golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= | ||||||
|  | golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= | ||||||
|  | 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-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | ||||||
|  | golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | ||||||
|  | golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | ||||||
|  | golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= | ||||||
|  | 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.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= | ||||||
|  | golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= | ||||||
|  | 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-20181108010431-42b317875d0f/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-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-20180830151530-49385e6e1522/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-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
|  | golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
|  | golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||||
|  | golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= | ||||||
|  | golang.org/x/sys v0.13.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.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= | ||||||
|  | golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= | ||||||
|  | golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||||||
|  | golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||||||
|  | golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= | ||||||
|  | golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= | ||||||
|  | golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= | ||||||
|  | golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/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.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/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= | ||||||
|  | google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= | ||||||
|  | google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= | ||||||
|  | google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= | ||||||
|  | google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= | ||||||
|  | google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b h1:ZlWIi1wSK56/8hn4QcBp/j9M7Gt3U/3hZw3mC7vDICo= | ||||||
|  | google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:swOH3j0KzcDDgGUWr+SNpyTen5YrXjS3eyPzFYKc6lc= | ||||||
|  | google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= | ||||||
|  | google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= | ||||||
|  | google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= | ||||||
|  | google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= | ||||||
|  | google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= | ||||||
|  | google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= | ||||||
|  | google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= | ||||||
|  | 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.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= | ||||||
|  | google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= | ||||||
| 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/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= | ||||||
|  | gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||||
|  | gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||||
|  | gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||||
| gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||||||
|  | gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||||||
| gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= | gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= | ||||||
| gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||||||
|  | honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= | ||||||
|  | honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= | ||||||
|   | |||||||
| @@ -1,9 +1,19 @@ | |||||||
| # 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) | ||||||
|  |  | ||||||
| .... | **Note: Requires Go 1.19 and above** | ||||||
|  |  | ||||||
| ### Table of Contents | ### Table of Contents | ||||||
| - [Signatures](#signatures) | - [Signatures](#signatures) | ||||||
| @@ -33,13 +43,13 @@ go mod init github.com/<user>/<repo> | |||||||
| ``` | ``` | ||||||
| And then install the dynamodb implementation: | And then install the dynamodb implementation: | ||||||
| ```bash | ```bash | ||||||
| go get github.com/gofiber/storage/dynamodb | go get github.com/gofiber/storage/dynamodb/v2 | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| ### Examples | ### Examples | ||||||
| Import the storage package. | Import the storage package. | ||||||
| ```go | ```go | ||||||
| import "github.com/gofiber/storage/dynamodb" | import "github.com/gofiber/storage/dynamodb/v2" | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| You can use the following possibilities to create a storage: | You can use the following possibilities to create a storage: | ||||||
|   | |||||||
| @@ -1,13 +1,16 @@ | |||||||
| package dynamodb | package dynamodb | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
|  | 	"os" | ||||||
| 	"testing" | 	"testing" | ||||||
|  |  | ||||||
| 	"github.com/gofiber/utils" | 	"github.com/stretchr/testify/require" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| var testStore = New( | var testStore *Storage | ||||||
| 	Config{ |  | ||||||
|  | func TestMain(m *testing.M) { | ||||||
|  | 	testStore = New(Config{ | ||||||
| 		Table:    "fiber_storage", | 		Table:    "fiber_storage", | ||||||
| 		Endpoint: "http://localhost:8000/", | 		Endpoint: "http://localhost:8000/", | ||||||
| 		Region:   "us-east-1", | 		Region:   "us-east-1", | ||||||
| @@ -15,8 +18,14 @@ var testStore = New( | |||||||
| 			AccessKey:       "dummy", | 			AccessKey:       "dummy", | ||||||
| 			SecretAccessKey: "dummy", | 			SecretAccessKey: "dummy", | ||||||
| 		}, | 		}, | ||||||
| 	}, | 		Reset: true, | ||||||
| ) | 	}) | ||||||
|  |  | ||||||
|  | 	code := m.Run() | ||||||
|  |  | ||||||
|  | 	_ = testStore.Close() | ||||||
|  | 	os.Exit(code) | ||||||
|  | } | ||||||
|  |  | ||||||
| func Test_DynamoDB_Set(t *testing.T) { | func Test_DynamoDB_Set(t *testing.T) { | ||||||
| 	var ( | 	var ( | ||||||
| @@ -25,7 +34,7 @@ func Test_DynamoDB_Set(t *testing.T) { | |||||||
| 	) | 	) | ||||||
|  |  | ||||||
| 	err := testStore.Set(key, val, 0) | 	err := testStore.Set(key, val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_DynamoDB_Set_Override(t *testing.T) { | func Test_DynamoDB_Set_Override(t *testing.T) { | ||||||
| @@ -35,10 +44,10 @@ func Test_DynamoDB_Set_Override(t *testing.T) { | |||||||
| 	) | 	) | ||||||
|  |  | ||||||
| 	err := testStore.Set(key, val, 0) | 	err := testStore.Set(key, val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	err = testStore.Set(key, val, 0) | 	err = testStore.Set(key, val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_DynamoDB_Get(t *testing.T) { | func Test_DynamoDB_Get(t *testing.T) { | ||||||
| @@ -48,18 +57,17 @@ func Test_DynamoDB_Get(t *testing.T) { | |||||||
| 	) | 	) | ||||||
|  |  | ||||||
| 	err := testStore.Set(key, val, 0) | 	err := testStore.Set(key, val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	result, err := testStore.Get(key) | 	result, err := testStore.Get(key) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| 	utils.AssertEqual(t, val, result) | 	require.Equal(t, val, result) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_DynamoDB_Get_NotExist(t *testing.T) { | func Test_DynamoDB_Get_NotExist(t *testing.T) { | ||||||
|  |  | ||||||
| 	result, err := testStore.Get("notexist") | 	result, err := testStore.Get("notexist") | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| 	utils.AssertEqual(t, true, len(result) == 0) | 	require.Zero(t, len(result)) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_DynamoDB_Delete(t *testing.T) { | func Test_DynamoDB_Delete(t *testing.T) { | ||||||
| @@ -69,43 +77,80 @@ func Test_DynamoDB_Delete(t *testing.T) { | |||||||
| 	) | 	) | ||||||
|  |  | ||||||
| 	err := testStore.Set(key, val, 0) | 	err := testStore.Set(key, val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	err = testStore.Delete(key) | 	err = testStore.Delete(key) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	result, err := testStore.Get(key) | 	result, err := testStore.Get(key) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| 	utils.AssertEqual(t, true, len(result) == 0) | 	require.Zero(t, len(result)) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_DynamoDB_Reset(t *testing.T) { | func Test_DynamoDB_Reset(t *testing.T) { | ||||||
| 	var ( | 	val := []byte("doe") | ||||||
| 		val = []byte("doe") |  | ||||||
| 	) |  | ||||||
|  |  | ||||||
| 	err := testStore.Set("john1", val, 0) | 	err := testStore.Set("john1", val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	err = testStore.Set("john2", val, 0) | 	err = testStore.Set("john2", val, 0) | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	err = testStore.Reset() | 	err = testStore.Reset() | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	result, err := testStore.Get("john1") | 	result, err := testStore.Get("john1") | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| 	utils.AssertEqual(t, true, len(result) == 0) | 	require.Zero(t, len(result)) | ||||||
|  |  | ||||||
| 	result, err = testStore.Get("john2") | 	result, err = testStore.Get("john2") | ||||||
| 	utils.AssertEqual(t, nil, err) | 	require.NoError(t, err) | ||||||
| 	utils.AssertEqual(t, true, len(result) == 0) | 	require.Zero(t, len(result)) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_DynamoDB_Close(t *testing.T) { | func Test_DynamoDB_Close(t *testing.T) { | ||||||
| 	utils.AssertEqual(t, nil, testStore.Close()) | 	require.Nil(t, testStore.Close()) | ||||||
| } | } | ||||||
|  |  | ||||||
| func Test_DynamoDB_Conn(t *testing.T) { | func Test_DynamoDB_Conn(t *testing.T) { | ||||||
| 	utils.AssertEqual(t, true, testStore.Conn() != nil) | 	require.True(t, testStore.Conn() != nil) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func Benchmark_DynamoDB_Set(b *testing.B) { | ||||||
|  | 	b.ReportAllocs() | ||||||
|  | 	b.ResetTimer() | ||||||
|  |  | ||||||
|  | 	var err error | ||||||
|  | 	for i := 0; i < b.N; i++ { | ||||||
|  | 		err = testStore.Set("john", []byte("doe"), 0) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	require.NoError(b, err) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func Benchmark_DynamoDB_Get(b *testing.B) { | ||||||
|  | 	err := testStore.Set("john", []byte("doe"), 0) | ||||||
|  | 	require.NoError(b, err) | ||||||
|  |  | ||||||
|  | 	b.ReportAllocs() | ||||||
|  | 	b.ResetTimer() | ||||||
|  |  | ||||||
|  | 	for i := 0; i < b.N; i++ { | ||||||
|  | 		_, err = testStore.Get("john") | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	require.NoError(b, err) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func Benchmark_DynamoDB_SetAndDelete(b *testing.B) { | ||||||
|  | 	b.ReportAllocs() | ||||||
|  | 	b.ResetTimer() | ||||||
|  |  | ||||||
|  | 	var err error | ||||||
|  | 	for i := 0; i < b.N; i++ { | ||||||
|  | 		_ = testStore.Set("john", []byte("doe"), 0) | ||||||
|  | 		err = testStore.Delete("john") | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	require.NoError(b, err) | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,28 +1,31 @@ | |||||||
| module github.com/gofiber/storage/dynamodb | module github.com/gofiber/storage/dynamodb/v2 | ||||||
|  |  | ||||||
| go 1.17 | go 1.19 | ||||||
|  |  | ||||||
| require ( | require ( | ||||||
| 	github.com/aws/aws-sdk-go-v2 v1.18.1 | 	github.com/aws/aws-sdk-go-v2 v1.23.5 | ||||||
| 	github.com/aws/aws-sdk-go-v2/config v1.18.27 | 	github.com/aws/aws-sdk-go-v2/config v1.25.11 | ||||||
| 	github.com/aws/aws-sdk-go-v2/credentials v1.13.26 | 	github.com/aws/aws-sdk-go-v2/credentials v1.16.9 | ||||||
| 	github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.10.30 | 	github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.12.9 | ||||||
| 	github.com/aws/aws-sdk-go-v2/service/dynamodb v1.20.0 | 	github.com/aws/aws-sdk-go-v2/service/dynamodb v1.26.3 | ||||||
| 	github.com/gofiber/utils v1.1.0 | 	github.com/stretchr/testify v1.8.4 | ||||||
| ) | ) | ||||||
|  |  | ||||||
| require ( | require ( | ||||||
| 	github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.4 // indirect | 	github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.9 // indirect | ||||||
| 	github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.34 // indirect | 	github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.8 // indirect | ||||||
| 	github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.28 // indirect | 	github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.8 // indirect | ||||||
| 	github.com/aws/aws-sdk-go-v2/internal/ini v1.3.35 // indirect | 	github.com/aws/aws-sdk-go-v2/internal/ini v1.7.1 // indirect | ||||||
| 	github.com/aws/aws-sdk-go-v2/service/dynamodbstreams v1.14.14 // indirect | 	github.com/aws/aws-sdk-go-v2/service/dynamodbstreams v1.18.2 // indirect | ||||||
| 	github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.11 // indirect | 	github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.3 // indirect | ||||||
| 	github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.7.28 // indirect | 	github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.8.9 // indirect | ||||||
| 	github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.28 // indirect | 	github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.8 // indirect | ||||||
| 	github.com/aws/aws-sdk-go-v2/service/sso v1.12.12 // indirect | 	github.com/aws/aws-sdk-go-v2/service/sso v1.18.2 // indirect | ||||||
| 	github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.12 // indirect | 	github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.2 // indirect | ||||||
| 	github.com/aws/aws-sdk-go-v2/service/sts v1.19.2 // indirect | 	github.com/aws/aws-sdk-go-v2/service/sts v1.26.2 // indirect | ||||||
| 	github.com/aws/smithy-go v1.13.5 // indirect | 	github.com/aws/smithy-go v1.18.1 // indirect | ||||||
|  | 	github.com/davecgh/go-spew v1.1.1 // indirect | ||||||
| 	github.com/jmespath/go-jmespath v0.4.0 // indirect | 	github.com/jmespath/go-jmespath v0.4.0 // indirect | ||||||
|  | 	github.com/pmezard/go-difflib v1.0.0 // indirect | ||||||
|  | 	gopkg.in/yaml.v3 v3.0.1 // indirect | ||||||
| ) | ) | ||||||
|   | |||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user