mirror of
				https://github.com/gofiber/storage.git
				synced 2025-10-31 03:36:25 +08:00 
			
		
		
		
	Compare commits
	
		
			247 Commits
		
	
	
		
			bbolt/v1.3
			...
			mssql/v1.3
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 87bb8a408c | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 38c7d87300 | ||
|   | 544251e681 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 79079a1588 | ||
|   | 9b8fbbe710 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 3cf40177fb | ||
|   | d865a554b1 | ||
|   | 56366d252e | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 40d0bbcd04 | ||
|   | d536bf88ec | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 932bb5bb7c | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | bc217cf94d | ||
|   | 9cd63043c7 | ||
|   | d574b31723 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | f9f90a78aa | ||
|   | 2751b27d8e | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 763cd2a116 | ||
|   | e35c881c60 | ||
|   | 5ddd49417e | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | a536aeb484 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | d556f0600c | ||
|   | 86a070ba95 | ||
|   | 8b43d65db7 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | a442a10435 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 0f19d7e7a3 | ||
|   | 40b55f8623 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | f0a9cb7eb5 | ||
|   | baf1cd6f6f | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 363da11e66 | ||
|   | a6ed269baf | ||
|   | bdd345a093 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | c5ebba6a5f | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | f22219bc24 | ||
|   | b2c586c124 | ||
|   | d4e2e3855a | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | c14486d19c | ||
|   | 59b965453e | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 7202c98a32 | ||
|   | 4216da2c74 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | f095be3ebf | ||
|   | 6581ab3f07 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | c8ef22ea1f | ||
|   | bd32283899 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | ef180673e3 | ||
|   | 50b0432d75 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 7de9b3831a | ||
|   | cca505e8d7 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | dc1a243d40 | ||
|   | a905829b4b | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | b02409072e | ||
|   | b4a187a288 | ||
|   | afcdf55278 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 57009f9900 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 30088827f8 | ||
|   | 3cb256e558 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | cc387a31a8 | ||
|   | 255d499dd1 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 035e220e4a | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 12ef109fb1 | ||
|   | 7d72f76698 | ||
|   | 33e4902051 | ||
|   | 5bbdf2fba6 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 6f259cefd2 | ||
|   | 8ab3b8216d | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | e93f03c1e4 | ||
|   | 38c207c315 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 2bdc69ea0b | ||
|   | 6daf9a2b07 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 9f6ffa3b2e | ||
|   | e0d5aef2a3 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | b61bc913ca | ||
|   | 2ac08c9d70 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 9e37910ee5 | ||
|   | 0b8805bc3d | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | eadf410bbe | ||
|   | b735c4a72a | ||
|   | 98f78cf864 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 7d726253df | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 91824ad6c8 | ||
|   | 55dc0cf6e0 | ||
|   | 808cf6778b | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | d1c3493765 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 85c11d850d | ||
|   | 10680abda7 | ||
|   | 200738a370 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 6a8b73a2f3 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | a66b7764f6 | ||
|   | 0be1c37af5 | ||
|   | afe52a9cf8 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 6ef0db07d1 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 960163ea48 | ||
|   | ec9d4c1f18 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 7f67534357 | ||
|   | f411b856f8 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | e37cc98b6d | ||
|   | ac5787fa65 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | e7e03c2743 | ||
|   | 106c5f8f5c | ||
|   | 83edce7155 | ||
|   | dff02a2998 | ||
|   | 7769513ca5 | ||
|   | 6014de4ee7 | ||
|   | 73aedd8a72 | ||
|   | ec921b81ba | ||
|   | 6c22afe293 | ||
|   | efb747ae43 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 5028696803 | ||
|   | ae3ec197df | ||
|   | 2970f04de9 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 9d95878f07 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 0c9ddbbfc5 | ||
|   | 49733e1be3 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | c648e063d0 | ||
|   | 3822d8810c | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 0e286885a9 | ||
|   | 15dc8460b4 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | bb1d9165e4 | ||
|   | b3ad7dfa6d | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 3cc51b29df | ||
|   | 78849085f0 | ||
|   | e3320c4084 | ||
|   | 22e48de898 | ||
|   | 7e6ede5392 | ||
|   | 5a120d6807 | ||
|   | ca239f0353 | ||
|   | 6a614f832e | ||
|   | 163223d2ae | ||
|   | 5e4f21998b | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | afa1845884 | ||
|   | c5dcdeeeb9 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 0a28808076 | ||
|   | 681addbc44 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 3070b92a1a | ||
|   | 3bc82f8ba2 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 182dffbb2b | ||
|   | e6e9899fde | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 0c8ae83437 | ||
|   | 12304b6c69 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | d4821f4081 | ||
|   | f1db2b938a | ||
|   | 62a2237b12 | ||
|   | 5b601650c1 | ||
|   | 4fff115484 | ||
|   | 2030d6bedc | ||
|   | 188183f268 | ||
|   | cc594845f2 | ||
|   | c2fc6d75f2 | ||
|   | 1ab2060f49 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 91a8c49b97 | ||
|   | 8978d06c91 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 91c14686eb | ||
|   | ba8724cf5a | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 2d85619f08 | ||
|   | 051a214db7 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 1003347044 | ||
|   | b53ab6b5c6 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | df72ed55f2 | ||
|   | 08795be652 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | ec0e35123a | ||
|   | 07725d6663 | ||
|   | 83285cb60e | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 1435bb3c45 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 3860aa554d | ||
|   | f9f4ab050a | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 8488eb63a7 | ||
|   | 8a0fa4c063 | ||
|   | 47ed4c56f3 | ||
|   | 4e342e03f0 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | f63b41b577 | ||
|   | 20890304d0 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | eff3d26529 | ||
|   | 43b0074e9f | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 6aae9b8202 | ||
|   | 1d9f2399f1 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 59c66e6c28 | ||
|   | ef3d4e20a4 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 27ced8e41c | ||
|   | 2441f85244 | ||
|   | c1aaef52f7 | ||
|   | f07e641c06 | ||
|   | 14d989aaab | ||
|   | 57f18bb17e | ||
|   | 5627741945 | ||
|   | dd9a30caed | ||
|   | 478527cfe6 | ||
|   | 94187f16f7 | ||
|   | 166e7afc35 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | b63e2ec1f4 | ||
|   | 6427b9ec4c | ||
|   | 3928e84760 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | d7d4596fff | ||
|   | 277b986d51 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 70fee34609 | ||
|   | 1d9548f814 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 7236d3072e | ||
|   | ccb994294b | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 496fe74085 | ||
|   | 54de76d0a0 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 536652e4dc | ||
|   | dd26802d13 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | e8d52cf39d | ||
|   | f805f4b19d | ||
|   | 2d57c82700 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | ca00466318 | ||
|   | 826b9999b3 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 83bf2fcdd6 | ||
|   | 596f2b300a | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | f2a9a240e0 | ||
|   | 4c99d651ea | ||
|   | a003309f46 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 8556d05651 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 3db4eca735 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | a0b639e2b6 | ||
|   | c807ce6226 | ||
|   | 5201b1530f | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | d9a1c49d7f | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 7c6f5f13e4 | ||
|   | 36cad8502f | ||
|   | cfe24e69a0 | ||
|   | f27ab7a48b | ||
|   | 155991d08b | ||
|   | 8e7e1286be | ||
|   | 4b273b74cb | ||
|   | 1fc6144cc0 | ||
|   | 90e5588e5d | ||
|   | c57db8ae34 | ||
|   | 634e4f7bbb | ||
|   | 4f9889ce48 | ||
|   | 55e5545d5b | ||
|   | 8922818463 | ||
|   | 1914d5fb39 | ||
|   | 98df5fc473 | ||
|   | ae951cdfcc | ||
|   | a567590b51 | ||
|   | e76d7e56b6 | ||
|   | 6d004c4bca | ||
|   | bab82c9802 | ||
|   | 73a941a879 | ||
|   | 868c89fd7e | ||
|   | c050ff8e3d | ||
|   | 1fec873770 | ||
|   | 877dae612d | ||
|   | 5bf7da2074 | ||
|   | 9c850f5235 | ||
|   | bd837d91ab | ||
|   | c4e1c722b1 | ||
|   | 85e612ec79 | 
							
								
								
									
										79
									
								
								.github/ISSUE_TEMPLATE/bug-report.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								.github/ISSUE_TEMPLATE/bug-report.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,79 @@ | ||||
| name: "\U0001F41B Bug Report" | ||||
| title: "\U0001F41B [Bug]: " | ||||
| description: Create a bug report to help us fix it. | ||||
| labels: ["☢️ Bug"] | ||||
|  | ||||
| body: | ||||
|   - type: markdown | ||||
|     id: notice | ||||
|     attributes: | ||||
|       value: | | ||||
|         ### Notice | ||||
|         - Dont't forget you can ask your questions on our [Discord server](https://gofiber.io/discord). | ||||
|         - If you think Fiber storage don't have a nice feature that you think, open the issue with **✏️ Feature Request** template. | ||||
|         - Write your issue with clear and understandable English. | ||||
|   - type: textarea | ||||
|     id: description | ||||
|     attributes: | ||||
|       label: "Bug Description" | ||||
|       description: "A clear and detailed description of what the bug is." | ||||
|       placeholder: "Explain your problem as clear and detailed." | ||||
|     validations: | ||||
|       required: true | ||||
|   - type: textarea | ||||
|     id: how-to-reproduce | ||||
|     attributes: | ||||
|       label: How to Reproduce | ||||
|       description: "Steps to reproduce the behavior and what should be observed in the end." | ||||
|       placeholder: "Tell us step by step how we can replicate your problem and what we should see in the end." | ||||
|       value: | | ||||
|           Steps to reproduce the behavior: | ||||
|           1. Go to '....' | ||||
|           2. Click on '....' | ||||
|           3. Do '....' | ||||
|           4. See '....' | ||||
|     validations: | ||||
|       required: true | ||||
|   - type: textarea | ||||
|     id: expected-behavior | ||||
|     attributes: | ||||
|       label: Expected Behavior | ||||
|       description: "A clear and detailed description of what you think should happens." | ||||
|       placeholder: "Tell us what storage should normally do." | ||||
|     validations: | ||||
|       required: true | ||||
|   - type: input | ||||
|     id: version | ||||
|     attributes: | ||||
|       label: "Storage package Version" | ||||
|       description: "Some bugs may be fixed in future storage releases, so we have to know your storage package version." | ||||
|       placeholder: "Write your storage version. (v1.0.0, v1.1.0...)" | ||||
|     validations: | ||||
|       required: true | ||||
|   - type: textarea | ||||
|     id: snippet | ||||
|     attributes: | ||||
|       label: "Code Snippet (optional)" | ||||
|       description: "For some issues, we need to know some parts of your code." | ||||
|       placeholder: "Share a code you think related to the issue." | ||||
|       render: go | ||||
|       value: | | ||||
|         package main | ||||
|  | ||||
|         import "github.com/gofiber/storage/%package%" | ||||
|  | ||||
|         func main() { | ||||
|           // Steps to reproduce | ||||
|         } | ||||
|   - type: checkboxes | ||||
|     id: terms | ||||
|     attributes: | ||||
|       label: "Checklist:" | ||||
|       description: "By submitting this issue, you confirm that:" | ||||
|       options: | ||||
|         - label: "I agree to follow Fiber's [Code of Conduct](https://github.com/gofiber/fiber/blob/master/.github/CODE_OF_CONDUCT.md)." | ||||
|           required: true | ||||
|         - label: "I have checked for existing issues that describe my problem prior to opening this one." | ||||
|           required: true | ||||
|         - label: "I understand that improperly formatted bug reports may be closed without explanation." | ||||
|           required: true | ||||
							
								
								
									
										55
									
								
								.github/ISSUE_TEMPLATE/feature-request.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								.github/ISSUE_TEMPLATE/feature-request.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,55 @@ | ||||
| name: "\U0001F680 Feature Request" | ||||
| title: "\U0001F680 [Feature]: " | ||||
| description: Suggest an idea to improve this project. | ||||
| labels: ["✏️ Feature"] | ||||
|  | ||||
| body: | ||||
|   - type: markdown | ||||
|     id: notice | ||||
|     attributes: | ||||
|       value: | | ||||
|         ### Notice | ||||
|         - Dont't forget you can ask your questions on our [Discord server](https://gofiber.io/discord). | ||||
|         - If you think this is just a bug, open the issue with **☢️ Bug Report** template. | ||||
|         - Write your issue with clear and understandable English. | ||||
|   - type: textarea | ||||
|     id: description | ||||
|     attributes: | ||||
|       label: "Feature Description" | ||||
|       description: "A clear and detailed description of the feature we need to do." | ||||
|       placeholder: "Explain your feature as clear and detailed." | ||||
|     validations: | ||||
|       required: true | ||||
|   - type: textarea | ||||
|     id: additional-context | ||||
|     attributes: | ||||
|       label: "Additional Context (optional)" | ||||
|       description: "If you have something else to describe, write them here." | ||||
|       placeholder: "Write here what you can describe differently." | ||||
|   - type: textarea | ||||
|     id: snippet | ||||
|     attributes: | ||||
|       label: "Code Snippet (optional)" | ||||
|       description: "Code snippet may be really helpful to describe some features." | ||||
|       placeholder: "Share a code to explain the feature better." | ||||
|       render: go | ||||
|       value: | | ||||
|         package main | ||||
|  | ||||
|         import "github.com/gofiber/storage/%package%" | ||||
|  | ||||
|         func main() { | ||||
|           // Steps to reproduce | ||||
|         } | ||||
|   - type: checkboxes | ||||
|     id: terms | ||||
|     attributes: | ||||
|       label: "Checklist:" | ||||
|       description: "By submitting this issue, you confirm that:" | ||||
|       options: | ||||
|         - label: "I agree to follow Fiber's [Code of Conduct](https://github.com/gofiber/fiber/blob/master/.github/CODE_OF_CONDUCT.md)." | ||||
|           required: true | ||||
|         - label: "I have checked for existing issues that describe my suggestion prior to opening this one." | ||||
|           required: true | ||||
|         - label: "I understand that improperly formatted feature requests may be closed without explanation." | ||||
|           required: true | ||||
							
								
								
									
										50
									
								
								.github/ISSUE_TEMPLATE/question.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								.github/ISSUE_TEMPLATE/question.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,50 @@ | ||||
| name: "🤔 Question" | ||||
| title: "\U0001F917 [Question]: " | ||||
| description: Ask a question so we can help you easily. | ||||
| labels: ["🤔 Question"] | ||||
|  | ||||
| body: | ||||
|   - type: markdown | ||||
|     id: notice | ||||
|     attributes: | ||||
|       value: | | ||||
|         ### Notice | ||||
|         - Dont't forget you can ask your questions on our [Discord server](https://gofiber.io/discord). | ||||
|         - If you think this is just a bug, open the issue with **☢️ Bug Report** template. | ||||
|         - If you think Fiber storage don't have a nice feature that you think, open the issue with **✏️ Feature Request** template. | ||||
|         - Write your issue with clear and understandable English. | ||||
|   - type: textarea | ||||
|     id: description | ||||
|     attributes: | ||||
|       label: "Question Description" | ||||
|       description: "A clear and detailed description of the question." | ||||
|       placeholder: "Explain your question as clear and detailed." | ||||
|     validations: | ||||
|       required: true | ||||
|   - type: textarea | ||||
|     id: snippet | ||||
|     attributes: | ||||
|       label: "Code Snippet (optional)" | ||||
|       description: "Code snippet may be really helpful to describe some features." | ||||
|       placeholder: "Share a code to explain the feature better." | ||||
|       render: go | ||||
|       value: | | ||||
|         package main | ||||
|  | ||||
|         import "github.com/gofiber/storage/%package%" | ||||
|  | ||||
|         func main() { | ||||
|           // Steps to reproduce | ||||
|         } | ||||
|   - type: checkboxes | ||||
|     id: terms | ||||
|     attributes: | ||||
|       label: "Checklist:" | ||||
|       description: "By submitting this issue, you confirm that:" | ||||
|       options: | ||||
|         - label: "I agree to follow Fiber's [Code of Conduct](https://github.com/gofiber/fiber/blob/master/.github/CODE_OF_CONDUCT.md)." | ||||
|           required: true | ||||
|         - label: "I have checked for existing issues that describe my questions prior to opening this one." | ||||
|           required: true | ||||
|         - label: "I understand that improperly formatted questions may be closed without explanation." | ||||
|           required: true | ||||
							
								
								
									
										71
									
								
								.github/labeler.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										71
									
								
								.github/labeler.yml
									
									
									
									
										vendored
									
									
								
							| @@ -1,53 +1,20 @@ | ||||
| # Labels is an object where: | ||||
| # - keys are labels | ||||
| # - values are array of string patterns to match against title + body in issues/prs | ||||
| version: v1 | ||||
| labels: | ||||
|     '📒 Documentation': | ||||
|         - '\bdocs\b' | ||||
|         - '\bdoc:\b' | ||||
|         - '\b\[doc\]\b' | ||||
|         - '\bREADME\b' | ||||
|         - '\btypos\b' | ||||
|         - '\bcomment\b' | ||||
|         - '📚' | ||||
|         - '📒' | ||||
|         - '📝' | ||||
|         - '\bdocumentation\b' | ||||
|     '☢️ Bug': | ||||
|         - '\bfix\b' | ||||
|         - '\brace\b' | ||||
|         - '\bbug\b' | ||||
|         - '\bmissing\b' | ||||
|         - '\bcorrect\b' | ||||
|         - '🐛' | ||||
|         - '☢' | ||||
|         - '🩹' | ||||
|         - '🚨' | ||||
|     '🧹 Updates': | ||||
|         - '\bimprove\b' | ||||
|         - '\bupdate\b' | ||||
|         - '\brefactor\b' | ||||
|         - '\bdeprecated\b' | ||||
|         - '\bremove\b' | ||||
|         - '\bunused\b' | ||||
|         - '\btest\b' | ||||
|         - '⚡' | ||||
|         - '👷' | ||||
|         - '🚧' | ||||
|         - '♻️' | ||||
|         - '🎨' | ||||
|         - '🧪' | ||||
|         - '🧹' | ||||
|     '🤖 Dependencies': | ||||
|         - '\bbumb\b' | ||||
|         - '\bdependencies\b' | ||||
|         - '📦' | ||||
|         - '🤖' | ||||
|     '✏️ Feature': | ||||
|         - '\bfeature\b' | ||||
|         - '\bcreate\b' | ||||
|         - '\bimplement\b' | ||||
|         - '\badd\b' | ||||
|         - '🚀' | ||||
|         - '✨' | ||||
|         - '🔥' | ||||
|     -   label: '📒 Documentation' | ||||
|         matcher: | ||||
|             title: '\b(docs|doc:|\[doc\]|README|typos|comment|documentation)\b' | ||||
|     -   label: '☢️ Bug' | ||||
|         matcher: | ||||
|             title: '\b(fix|race|bug|missing|correct)\b' | ||||
|     -   label: '🧹 Updates' | ||||
|         matcher: | ||||
|             title: '\b(improve|update|refactor|deprecated|remove|unused|test)\b' | ||||
|     -   label: '🤖 Dependencies' | ||||
|         matcher: | ||||
|             title: '\b(bumb|bdependencies)\b' | ||||
|     -   label: '✏️ Feature' | ||||
|         matcher: | ||||
|             title: '\b(feature|create|implement|add)\b' | ||||
|     -   label: '🤔 Question' | ||||
|         matcher: | ||||
|             title: '\b(question|how)\b' | ||||
|   | ||||
							
								
								
									
										12
									
								
								.github/workflows/auto-labeler.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								.github/workflows/auto-labeler.yml
									
									
									
									
										vendored
									
									
								
							| @@ -4,13 +4,19 @@ on: | ||||
|         types: [ opened, edited, milestoned ] | ||||
|     pull_request_target: | ||||
|         types: [ opened ] | ||||
|  | ||||
| permissions: | ||||
|     contents: read | ||||
|     issues: write | ||||
|     pull-requests: write | ||||
|     statuses: write | ||||
|     checks: write | ||||
| jobs: | ||||
|     labeler: | ||||
|         runs-on: ubuntu-latest | ||||
|         if: ${{ github.actor != 'dependabot[bot]' }} | ||||
|         steps: | ||||
|             -   name: Check Labels | ||||
|                 id: labeler | ||||
|                 uses: jimschubert/labeler-action@v2 | ||||
|                 uses: fuxingloh/multi-labeler@v2 | ||||
|                 with: | ||||
|                     GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} | ||||
|                     github-token: ${{secrets.GITHUB_TOKEN}} | ||||
|   | ||||
							
								
								
									
										2
									
								
								.github/workflows/dependabot_automerge.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/dependabot_automerge.yml
									
									
									
									
										vendored
									
									
								
							| @@ -28,7 +28,7 @@ jobs: | ||||
|     steps: | ||||
|       - name: Dependabot metadata | ||||
|         id: metadata | ||||
|         uses: dependabot/fetch-metadata@v1.3.6 | ||||
|         uses: dependabot/fetch-metadata@v1.5.1 | ||||
|         with: | ||||
|           github-token: "${{ secrets.PR_TOKEN }}" | ||||
|       - name: Enable auto-merge for Dependabot PRs | ||||
|   | ||||
							
								
								
									
										4
									
								
								.github/workflows/security.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/workflows/security.yml
									
									
									
									
										vendored
									
									
								
							| @@ -12,9 +12,9 @@ jobs: | ||||
|             -   name: Fetch Repository | ||||
|                 uses: actions/checkout@v3 | ||||
|             -   name: Install Go | ||||
|                 uses: actions/setup-go@v3 | ||||
|                 uses: actions/setup-go@v4 | ||||
|                 with: | ||||
|                     go-version: '^1.17.6' | ||||
|                     go-version: '^1.17.x' | ||||
|             -   name: Install Gosec | ||||
|                 run: | | ||||
|                     export PATH=${PATH}:`go env GOPATH`/bin | ||||
|   | ||||
							
								
								
									
										8
									
								
								.github/workflows/test-arangodb.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								.github/workflows/test-arangodb.yml
									
									
									
									
										vendored
									
									
								
							| @@ -22,15 +22,13 @@ jobs: | ||||
|         strategy: | ||||
|             matrix: | ||||
|                 go-version: | ||||
|                     - 1.16.x | ||||
|                     - 1.17.x | ||||
|                     - 1.18.x | ||||
|                     - 1.19.x | ||||
|                 platform: | ||||
|                     - ubuntu-latest | ||||
|                     - windows-latest | ||||
|                     - 1.20.x | ||||
|         steps: | ||||
|             -   name: Install Go | ||||
|                 uses: actions/setup-go@v3 | ||||
|                 uses: actions/setup-go@v4 | ||||
|                 with: | ||||
|                     go-version: '${{ matrix.go-version }}' | ||||
|             -   name: Setup Golang caches | ||||
|   | ||||
							
								
								
									
										6
									
								
								.github/workflows/test-azureblob.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.github/workflows/test-azureblob.yml
									
									
									
									
										vendored
									
									
								
							| @@ -17,15 +17,13 @@ jobs: | ||||
|                 go-version: | ||||
|                     - 1.18.x | ||||
|                     - 1.19.x | ||||
|                 platform: | ||||
|                     - ubuntu-latest | ||||
|                     - windows-latest | ||||
|                     - 1.20.x | ||||
|         steps: | ||||
|         -   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 Go | ||||
|             uses: actions/setup-go@v3 | ||||
|             uses: actions/setup-go@v4 | ||||
|             with: | ||||
|                 go-version: '${{ matrix.go-version }}' | ||||
|         -   name: Setup Golang caches | ||||
|   | ||||
							
								
								
									
										8
									
								
								.github/workflows/test-badger.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								.github/workflows/test-badger.yml
									
									
									
									
										vendored
									
									
								
							| @@ -16,13 +16,11 @@ jobs: | ||||
|                 go-version: | ||||
|                     - 1.18.x | ||||
|                     - 1.19.x | ||||
|                 platform: | ||||
|                     - ubuntu-latest | ||||
|                     - windows-latest | ||||
|         runs-on: '${{ matrix.platform }}' | ||||
|                     - 1.20.x | ||||
|         runs-on: ubuntu-latest | ||||
|         steps: | ||||
|             -   name: Install Go | ||||
|                 uses: actions/setup-go@v3 | ||||
|                 uses: actions/setup-go@v4 | ||||
|                 with: | ||||
|                     go-version: '${{ matrix.go-version }}' | ||||
|             -   name: Setup Golang caches | ||||
|   | ||||
							
								
								
									
										8
									
								
								.github/workflows/test-bbolt.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								.github/workflows/test-bbolt.yml
									
									
									
									
										vendored
									
									
								
							| @@ -17,12 +17,10 @@ jobs: | ||||
|                 go-version: | ||||
|                     - 1.18.x | ||||
|                     - 1.19.x | ||||
|                 platform: | ||||
|                     - ubuntu-latest | ||||
|                     - windows-latest | ||||
|                     - 1.20.x | ||||
|         steps: | ||||
|             -   name: Install Go | ||||
|                 uses: actions/setup-go@v3 | ||||
|                 uses: actions/setup-go@v4 | ||||
|                 with: | ||||
|                     go-version: '${{ matrix.go-version }}' | ||||
|             -   name: Setup Golang caches | ||||
| @@ -44,4 +42,4 @@ jobs: | ||||
|             -   name: Fetch Repository | ||||
|                 uses: actions/checkout@v3 | ||||
|             -   name: Run Test | ||||
|                 run: cd ./bbolt && go mod tidy && go test ./... -v -race | ||||
|                 run: cd ./bbolt && go test ./... -v -race | ||||
|   | ||||
							
								
								
									
										8
									
								
								.github/workflows/test-dynamodb.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								.github/workflows/test-dynamodb.yml
									
									
									
									
										vendored
									
									
								
							| @@ -20,15 +20,13 @@ jobs: | ||||
|         strategy: | ||||
|             matrix: | ||||
|                 go-version: | ||||
|                     - 1.16.x | ||||
|                     - 1.17.x | ||||
|                     - 1.18.x | ||||
|                     - 1.19.x | ||||
|                 platform: | ||||
|                     - ubuntu-latest | ||||
|                     - windows-latest | ||||
|                     - 1.20.x | ||||
|         steps: | ||||
|             -   name: Install Go | ||||
|                 uses: actions/setup-go@v3 | ||||
|                 uses: actions/setup-go@v4 | ||||
|                 with: | ||||
|                     go-version: '${{ matrix.go-version }}' | ||||
|             -   name: Setup Golang caches | ||||
|   | ||||
							
								
								
									
										8
									
								
								.github/workflows/test-memcache.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								.github/workflows/test-memcache.yml
									
									
									
									
										vendored
									
									
								
							| @@ -20,15 +20,13 @@ jobs: | ||||
|         strategy: | ||||
|             matrix: | ||||
|                 go-version: | ||||
|                     - 1.16.x | ||||
|                     - 1.17.x | ||||
|                     - 1.18.x | ||||
|                     - 1.19.x | ||||
|                 platform: | ||||
|                     - ubuntu-latest | ||||
|                     - windows-latest | ||||
|                     - 1.20.x | ||||
|         steps: | ||||
|             -   name: Install Go | ||||
|                 uses: actions/setup-go@v3 | ||||
|                 uses: actions/setup-go@v4 | ||||
|                 with: | ||||
|                     go-version: '${{ matrix.go-version }}' | ||||
|             -   name: Setup Golang caches | ||||
|   | ||||
							
								
								
									
										9
									
								
								.github/workflows/test-mongodb.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								.github/workflows/test-mongodb.yml
									
									
									
									
										vendored
									
									
								
							| @@ -20,15 +20,13 @@ jobs: | ||||
|         strategy: | ||||
|             matrix: | ||||
|                 go-version: | ||||
|                     - 1.16.x | ||||
|                     - 1.17.x | ||||
|                     - 1.18.x | ||||
|                     - 1.19.x | ||||
|                 platform: | ||||
|                     - ubuntu-latest | ||||
|                     - windows-latest | ||||
|                     - 1.20.x | ||||
|         steps: | ||||
|             -   name: Install Go | ||||
|                 uses: actions/setup-go@v3 | ||||
|                 uses: actions/setup-go@v4 | ||||
|                 with: | ||||
|                     go-version: '${{ matrix.go-version }}' | ||||
|             -   name: Setup Golang caches | ||||
| @@ -51,3 +49,4 @@ jobs: | ||||
|                 uses: actions/checkout@v3 | ||||
|             -   name: Run Test | ||||
|                 run: cd ./mongodb && go test ./... -v -race | ||||
|  | ||||
|   | ||||
							
								
								
									
										9
									
								
								.github/workflows/test-mssql.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								.github/workflows/test-mssql.yml
									
									
									
									
										vendored
									
									
								
							| @@ -14,7 +14,7 @@ jobs: | ||||
|         runs-on: ubuntu-latest | ||||
|         services: | ||||
|             mssql: | ||||
|                 image: 'mcmoe/mssqldocker:v2019.CU4.0' | ||||
|                 image: 'mcmoe/mssqldocker:latest' | ||||
|                 ports: | ||||
|                     - '1433:1433' | ||||
|                 env: | ||||
| @@ -32,15 +32,12 @@ jobs: | ||||
|         strategy: | ||||
|             matrix: | ||||
|                 go-version: | ||||
|                     - 1.16.x | ||||
|                     - 1.18.x | ||||
|                     - 1.19.x | ||||
|                 platform: | ||||
|                     - ubuntu-latest | ||||
|                     - windows-latest | ||||
|                     - 1.20.x | ||||
|         steps: | ||||
|             -   name: Install Go | ||||
|                 uses: actions/setup-go@v3 | ||||
|                 uses: actions/setup-go@v4 | ||||
|                 with: | ||||
|                     go-version: '${{ matrix.go-version }}' | ||||
|             -   name: Setup Golang caches | ||||
|   | ||||
							
								
								
									
										8
									
								
								.github/workflows/test-mysql.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								.github/workflows/test-mysql.yml
									
									
									
									
										vendored
									
									
								
							| @@ -28,15 +28,13 @@ jobs: | ||||
|         strategy: | ||||
|             matrix: | ||||
|                 go-version: | ||||
|                     - 1.16.x | ||||
|                     - 1.17.x | ||||
|                     - 1.18.x | ||||
|                     - 1.19.x | ||||
|                 platform: | ||||
|                     - ubuntu-latest | ||||
|                     - windows-latest | ||||
|                     - 1.20.x | ||||
|         steps: | ||||
|             -   name: Install Go | ||||
|                 uses: actions/setup-go@v3 | ||||
|                 uses: actions/setup-go@v4 | ||||
|                 with: | ||||
|                     go-version: '${{ matrix.go-version }}' | ||||
|             -   name: Setup Golang caches | ||||
|   | ||||
							
								
								
									
										8
									
								
								.github/workflows/test-postgres.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								.github/workflows/test-postgres.yml
									
									
									
									
										vendored
									
									
								
							| @@ -27,15 +27,11 @@ jobs: | ||||
|         strategy: | ||||
|             matrix: | ||||
|                 go-version: | ||||
|                     - 1.16.x | ||||
|                     - 1.18.x | ||||
|                     - 1.19.x | ||||
|                 platform: | ||||
|                     - ubuntu-latest | ||||
|                     - windows-latest | ||||
|                     - 1.20.x | ||||
|         steps: | ||||
|             -   name: Install Go | ||||
|                 uses: actions/setup-go@v3 | ||||
|                 uses: actions/setup-go@v4 | ||||
|                 with: | ||||
|                     go-version: '${{ matrix.go-version }}' | ||||
|             -   name: Setup Golang caches | ||||
|   | ||||
							
								
								
									
										15
									
								
								.github/workflows/test-redis.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								.github/workflows/test-redis.yml
									
									
									
									
										vendored
									
									
								
							| @@ -18,9 +18,6 @@ jobs: | ||||
|                     - 1.18.x | ||||
|                     - 1.19.x | ||||
|                     - 1.20.x | ||||
|                 platform: | ||||
|                     - ubuntu-latest | ||||
|                     - windows-latest | ||||
|                 redis: | ||||
|                     - '6.x' | ||||
|                     - '7.x' | ||||
| @@ -43,8 +40,18 @@ jobs: | ||||
|                     --tls-key-file ./redis/tests/tls/redis.key \ | ||||
|                     --tls-ca-cert-file ./redis/tests/tls/ca.crt& | ||||
|  | ||||
|             -   name: Setup Redis Cluster | ||||
|                 uses: vishnudxb/redis-cluster@1.0.5 | ||||
|                 with: | ||||
|                     master1-port: 7000 | ||||
|                     master2-port: 7001 | ||||
|                     master3-port: 7002 | ||||
|                     slave1-port: 7003 | ||||
|                     slave2-port: 7004 | ||||
|                     slave3-port: 7005 | ||||
|  | ||||
|             -   name: Install Go | ||||
|                 uses: actions/setup-go@v3 | ||||
|                 uses: actions/setup-go@v4 | ||||
|                 with: | ||||
|                     go-version: '${{ matrix.go-version }}' | ||||
|  | ||||
|   | ||||
							
								
								
									
										8
									
								
								.github/workflows/test-ristretto.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								.github/workflows/test-ristretto.yml
									
									
									
									
										vendored
									
									
								
							| @@ -17,12 +17,10 @@ jobs: | ||||
|                 go-version: | ||||
|                     - 1.18.x | ||||
|                     - 1.19.x | ||||
|                 platform: | ||||
|                     - ubuntu-latest | ||||
|                     - windows-latest | ||||
|                     - 1.20.x | ||||
|         steps: | ||||
|         -   name: Install Go | ||||
|             uses: actions/setup-go@v3 | ||||
|             uses: actions/setup-go@v4 | ||||
|             with: | ||||
|                 go-version: '${{ matrix.go-version }}' | ||||
|         -   name: Setup Golang caches | ||||
| @@ -44,4 +42,4 @@ jobs: | ||||
|         -   name: Fetch Repository | ||||
|             uses: actions/checkout@v3 | ||||
|         -   name: Run Test | ||||
|             run: cd ./ristretto && go mod tidy && go test ./... -v -race | ||||
|             run: cd ./ristretto && go test ./... -v -race | ||||
|   | ||||
							
								
								
									
										7
									
								
								.github/workflows/test-s3.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								.github/workflows/test-s3.yml
									
									
									
									
										vendored
									
									
								
							| @@ -15,12 +15,9 @@ jobs: | ||||
|         strategy: | ||||
|             matrix: | ||||
|                 go-version: | ||||
|                     - 1.16.x | ||||
|                     - 1.18.x | ||||
|                     - 1.19.x | ||||
|                 platform: | ||||
|                     - ubuntu-latest | ||||
|                     - windows-latest | ||||
|                     - 1.20.x | ||||
|         steps: | ||||
|         -   name: Install MinIO | ||||
|             run: | | ||||
| @@ -32,7 +29,7 @@ jobs: | ||||
|  | ||||
|                 aws --endpoint-url http://127.0.0.1:9000/ s3 mb s3://testbucket | ||||
|         -   name: Install Go | ||||
|             uses: actions/setup-go@v3 | ||||
|             uses: actions/setup-go@v4 | ||||
|             with: | ||||
|                 go-version: '${{ matrix.go-version }}' | ||||
|         -   name: Setup Golang caches | ||||
|   | ||||
							
								
								
									
										10
									
								
								.github/workflows/test-sqlite3.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								.github/workflows/test-sqlite3.yml
									
									
									
									
										vendored
									
									
								
							| @@ -14,16 +14,14 @@ jobs: | ||||
|         strategy: | ||||
|             matrix: | ||||
|                 go-version: | ||||
|                     - 1.16.x | ||||
|                     - 1.17.x | ||||
|                     - 1.18.x | ||||
|                     - 1.19.x | ||||
|                 platform: | ||||
|                     - ubuntu-latest | ||||
|                     - windows-latest | ||||
|         runs-on: '${{ matrix.platform }}' | ||||
|                     - 1.20.x | ||||
|         runs-on: ubuntu-latest | ||||
|         steps: | ||||
|             -   name: Install Go | ||||
|                 uses: actions/setup-go@v3 | ||||
|                 uses: actions/setup-go@v4 | ||||
|                 with: | ||||
|                     go-version: '${{ matrix.go-version }}' | ||||
|             -   name: Setup Golang caches | ||||
|   | ||||
							
								
								
									
										10
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							| @@ -14,16 +14,14 @@ jobs: | ||||
|         strategy: | ||||
|             matrix: | ||||
|                 go-version: | ||||
|                     - 1.16.x | ||||
|                     - 1.17.x | ||||
|                     - 1.18.x | ||||
|                     - 1.19.x | ||||
|                 platform: | ||||
|                     - ubuntu-latest | ||||
|                     - windows-latest | ||||
|         runs-on: '${{ matrix.platform }}' | ||||
|                     - 1.20.x | ||||
|         runs-on: ubuntu-latest | ||||
|         steps: | ||||
|             -   name: Install Go | ||||
|                 uses: actions/setup-go@v3 | ||||
|                 uses: actions/setup-go@v4 | ||||
|                 with: | ||||
|                     go-version: '${{ matrix.go-version }}' | ||||
|             -   name: Setup Golang caches | ||||
|   | ||||
							
								
								
									
										4
									
								
								.github/workflows/vulncheck.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/workflows/vulncheck.yml
									
									
									
									
										vendored
									
									
								
							| @@ -5,9 +5,9 @@ jobs: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Install Go | ||||
|       uses: actions/setup-go@v3 | ||||
|       uses: actions/setup-go@v4 | ||||
|       with: | ||||
|         go-version: 1.19.x | ||||
|         go-version: 1.18.x | ||||
|     - name: Fetch Repository | ||||
|       uses: actions/checkout@v3 | ||||
|     - name: Install Govulncheck | ||||
|   | ||||
							
								
								
									
										186
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										186
									
								
								README.md
									
									
									
									
									
								
							| @@ -1,94 +1,92 @@ | ||||
| <p align="center"> | ||||
|   <!-- <a href="https://gofiber.io"> | ||||
|     <img alt="Fiber" height="125" src="https://raw.githubusercontent.com/gofiber/docs/master/static/fiber_v2_logo.svg"> | ||||
|    </a> | ||||
|   <br>   --> | ||||
|  | ||||
|   # 📦 Storage | ||||
|  | ||||
|   <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"> | ||||
|   </a> | ||||
|   <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"> | ||||
|   </a> | ||||
|   <a href="https://gocover.io/github.com/gofiber/storage"> | ||||
|     <img src="https://img.shields.io/badge/%F0%9F%94%8E%20gocover-97.8%25-75C46B.svg?style=flat"> | ||||
|   </a> | ||||
|   <a href="https://gofiber.io/discord"> | ||||
|     <img src="https://img.shields.io/discord/704680098577514527?style=flat&label=%F0%9F%92%AC%20discord&color=00ACD7"> | ||||
|   </a> | ||||
| </p> | ||||
|  | ||||
| Premade storage drivers that implement the [`Storage`](https://github.com/gofiber/storage/blob/main/storage.go) interface, designed to be used with various [Fiber middlewares](https://github.com/gofiber/fiber/tree/master/middleware). | ||||
|  | ||||
| ```go | ||||
| // Storage interface for communicating with different database/key-value | ||||
| // providers. Visit https://github.com/gofiber/storage for more info. | ||||
| type Storage interface { | ||||
| 	// Get gets the value for the given key. | ||||
| 	// `nil, nil` is returned when the key does not exist | ||||
| 	Get(key string) ([]byte, error) | ||||
|  | ||||
| 	// Set stores the given value for the given key along | ||||
| 	// with an expiration value, 0 means no expiration. | ||||
| 	// Empty key or value will be ignored without an error. | ||||
| 	Set(key string, val []byte, exp time.Duration) error | ||||
|  | ||||
| 	// Delete deletes the value for the given key. | ||||
| 	// It returns no error if the storage does not contain the key, | ||||
| 	Delete(key string) error | ||||
|  | ||||
| 	// Reset resets the storage and delete all keys. | ||||
| 	Reset() error | ||||
|  | ||||
| 	// Close closes the storage and will stop any running garbage | ||||
| 	// collectors and open connections. | ||||
| 	Close() error | ||||
| } | ||||
| ``` | ||||
|  | ||||
| ## 📑 Storage Implementations | ||||
|  | ||||
| * [ArangoDB](/arangodb) <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> | ||||
| * [AzureBlob](/azureblob) <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> | ||||
| * [Badger](/badger) <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> | ||||
| * [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> | ||||
| * [DynamoDB](/dynamodb) <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> | ||||
| * [Memcache](/memcache) <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> | ||||
| * [Memory](/memory) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+Local+Storage%22"> | ||||
|     <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B"> | ||||
|   </a> | ||||
| * [MongoDB](/mongodb) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+Mongodb%22"> | ||||
|     <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-mongodb.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B"> | ||||
|   </a> | ||||
| * [MSSQL](/mssql) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+MSSQL%22"> | ||||
|     <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-mssql.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B"> | ||||
|   </a> | ||||
| * [MySQL](/mysql) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+MySQL%22"> | ||||
|     <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-mysql.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B"> | ||||
|   </a> | ||||
| * [Postgres](/postgres) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+Postgres%22"> | ||||
|     <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-postgres.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B"> | ||||
|   </a> | ||||
| * [Redis](/redis) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+Redis%22"> | ||||
|     <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-redis.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B"> | ||||
|   </a> | ||||
| * [SQLite3](/sqlite3) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+Sqlite3%22"> | ||||
|     <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-sqlite3.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B"> | ||||
|   </a> | ||||
| * [S3](/s3) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+S3%22"> | ||||
|     <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-s3.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B"> | ||||
|   </a> | ||||
| <p align="center"> | ||||
|   <picture> | ||||
|     <source height="125" media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/gofiber/docs/master/static/img/logo-dark.svg"> | ||||
|     <img height="125" alt="Fiber" src="https://raw.githubusercontent.com/gofiber/docs/master/static/img/logo.svg"> | ||||
|   </picture> | ||||
|   <br> | ||||
|  | ||||
|   # 📦 Storage | ||||
|  | ||||
|   <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"> | ||||
|   </a> | ||||
|   <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"> | ||||
|   </a> | ||||
|   <a href="https://gofiber.io/discord"> | ||||
|     <img src="https://img.shields.io/discord/704680098577514527?style=flat&label=%F0%9F%92%AC%20discord&color=00ACD7"> | ||||
|   </a> | ||||
| </p> | ||||
|  | ||||
| Premade storage drivers that implement the [`Storage`](https://github.com/gofiber/storage/blob/main/storage.go) interface, designed to be used with various [Fiber middlewares](https://github.com/gofiber/fiber/tree/master/middleware). | ||||
|  | ||||
| ```go | ||||
| // Storage interface for communicating with different database/key-value | ||||
| // providers. Visit https://github.com/gofiber/storage for more info. | ||||
| type Storage interface { | ||||
| 	// Get gets the value for the given key. | ||||
| 	// `nil, nil` is returned when the key does not exist | ||||
| 	Get(key string) ([]byte, error) | ||||
|  | ||||
| 	// Set stores the given value for the given key along | ||||
| 	// with an expiration value, 0 means no expiration. | ||||
| 	// Empty key or value will be ignored without an error. | ||||
| 	Set(key string, val []byte, exp time.Duration) error | ||||
|  | ||||
| 	// Delete deletes the value for the given key. | ||||
| 	// It returns no error if the storage does not contain the key, | ||||
| 	Delete(key string) error | ||||
|  | ||||
| 	// Reset resets the storage and delete all keys. | ||||
| 	Reset() error | ||||
|  | ||||
| 	// Close closes the storage and will stop any running garbage | ||||
| 	// collectors and open connections. | ||||
| 	Close() error | ||||
| } | ||||
| ``` | ||||
|  | ||||
| ## 📑 Storage Implementations | ||||
|  | ||||
| * [ArangoDB](/arangodb) <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> | ||||
| * [AzureBlob](/azureblob) <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> | ||||
| * [Badger](/badger) <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> | ||||
| * [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> | ||||
| * [DynamoDB](/dynamodb) <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> | ||||
| * [Memcache](/memcache) <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> | ||||
| * [Memory](/memory) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+Local+Storage%22"> | ||||
|     <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B"> | ||||
|   </a> | ||||
| * [MongoDB](/mongodb) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+Mongodb%22"> | ||||
|     <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-mongodb.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B"> | ||||
|   </a> | ||||
| * [MSSQL](/mssql) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+MSSQL%22"> | ||||
|     <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-mssql.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B"> | ||||
|   </a> | ||||
| * [MySQL](/mysql) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+MySQL%22"> | ||||
|     <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-mysql.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B"> | ||||
|   </a> | ||||
| * [Postgres](/postgres) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+Postgres%22"> | ||||
|     <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-postgres.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B"> | ||||
|   </a> | ||||
| * [Redis](/redis) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+Redis%22"> | ||||
|     <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-redis.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B"> | ||||
|   </a> | ||||
| * [SQLite3](/sqlite3) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+Sqlite3%22"> | ||||
|     <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-sqlite3.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B"> | ||||
|   </a> | ||||
| * [S3](/s3) <a href="https://github.com/gofiber/storage/actions?query=workflow%3A%22Tests+S3%22"> | ||||
|     <img src="https://img.shields.io/github/actions/workflow/status/gofiber/storage/test-s3.yml?branch=main&label=%F0%9F%A7%AA%20&style=flat&color=75C46B"> | ||||
|   </a> | ||||
|   | ||||
| @@ -1,8 +1,13 @@ | ||||
| module github.com/gofiber/storage/arangodb | ||||
|  | ||||
| go 1.16 | ||||
| go 1.17 | ||||
|  | ||||
| require ( | ||||
| 	github.com/arangodb/go-driver v1.5.0 | ||||
| 	github.com/gofiber/utils v1.0.1 | ||||
| 	github.com/arangodb/go-driver v1.6.0 | ||||
| 	github.com/gofiber/utils v1.1.0 | ||||
| ) | ||||
|  | ||||
| require ( | ||||
| 	github.com/arangodb/go-velocypack v0.0.0-20200318135517-5af53c29c67e // indirect | ||||
| 	github.com/pkg/errors v0.9.1 // indirect | ||||
| ) | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| github.com/arangodb/go-driver v1.5.0 h1:PaSwAMbxGATf6M5uJpm5fvO/6FiT8ZgJIxEl+AQj6EY= | ||||
| github.com/arangodb/go-driver v1.5.0/go.mod h1:+Kn5y+rHkSpjXmYOQiBDhwSJvIhOHdNI1ODl/aqD/fc= | ||||
| github.com/arangodb/go-driver v1.6.0 h1:NFWj/idqXZxhFVueihMSI2R9NotNIsgvNfM/xmpekb4= | ||||
| github.com/arangodb/go-driver v1.6.0/go.mod h1:HQmdGkvNMVBTE3SIPSQ8T/ZddC6iwNsfMR+dDJQxIsI= | ||||
| github.com/arangodb/go-velocypack v0.0.0-20200318135517-5af53c29c67e h1:Xg+hGrY2LcQBbxd0ZFdbGSyRKTYMZCfBbw/pMJFOk1g= | ||||
| github.com/arangodb/go-velocypack v0.0.0-20200318135517-5af53c29c67e/go.mod h1:mq7Shfa/CaixoDxiyAAc5jZ6CVBAyPaNQCGS7mkj4Ho= | ||||
| github.com/coreos/go-iptables v0.6.0/go.mod h1:Qe8Bv2Xik5FyTXwgIbLAnv2sWSBmvWdFETJConOQ//Q= | ||||
| @@ -7,8 +7,8 @@ github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7 | ||||
| github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= | ||||
| github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||
| github.com/dchest/uniuri v0.0.0-20160212164326-8902c56451e9/go.mod h1:GgB8SF9nRG+GqaDtLcwJZsQFhcogVCJ79j4EdT0c2V4= | ||||
| github.com/gofiber/utils v1.0.1 h1:knct4cXwBipWQqFrOy1Pv6UcgPM+EXo9jDgc66V1Qio= | ||||
| github.com/gofiber/utils v1.0.1/go.mod h1:pacRFtghAE3UoknMOUiXh2Io/nLWSUHtQCi/3QASsOc= | ||||
| github.com/gofiber/utils v1.1.0 h1:vdEBpn7AzIUJRhe+CiTOJdUcTg4Q9RK+pEa0KPbLdrM= | ||||
| github.com/gofiber/utils v1.1.0/go.mod h1:poZpsnhBykfnY1Mc0KeEa6mSHrS3dV0+oBWyeQmb2e0= | ||||
| github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= | ||||
| github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= | ||||
| github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | ||||
| @@ -21,17 +21,33 @@ github.com/rs/zerolog v1.19.0/go.mod h1:IzD0RJ65iWH0w97OQQebJEvTZYvsCUm9WVLWBQrJ | ||||
| github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | ||||
| github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= | ||||
| github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= | ||||
| github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= | ||||
| golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= | ||||
| golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= | ||||
| golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= | ||||
| golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= | ||||
| 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-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= | ||||
| golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= | ||||
| golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= | ||||
| golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= | ||||
| golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||||
| golang.org/x/sync v0.0.0-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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| 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/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= | ||||
|   | ||||
| @@ -11,6 +11,6 @@ require ( | ||||
| 	github.com/Azure/azure-sdk-for-go/sdk/azcore v1.2.0 // indirect | ||||
| 	github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.2 // indirect | ||||
| 	github.com/google/uuid v1.3.0 // indirect | ||||
| 	golang.org/x/net v0.4.0 // indirect | ||||
| 	golang.org/x/text v0.5.0 // indirect | ||||
| 	golang.org/x/net v0.7.0 // indirect | ||||
| 	golang.org/x/text v0.7.0 // indirect | ||||
| ) | ||||
|   | ||||
| @@ -1,12 +1,8 @@ | ||||
| github.com/Azure/azure-sdk-for-go/sdk/azcore v1.2.0 h1:sVW/AFBTGyJxDaMYlq0ct3jUXTtj12tQ6zE2GZUgVQw= | ||||
| github.com/Azure/azure-sdk-for-go/sdk/azcore v1.2.0/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U= | ||||
| github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.1.0 h1:QkAcEIAKbNL4KoFr4SathZPhDhF4mVwpBMFlYjyAqy8= | ||||
| github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.1 h1:Oj853U9kG+RLTCQXpjvOnrv0WaZHxgmZz1TlLywgOPY= | ||||
| github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.1/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= | ||||
| github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.2 h1:+5VZ72z0Qan5Bog5C+ZkgSqUbeVUd9wgtHOrIKuc5b8= | ||||
| github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.2/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= | ||||
| github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.5.1 h1:BMTdr+ib5ljLa9MxTJK8x/Ds0MbBb4MfuW5BL0zMJnI= | ||||
| github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.5.1/go.mod h1:c6WvOhtmjNUWbLfOG1qxM/q0SPvQNSVJvolm+C52dIU= | ||||
| github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.6.1 h1:YvQv9Mz6T8oR5ypQOL6erY0Z5t71ak1uHV4QFokCOZk= | ||||
| github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.6.1/go.mod h1:c6WvOhtmjNUWbLfOG1qxM/q0SPvQNSVJvolm+C52dIU= | ||||
| github.com/AzureAD/microsoft-authentication-library-for-go v0.5.1 h1:BWe8a+f/t+7KY7zH2mqygeUD0t8hNFXe08p1Pb3/jKE= | ||||
| @@ -22,14 +18,10 @@ github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4 h1:Qj1ukM4GlMWXNdMBuXc | ||||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||
| github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY= | ||||
| golang.org/x/crypto v0.0.0-20220511200225-c6db032c6c88 h1:Tgea0cVUD0ivh5ADBX4WwuI12DUd2to3nCYe2eayMIw= | ||||
| golang.org/x/net v0.2.0 h1:sZfSu1wtKLGlWI4ZZayP0ck9Y73K1ynO6gqzTdBVdPU= | ||||
| golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= | ||||
| golang.org/x/net v0.4.0 h1:Q5QPcMlvfxFTAPV0+07Xz/MpK9NTXu2VDUuy0FeMfaU= | ||||
| golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= | ||||
| golang.org/x/sys v0.2.0 h1:ljd4t30dBnAvMZaQCevtY0xLLD0A+bRZXbgLMLU1F/A= | ||||
| golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg= | ||||
| golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= | ||||
| golang.org/x/text v0.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM= | ||||
| golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= | ||||
| golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= | ||||
| golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= | ||||
| golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= | ||||
| golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= | ||||
| golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= | ||||
| gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= | ||||
| gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= | ||||
|   | ||||
| @@ -4,7 +4,7 @@ go 1.18 | ||||
|  | ||||
| require ( | ||||
| 	github.com/dgraph-io/badger/v3 v3.2103.5 | ||||
| 	github.com/gofiber/utils v1.0.1 | ||||
| 	github.com/gofiber/utils v1.1.0 | ||||
| ) | ||||
|  | ||||
| require ( | ||||
| @@ -21,7 +21,7 @@ require ( | ||||
| 	github.com/klauspost/compress v1.15.12 // indirect | ||||
| 	github.com/pkg/errors v0.9.1 // indirect | ||||
| 	go.opencensus.io v0.24.0 // indirect | ||||
| 	golang.org/x/net v0.2.0 // indirect | ||||
| 	golang.org/x/sys v0.2.0 // indirect | ||||
| 	golang.org/x/net v0.7.0 // indirect | ||||
| 	golang.org/x/sys v0.5.0 // indirect | ||||
| 	google.golang.org/protobuf v1.28.1 // indirect | ||||
| ) | ||||
|   | ||||
| @@ -31,8 +31,8 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m | ||||
| github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= | ||||
| github.com/envoyproxy/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/gofiber/utils v1.0.1 h1:knct4cXwBipWQqFrOy1Pv6UcgPM+EXo9jDgc66V1Qio= | ||||
| github.com/gofiber/utils v1.0.1/go.mod h1:pacRFtghAE3UoknMOUiXh2Io/nLWSUHtQCi/3QASsOc= | ||||
| github.com/gofiber/utils v1.1.0 h1:vdEBpn7AzIUJRhe+CiTOJdUcTg4Q9RK+pEa0KPbLdrM= | ||||
| github.com/gofiber/utils v1.1.0/go.mod h1:poZpsnhBykfnY1Mc0KeEa6mSHrS3dV0+oBWyeQmb2e0= | ||||
| github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= | ||||
| github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= | ||||
| github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= | ||||
| @@ -136,8 +136,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL | ||||
| golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | ||||
| golang.org/x/net v0.0.0-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.2.0 h1:sZfSu1wtKLGlWI4ZZayP0ck9Y73K1ynO6gqzTdBVdPU= | ||||
| golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= | ||||
| golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= | ||||
| golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= | ||||
| golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= | ||||
| golang.org/x/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= | ||||
| @@ -152,8 +152,8 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w | ||||
| golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-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.2.0 h1:ljd4t30dBnAvMZaQCevtY0xLLD0A+bRZXbgLMLU1F/A= | ||||
| golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= | ||||
| golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | ||||
| golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | ||||
| golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||||
|   | ||||
| @@ -1,12 +1,28 @@ | ||||
| module github.com/gofiber/storage/dynamodb | ||||
|  | ||||
| go 1.16 | ||||
| go 1.17 | ||||
|  | ||||
| require ( | ||||
| 	github.com/aws/aws-sdk-go-v2 v1.17.4 | ||||
| 	github.com/aws/aws-sdk-go-v2/config v1.18.13 | ||||
| 	github.com/aws/aws-sdk-go-v2/credentials v1.13.13 | ||||
| 	github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.10.13 | ||||
| 	github.com/aws/aws-sdk-go-v2/service/dynamodb v1.18.3 | ||||
| 	github.com/gofiber/utils v1.0.1 | ||||
| 	github.com/aws/aws-sdk-go-v2 v1.18.0 | ||||
| 	github.com/aws/aws-sdk-go-v2/config v1.18.25 | ||||
| 	github.com/aws/aws-sdk-go-v2/credentials v1.13.24 | ||||
| 	github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.10.25 | ||||
| 	github.com/aws/aws-sdk-go-v2/service/dynamodb v1.19.7 | ||||
| 	github.com/gofiber/utils v1.1.0 | ||||
| ) | ||||
|  | ||||
| require ( | ||||
| 	github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.3 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.33 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.27 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2/internal/ini v1.3.34 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2/service/dynamodbstreams v1.14.11 // 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/endpoint-discovery v1.7.27 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.27 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2/service/sso v1.12.10 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.10 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2/service/sts v1.19.0 // indirect | ||||
| 	github.com/aws/smithy-go v1.13.5 // indirect | ||||
| 	github.com/jmespath/go-jmespath v0.4.0 // indirect | ||||
| ) | ||||
|   | ||||
| @@ -1,41 +1,41 @@ | ||||
| github.com/aws/aws-sdk-go-v2 v1.17.4 h1:wyC6p9Yfq6V2y98wfDsj6OnNQa4w2BLGCLIxzNhwOGY= | ||||
| github.com/aws/aws-sdk-go-v2 v1.17.4/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw= | ||||
| github.com/aws/aws-sdk-go-v2/config v1.18.13 h1:v0xlYqbO6/EVlM8tUn2QEOA7btQxcgidEq2JRDBPTho= | ||||
| github.com/aws/aws-sdk-go-v2/config v1.18.13/go.mod h1:r39wGSZB7wPDW1i54JyQXUpc5KsWjh5z/3S5D9eCqDg= | ||||
| github.com/aws/aws-sdk-go-v2/credentials v1.13.13 h1:zw1KAc1kl00NYd3ofVmFrb09qnYlSQMeh+fmlQRAihI= | ||||
| github.com/aws/aws-sdk-go-v2/credentials v1.13.13/go.mod h1:DW9nbIIF9MrIja0cBQrUpeWYQMSlNmP8fevLUyF9W38= | ||||
| github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.10.13 h1:l+VnL8qkVJ/89c9zSQvPdmtQc+tYnuIb4qWZrYsgTBE= | ||||
| github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.10.13/go.mod h1:tPnUO5mS3JThpwfq4Q8iPd745s7yh6fGPqDUEBw+Wv4= | ||||
| github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.22 h1:3aMfcTmoXtTZnaT86QlVaYh+BRMbvrrmZwIQ5jWqCZQ= | ||||
| github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.22/go.mod h1:YGSIJyQ6D6FjKMQh16hVFSIUD54L4F7zTGePqYMYYJU= | ||||
| github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.28 h1:r+XwaCLpIvCKjBIYy/HVZujQS9tsz5ohHG3ZIe0wKoE= | ||||
| github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.28/go.mod h1:3lwChorpIM/BhImY/hy+Z6jekmN92cXGPI1QJasVPYY= | ||||
| github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.22 h1:7AwGYXDdqRQYsluvKFmWoqpcOQJ4bH634SkYf3FNj/A= | ||||
| github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.22/go.mod h1:EqK7gVrIGAHyZItrD1D8B0ilgwMD1GiWAmbU4u/JHNk= | ||||
| github.com/aws/aws-sdk-go-v2/internal/ini v1.3.29 h1:J4xhFd6zHhdF9jPP0FQJ6WknzBboGMBNjKOv4iTuw4A= | ||||
| github.com/aws/aws-sdk-go-v2/internal/ini v1.3.29/go.mod h1:TwuqRBGzxjQJIwH16/fOZodwXt2Zxa9/cwJC5ke4j7s= | ||||
| github.com/aws/aws-sdk-go-v2/service/dynamodb v1.18.3 h1:MxOpCZ+o9+AIeQHi2ocW7H4D7p0LhEkmetETVvDnkvg= | ||||
| github.com/aws/aws-sdk-go-v2/service/dynamodb v1.18.3/go.mod h1:nkpC9xkh+3vdxmhqN8Ac10pgV14DsJDLzUsV2CcS+44= | ||||
| github.com/aws/aws-sdk-go-v2/service/dynamodbstreams v1.14.3 h1:B+bkmCnNJi194pu9aTtYUe8f4EPXafC+xfU+zciVxdg= | ||||
| github.com/aws/aws-sdk-go-v2/service/dynamodbstreams v1.14.3/go.mod h1:bRphLmXQD9Ux4jLcFEwyrWdmuPTj2Lh8VGl9wILuJII= | ||||
| github.com/aws/aws-sdk-go-v2 v1.18.0 h1:882kkTpSFhdgYRKVZ/VCgf7sd0ru57p2JCxz4/oN5RY= | ||||
| github.com/aws/aws-sdk-go-v2 v1.18.0/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw= | ||||
| github.com/aws/aws-sdk-go-v2/config v1.18.25 h1:JuYyZcnMPBiFqn87L2cRppo+rNwgah6YwD3VuyvaW6Q= | ||||
| github.com/aws/aws-sdk-go-v2/config v1.18.25/go.mod h1:dZnYpD5wTW/dQF0rRNLVypB396zWCcPiBIvdvSWHEg4= | ||||
| github.com/aws/aws-sdk-go-v2/credentials v1.13.24 h1:PjiYyls3QdCrzqUN35jMWtUK1vqVZ+zLfdOa/UPFDp0= | ||||
| github.com/aws/aws-sdk-go-v2/credentials v1.13.24/go.mod h1:jYPYi99wUOPIFi0rhiOvXeSEReVOzBqFNOX5bXYoG2o= | ||||
| github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.10.25 h1:/+Z/dCO+1QHOlCm7m9G61snvIaDRUTv/HXp+8HdESiY= | ||||
| github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.10.25/go.mod h1:JQ0HJ+3LaAKHx3uwRUAfR/tb/gOlgAGPT6mZfIq55Ec= | ||||
| github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.3 h1:jJPgroehGvjrde3XufFIJUZVK5A2L9a3KwSFgKy9n8w= | ||||
| github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.3/go.mod h1:4Q0UFP0YJf0NrsEuEYHpM9fTSEVnD16Z3uyEF7J9JGM= | ||||
| github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.33 h1:kG5eQilShqmJbv11XL1VpyDbaEJzWxd4zRiCG30GSn4= | ||||
| github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.33/go.mod h1:7i0PF1ME/2eUPFcjkVIwq+DOygHEoK92t5cDqNgYbIw= | ||||
| github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.27 h1:vFQlirhuM8lLlpI7imKOMsjdQLuN9CPi+k44F/OFVsk= | ||||
| github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.27/go.mod h1:UrHnn3QV/d0pBZ6QBAEQcqFLf8FAzLmoUfPVIueOvoM= | ||||
| github.com/aws/aws-sdk-go-v2/internal/ini v1.3.34 h1:gGLG7yKaXG02/jBlg210R7VgQIotiQntNhsCFejawx8= | ||||
| github.com/aws/aws-sdk-go-v2/internal/ini v1.3.34/go.mod h1:Etz2dj6UHYuw+Xw830KfzCfWGMzqvUTCjUj5b76GVDc= | ||||
| github.com/aws/aws-sdk-go-v2/service/dynamodb v1.19.7 h1:yb2o8oh3Y+Gg2g+wlzrWS3pB89+dHrXayT/d9cs8McU= | ||||
| github.com/aws/aws-sdk-go-v2/service/dynamodb v1.19.7/go.mod h1:1MNss6sqoIsFGisX92do/5doiUCBrN7EjhZCS/8DUjI= | ||||
| github.com/aws/aws-sdk-go-v2/service/dynamodbstreams v1.14.11 h1:WHi9VKMYGtWt2DzqeYHXzt55aflymO2EZ6axuKla8oU= | ||||
| github.com/aws/aws-sdk-go-v2/service/dynamodbstreams v1.14.11/go.mod h1:pP+91QTpJMvcFTqGky6puHrkBs8oqoB3XOCiGRDaXwI= | ||||
| github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.11 h1:y2+VQzC6Zh2ojtV2LoC0MNwHWc6qXv/j2vrQtlftkdA= | ||||
| github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.11/go.mod h1:iV4q2hsqtNECrfmlXyord9u4zyuFEJX9eLgLpSPzWA8= | ||||
| github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.7.22 h1:6zEryIiJOSk5/OcVHzkPDwzNBQ2atYCTShyA7TqkuxA= | ||||
| github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.7.22/go.mod h1:moeOz5SKfY0p6pNIChdPIQdfaUfWI67+OVe0/r6+aGY= | ||||
| github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.22 h1:LjFQf8hFuMO22HkV5VWGLBvmCLBCLPivUAmpdpnp4Vs= | ||||
| github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.22/go.mod h1:xt0Au8yPIwYXf/GYPy/vl4K3CgwhfQMYbrH7DlUUIws= | ||||
| github.com/aws/aws-sdk-go-v2/service/sso v1.12.2 h1:EN102fWY7hI5u/2FPheTrwwMHkSXfl49RYkeEnJsrCU= | ||||
| github.com/aws/aws-sdk-go-v2/service/sso v1.12.2/go.mod h1:IgV8l3sj22nQDd5qcAGY0WenwCzCphqdbFOpfktZPrI= | ||||
| github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.2 h1:f1lmlce7r13CX1BPyPqt9oh/H+uqOWc9367lDoGGwNQ= | ||||
| github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.2/go.mod h1:O1YSOg3aekZibh2SngvCRRG+cRHKKlYgxf/JBF/Kr/k= | ||||
| github.com/aws/aws-sdk-go-v2/service/sts v1.18.3 h1:s49mSnsBZEXjfGBkRfmK+nPqzT7Lt3+t2SmAKNyHblw= | ||||
| github.com/aws/aws-sdk-go-v2/service/sts v1.18.3/go.mod h1:b+psTJn33Q4qGoDaM7ZiOVVG8uVjGI6HaZ8WBHdgDgU= | ||||
| github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.7.27 h1:QmyPCRZNMR1pFbiOi9kBZWZuKrKB9LD4cxltxQk4tNE= | ||||
| github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.7.27/go.mod h1:DfuVY36ixXnsG+uTqnoLWunXAKJ4qjccoFrXUPpj+hs= | ||||
| github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.27 h1:0iKliEXAcCa2qVtRs7Ot5hItA2MsufrphbRFlz1Owxo= | ||||
| github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.27/go.mod h1:EOwBD4J4S5qYszS5/3DpkejfuK+Z5/1uzICfPaZLtqw= | ||||
| github.com/aws/aws-sdk-go-v2/service/sso v1.12.10 h1:UBQjaMTCKwyUYwiVnUt6toEJwGXsLBI6al083tpjJzY= | ||||
| github.com/aws/aws-sdk-go-v2/service/sso v1.12.10/go.mod h1:ouy2P4z6sJN70fR3ka3wD3Ro3KezSxU6eKGQI2+2fjI= | ||||
| github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.10 h1:PkHIIJs8qvq0e5QybnZoG1K/9QTrLr9OsqCIo59jOBA= | ||||
| github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.10/go.mod h1:AFvkxc8xfBe8XA+5St5XIHHrQQtkxqrRincx4hmMHOk= | ||||
| github.com/aws/aws-sdk-go-v2/service/sts v1.19.0 h1:2DQLAKDteoEDI8zpCzqBMaZlJuoE9iTYD0gFmXVax9E= | ||||
| github.com/aws/aws-sdk-go-v2/service/sts v1.19.0/go.mod h1:BgQOMsg8av8jset59jelyPW7NoZcZXLVpDsXunGDrk8= | ||||
| github.com/aws/smithy-go v1.13.5 h1:hgz0X/DX0dGqTYpGALqXJoRKRj5oQ7150i5FdTePzO8= | ||||
| github.com/aws/smithy-go v1.13.5/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= | ||||
| github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= | ||||
| github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||
| github.com/gofiber/utils v1.0.1 h1:knct4cXwBipWQqFrOy1Pv6UcgPM+EXo9jDgc66V1Qio= | ||||
| github.com/gofiber/utils v1.0.1/go.mod h1:pacRFtghAE3UoknMOUiXh2Io/nLWSUHtQCi/3QASsOc= | ||||
| github.com/gofiber/utils v1.1.0 h1:vdEBpn7AzIUJRhe+CiTOJdUcTg4Q9RK+pEa0KPbLdrM= | ||||
| github.com/gofiber/utils v1.1.0/go.mod h1:poZpsnhBykfnY1Mc0KeEa6mSHrS3dV0+oBWyeQmb2e0= | ||||
| github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= | ||||
| github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= | ||||
| github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| module github.com/gofiber/storage/memcache | ||||
|  | ||||
| go 1.16 | ||||
| go 1.17 | ||||
|  | ||||
| require ( | ||||
| 	github.com/bradfitz/gomemcache v0.0.0-20221031212613-62deef7fc822 | ||||
| 	github.com/gofiber/utils v1.0.1 | ||||
| 	github.com/gofiber/utils v1.1.0 | ||||
| ) | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| github.com/bradfitz/gomemcache v0.0.0-20221031212613-62deef7fc822 h1:hjXJeBcAMS1WGENGqDpzvmgS43oECTx8UXq31UBu0Jw= | ||||
| github.com/bradfitz/gomemcache v0.0.0-20221031212613-62deef7fc822/go.mod h1:H0wQNHz2YrLsuXOZozoeDmnHXkNCRmMW0gwFWDfEZDA= | ||||
| github.com/gofiber/utils v1.0.1 h1:knct4cXwBipWQqFrOy1Pv6UcgPM+EXo9jDgc66V1Qio= | ||||
| github.com/gofiber/utils v1.0.1/go.mod h1:pacRFtghAE3UoknMOUiXh2Io/nLWSUHtQCi/3QASsOc= | ||||
| github.com/gofiber/utils v1.1.0 h1:vdEBpn7AzIUJRhe+CiTOJdUcTg4Q9RK+pEa0KPbLdrM= | ||||
| github.com/gofiber/utils v1.1.0/go.mod h1:poZpsnhBykfnY1Mc0KeEa6mSHrS3dV0+oBWyeQmb2e0= | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| module github.com/gofiber/storage/memory | ||||
|  | ||||
| go 1.16 | ||||
| go 1.17 | ||||
|  | ||||
| require github.com/gofiber/utils v1.0.1 | ||||
| require github.com/gofiber/utils v1.1.0 | ||||
|   | ||||
| @@ -1,2 +1,2 @@ | ||||
| github.com/gofiber/utils v1.0.1 h1:knct4cXwBipWQqFrOy1Pv6UcgPM+EXo9jDgc66V1Qio= | ||||
| github.com/gofiber/utils v1.0.1/go.mod h1:pacRFtghAE3UoknMOUiXh2Io/nLWSUHtQCi/3QASsOc= | ||||
| github.com/gofiber/utils v1.1.0 h1:vdEBpn7AzIUJRhe+CiTOJdUcTg4Q9RK+pEa0KPbLdrM= | ||||
| github.com/gofiber/utils v1.1.0/go.mod h1:poZpsnhBykfnY1Mc0KeEa6mSHrS3dV0+oBWyeQmb2e0= | ||||
|   | ||||
| @@ -137,5 +137,7 @@ func (s *Storage) gc() { | ||||
|  | ||||
| // Return database client | ||||
| func (s *Storage) Conn() map[string]entry { | ||||
| 	s.mux.RLock() | ||||
| 	defer s.mux.RUnlock() | ||||
| 	return s.db | ||||
| } | ||||
|   | ||||
| @@ -1,10 +1,22 @@ | ||||
| module github.com/gofiber/storage/mongodb | ||||
|  | ||||
| go 1.16 | ||||
| go 1.17 | ||||
|  | ||||
| require ( | ||||
| 	github.com/gofiber/utils v1.0.1 | ||||
| 	github.com/golang/snappy v0.0.4 // indirect | ||||
| 	github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a // indirect | ||||
| 	go.mongodb.org/mongo-driver v1.11.2 | ||||
| 	github.com/gofiber/utils v1.1.0 | ||||
| 	go.mongodb.org/mongo-driver v1.11.6 | ||||
| ) | ||||
|  | ||||
| require ( | ||||
| 	github.com/golang/snappy v0.0.4 // indirect | ||||
| 	github.com/klauspost/compress v1.13.6 // indirect | ||||
| 	github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe // indirect | ||||
| 	github.com/pkg/errors v0.9.1 // indirect | ||||
| 	github.com/xdg-go/pbkdf2 v1.0.0 // indirect | ||||
| 	github.com/xdg-go/scram v1.1.1 // indirect | ||||
| 	github.com/xdg-go/stringprep v1.0.3 // indirect | ||||
| 	github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a // indirect | ||||
| 	golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d // indirect | ||||
| 	golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect | ||||
| 	golang.org/x/text v0.3.8 // indirect | ||||
| ) | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||
| github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= | ||||
| github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||
| github.com/gofiber/utils v1.0.1 h1:knct4cXwBipWQqFrOy1Pv6UcgPM+EXo9jDgc66V1Qio= | ||||
| github.com/gofiber/utils v1.0.1/go.mod h1:pacRFtghAE3UoknMOUiXh2Io/nLWSUHtQCi/3QASsOc= | ||||
| github.com/gofiber/utils v1.1.0 h1:vdEBpn7AzIUJRhe+CiTOJdUcTg4Q9RK+pEa0KPbLdrM= | ||||
| github.com/gofiber/utils v1.1.0/go.mod h1:poZpsnhBykfnY1Mc0KeEa6mSHrS3dV0+oBWyeQmb2e0= | ||||
| github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= | ||||
| github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= | ||||
| github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= | ||||
| @@ -35,27 +35,44 @@ github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgk | ||||
| github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= | ||||
| github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a h1:fZHgsYlfvtyqToslyjUt3VOPF4J7aK/3MPcK7xp3PDk= | ||||
| github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a/go.mod h1:ul22v+Nro/R083muKhosV54bj5niojjWZvU8xrevuH4= | ||||
| go.mongodb.org/mongo-driver v1.11.2 h1:+1v2rDQUWNcGW7/7E0Jvdz51V38XXxJfhzbV17aNHCw= | ||||
| go.mongodb.org/mongo-driver v1.11.2/go.mod h1:s7p5vEtfbeR1gYi6pnj3c3/urpbLv2T5Sfd6Rp2HBB8= | ||||
| github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= | ||||
| go.mongodb.org/mongo-driver v1.11.6 h1:XM7G6PjiGAO5betLF13BIa5TlLUUE3uJ/2Ox3Lz1K+o= | ||||
| go.mongodb.org/mongo-driver v1.11.6/go.mod h1:G9TgswdsWjX4tmDA5zfs2+6AEPpYJwqblyjsfuh8oXY= | ||||
| golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= | ||||
| golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= | ||||
| golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= | ||||
| golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d h1:sK3txAijHtOK88l68nt020reeT1ZdKLIYetKl95FzVY= | ||||
| golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= | ||||
| golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= | ||||
| 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-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= | ||||
| golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= | ||||
| golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= | ||||
| golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||||
| golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= | ||||
| golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||||
| golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 h1:uVc8UZUe6tr40fFVnUP5Oj+veunVezqYl9z7DYw9xzw= | ||||
| 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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20210423082822-04245dca01da/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/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/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.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | ||||
| golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= | ||||
| golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= | ||||
| golang.org/x/text v0.3.8 h1:nAL+RVCQ9uMn3vJZbV+MRnydTJFPf8qqY42YiA6MrqY= | ||||
| golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= | ||||
| golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||||
| golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= | ||||
| golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= | ||||
| golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= | ||||
| golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
|   | ||||
| @@ -100,6 +100,19 @@ func New(config ...Config) *Storage { | ||||
| 		panic(err) | ||||
| 	} | ||||
|  | ||||
| 	// Create unique index for the "key" field | ||||
| 	keyIndexModel := mongo.IndexModel{ | ||||
| 		Keys: bson.D{{ | ||||
| 			Key:   "key", | ||||
| 			Value: 1, | ||||
| 		}}, | ||||
| 		Options: options.Index().SetUnique(true), | ||||
| 	} | ||||
|  | ||||
| 	if _, err := col.Indexes().CreateOne(ctx, keyIndexModel); err != nil { | ||||
| 		panic(err) | ||||
| 	} | ||||
|  | ||||
| 	store := &Storage{ | ||||
| 		db:  db, | ||||
| 		col: col, | ||||
|   | ||||
| @@ -1,13 +1,14 @@ | ||||
| module github.com/gofiber/storage/mssql | ||||
|  | ||||
| go 1.16 | ||||
| go 1.18 | ||||
|  | ||||
| require ( | ||||
| 	github.com/gofiber/utils v1.0.1 | ||||
| 	github.com/microsoft/go-mssqldb v0.20.0 | ||||
| 	github.com/gofiber/utils v1.1.0 | ||||
| 	github.com/microsoft/go-mssqldb v1.1.0 | ||||
| ) | ||||
|  | ||||
| require ( | ||||
| 	github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 // indirect | ||||
| 	golang.org/x/crypto v0.3.0 // indirect | ||||
| 	github.com/golang-sql/sqlexp v0.1.0 // indirect | ||||
| 	golang.org/x/crypto v0.9.0 // indirect | ||||
| ) | ||||
|   | ||||
							
								
								
									
										81
									
								
								mssql/go.sum
									
									
									
									
									
								
							
							
						
						
									
										81
									
								
								mssql/go.sum
									
									
									
									
									
								
							| @@ -1,90 +1,89 @@ | ||||
| github.com/Azure/azure-sdk-for-go/sdk/azcore v1.0.0/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U= | ||||
| github.com/Azure/azure-sdk-for-go/sdk/azcore v1.1.2/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U= | ||||
| github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.1.0/go.mod h1:bhXu1AjYL+wutSL/kpSq6s7733q2Rb0yuot9Zgfqa/0= | ||||
| github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= | ||||
| github.com/AzureAD/microsoft-authentication-library-for-go v0.5.1/go.mod h1:Vt9sXTKwMyGcOxSmLDMnGPgqsUg7m8pe215qMLrDXw4= | ||||
| github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.0/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= | ||||
| github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0/go.mod h1:OQeznEEkTZ9OrhHJoDD8ZDq51FHgXjqtP9z6bEwBq9U= | ||||
| github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0/go.mod h1:okt5dMMTOFjX/aovMlrjvvXoPMBVSPzk9185BT0+eZM= | ||||
| github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o= | ||||
| github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||
| github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||
| github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= | ||||
| github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= | ||||
| github.com/gofiber/utils v1.0.1 h1:knct4cXwBipWQqFrOy1Pv6UcgPM+EXo9jDgc66V1Qio= | ||||
| github.com/gofiber/utils v1.0.1/go.mod h1:pacRFtghAE3UoknMOUiXh2Io/nLWSUHtQCi/3QASsOc= | ||||
| github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= | ||||
| github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= | ||||
| github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= | ||||
| github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= | ||||
| github.com/gofiber/utils v1.1.0 h1:vdEBpn7AzIUJRhe+CiTOJdUcTg4Q9RK+pEa0KPbLdrM= | ||||
| github.com/gofiber/utils v1.1.0/go.mod h1:poZpsnhBykfnY1Mc0KeEa6mSHrS3dV0+oBWyeQmb2e0= | ||||
| github.com/golang-jwt/jwt/v4 v4.4.3/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= | ||||
| github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= | ||||
| github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 h1:au07oEsX2xN0ktxqI+Sida1w446QrXBRJ0nee3SNZlA= | ||||
| github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= | ||||
| github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A= | ||||
| github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EOqtpKwwwHI= | ||||
| github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= | ||||
| github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= | ||||
| github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= | ||||
| github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= | ||||
| github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= | ||||
| github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= | ||||
| github.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs= | ||||
| github.com/jcmturner/dnsutils/v2 v2.0.0/go.mod h1:b0TnjGOvI/n42bZa+hmXL+kFJZsFT7G4t3HTlQ184QM= | ||||
| github.com/jcmturner/gofork v1.0.0/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o= | ||||
| github.com/jcmturner/gofork v1.7.6/go.mod h1:1622LH6i/EZqLloHfE7IeZ0uEJwMSUyQ/nDd82IeqRo= | ||||
| github.com/jcmturner/goidentity/v6 v6.0.1/go.mod h1:X1YW3bgtvwAXju7V3LCIMpY0Gbxyjn/mY9zx4tFonSg= | ||||
| github.com/jcmturner/gokrb5/v8 v8.4.2/go.mod h1:sb+Xq/fTY5yktf/VxLsE3wlfPqQjp0aWNYyvBVK62bc= | ||||
| github.com/jcmturner/gokrb5/v8 v8.4.4/go.mod h1:1btQEpgT6k+unzCwX1KdWMEwPPkkgBtP+F6aCACiMrs= | ||||
| github.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc= | ||||
| github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= | ||||
| github.com/microsoft/go-mssqldb v0.20.0 h1:jAfvs5TIR311fEuNgohFzMtUO0IcCHyI1kWAVws4ES8= | ||||
| github.com/microsoft/go-mssqldb v0.20.0/go.mod h1:ukJCBnnzLzpVF0qYRT+eg1e+eSwjeQ7IvenUv8QPook= | ||||
| github.com/microsoft/go-mssqldb v1.1.0 h1:jsV+tpvcPTbNNKW0o3kiCD69kOHICsfjZ2VcVu2lKYc= | ||||
| github.com/microsoft/go-mssqldb v1.1.0/go.mod h1:LzkFdl4z2Ck+Hi+ycGOTbL56VEfgoyA2DvYejrNGbRk= | ||||
| github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= | ||||
| github.com/montanaflynn/stats v0.6.6/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= | ||||
| github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4/go.mod h1:N6UoU20jOqggOuDwUaBQpluzLNDqif3kq9z2wpdYEfQ= | ||||
| github.com/montanaflynn/stats v0.7.0/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= | ||||
| github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= | ||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||
| github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | ||||
| github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= | ||||
| github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= | ||||
| github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= | ||||
| github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= | ||||
| 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.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= | ||||
| github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= | ||||
| github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= | ||||
| golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= | ||||
| golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= | ||||
| golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= | ||||
| golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= | ||||
| golang.org/x/crypto v0.0.0-20220511200225-c6db032c6c88/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= | ||||
| golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= | ||||
| golang.org/x/crypto v0.3.0 h1:a06MkbcxBrEFc0w0QIZWXrH/9cCX6KJyWbBOIwAn+7A= | ||||
| golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= | ||||
| golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= | ||||
| golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= | ||||
| golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g= | ||||
| golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= | ||||
| golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= | ||||
| golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= | ||||
| golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= | ||||
| golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | ||||
| golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | ||||
| golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= | ||||
| golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= | ||||
| golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= | ||||
| golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= | ||||
| golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= | ||||
| golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= | ||||
| golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= | ||||
| golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= | ||||
| golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= | ||||
| golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= | ||||
| 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/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||||
| golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | ||||
| golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20210423082822-04245dca01da/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-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/sys v0.0.0-20220224120231-95c6836cb0e7/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.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/sys v0.8.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.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= | ||||
| golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= | ||||
| golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= | ||||
| golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= | ||||
| 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.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | ||||
| golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= | ||||
| golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= | ||||
| golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= | ||||
| golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= | ||||
| golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= | ||||
| golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||||
| golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= | ||||
| golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= | ||||
| golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= | ||||
| 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/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce h1:+JknDZhAj8YMt7GC73Ei8pv4MzjDUNPHgQWJdtMAaDU= | ||||
| @@ -94,4 +93,4 @@ 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.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= | ||||
| 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/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| module github.com/gofiber/storage/mysql | ||||
|  | ||||
| go 1.16 | ||||
| go 1.17 | ||||
|  | ||||
| require ( | ||||
| 	github.com/go-sql-driver/mysql v1.7.0 | ||||
| 	github.com/gofiber/utils v1.0.1 | ||||
| 	github.com/go-sql-driver/mysql v1.7.1 | ||||
| 	github.com/gofiber/utils v1.1.0 | ||||
| ) | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| github.com/go-sql-driver/mysql v1.7.0 h1:ueSltNNllEqE3qcWBTD0iQd3IpL/6U+mJxLkazJ7YPc= | ||||
| github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= | ||||
| github.com/gofiber/utils v1.0.1 h1:knct4cXwBipWQqFrOy1Pv6UcgPM+EXo9jDgc66V1Qio= | ||||
| github.com/gofiber/utils v1.0.1/go.mod h1:pacRFtghAE3UoknMOUiXh2Io/nLWSUHtQCi/3QASsOc= | ||||
| github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= | ||||
| github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= | ||||
| github.com/gofiber/utils v1.1.0 h1:vdEBpn7AzIUJRhe+CiTOJdUcTg4Q9RK+pEa0KPbLdrM= | ||||
| github.com/gofiber/utils v1.1.0/go.mod h1:poZpsnhBykfnY1Mc0KeEa6mSHrS3dV0+oBWyeQmb2e0= | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| # Postgres | ||||
|  | ||||
| A Postgres storage driver using [lib/pq](https://github.com/lib/pq). | ||||
| A Postgres storage driver using [jackc/pgx](https://github.com/jackc/pgx). | ||||
|  | ||||
| ### Table of Contents | ||||
| - [Signatures](#signatures) | ||||
| @@ -17,7 +17,7 @@ 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() *sql.DB | ||||
| func (s *Storage) Conn() *pgxpool.Pool | ||||
| ``` | ||||
| ### Installation | ||||
| Postgres is tested on the 2 last [Go versions](https://golang.org/dl/) with support for modules. So make sure to initialize one first if you didn't do that yet: | ||||
| @@ -26,13 +26,13 @@ go mod init github.com/<user>/<repo> | ||||
| ``` | ||||
| And then install the postgres implementation: | ||||
| ```bash | ||||
| go get github.com/gofiber/storage/postgres | ||||
| go get github.com/gofiber/storage/postgres/v2 | ||||
| ``` | ||||
|  | ||||
| ### Examples | ||||
| Import the storage package. | ||||
| ```go | ||||
| import "github.com/gofiber/storage/postgres" | ||||
| import "github.com/gofiber/storage/postgres/v2" | ||||
| ``` | ||||
|  | ||||
| You can use the following possibilities to create a storage: | ||||
| @@ -42,20 +42,10 @@ store := postgres.New() | ||||
|  | ||||
| // Initialize custom config | ||||
| store := postgres.New(postgres.Config{ | ||||
| 	Host:            "127.0.0.1", | ||||
| 	Port:            5432, | ||||
| 	Database:        "fiber", | ||||
| 	Db:              dbPool, | ||||
| 	Table:           "fiber_storage", | ||||
| 	Reset:           false, | ||||
| 	GCInterval:      10 * time.Second, | ||||
| 	SslMode:         "disable", | ||||
| }) | ||||
|  | ||||
| // Initialize custom config using connection string | ||||
| store := postgres.New(postgres.Config{ | ||||
| 	ConnectionURI:   "postgresql://user:password@localhost:5432/fiber" | ||||
| 	Reset:           false, | ||||
| 	GCInterval:      10 * time.Second, | ||||
| }) | ||||
| ``` | ||||
|  | ||||
| @@ -63,6 +53,11 @@ store := postgres.New(postgres.Config{ | ||||
| ```go | ||||
| // Config defines the config for storage. | ||||
| type Config struct { | ||||
| 	// DB pgxpool.Pool object will override connection uri and other connection fields | ||||
| 	// | ||||
| 	// Optional. Default is nil | ||||
| 	DB *pgxpool.Pool | ||||
|  | ||||
| 	// Connection string to use for DB. Will override all other authentication values if used | ||||
| 	// | ||||
| 	// Optional. Default is "" | ||||
| @@ -98,6 +93,11 @@ type Config struct { | ||||
| 	// Optional. Default is "fiber_storage" | ||||
| 	Table string | ||||
|  | ||||
| 	// The SSL mode for the connection | ||||
| 	// | ||||
| 	// Optional. Default is "disable" | ||||
| 	SSLMode string | ||||
|  | ||||
| 	// Reset clears any existing keys in existing Table | ||||
| 	// | ||||
| 	// Optional. Default is false | ||||
| @@ -107,24 +107,20 @@ type Config struct { | ||||
| 	// | ||||
| 	// Optional. Default is 10 * time.Second | ||||
| 	GCInterval time.Duration | ||||
|  | ||||
| 	// The SSL mode for the connection | ||||
| 	// | ||||
| 	// Optional. Default is "disable" | ||||
| 	SslMode string | ||||
| } | ||||
| ``` | ||||
|  | ||||
| ### Default Config | ||||
| ```go | ||||
| // ConfigDefault is the default config | ||||
| var ConfigDefault = Config{ | ||||
| 	ConnectionURI:   "", | ||||
| 	Host:            "127.0.0.1", | ||||
| 	Port:            5432, | ||||
| 	Database:        "fiber", | ||||
| 	Table:           "fiber_storage", | ||||
| 	Reset:           false, | ||||
| 	GCInterval:      10 * time.Second, | ||||
| 	SslMode:         "disable", | ||||
| 	ConnectionURI: "", | ||||
| 	Host:          "127.0.0.1", | ||||
| 	Port:          5432, | ||||
| 	Database:      "fiber", | ||||
| 	Table:         "fiber_storage", | ||||
| 	SSLMode:       "disable", | ||||
| 	Reset:         false, | ||||
| 	GCInterval:    10 * time.Second, | ||||
| } | ||||
| ``` | ||||
|   | ||||
| @@ -1,11 +1,21 @@ | ||||
| package postgres | ||||
|  | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"net/url" | ||||
| 	"strings" | ||||
| 	"time" | ||||
|  | ||||
| 	"github.com/jackc/pgx/v5/pgxpool" | ||||
| ) | ||||
|  | ||||
| // Config defines the config for storage. | ||||
| type Config struct { | ||||
| 	// DB pgxpool.Pool object will override connection uri and other connection fields | ||||
| 	// | ||||
| 	// Optional. Default is nil | ||||
| 	DB *pgxpool.Pool | ||||
|  | ||||
| 	// Connection string to use for DB. Will override all other authentication values if used | ||||
| 	// | ||||
| 	// Optional. Default is "" | ||||
| @@ -44,7 +54,7 @@ type Config struct { | ||||
| 	// The SSL mode for the connection | ||||
| 	// | ||||
| 	// Optional. Default is "disable" | ||||
| 	SslMode string | ||||
| 	SSLMode string | ||||
|  | ||||
| 	// Reset clears any existing keys in existing Table | ||||
| 	// | ||||
| @@ -55,57 +65,50 @@ type Config struct { | ||||
| 	// | ||||
| 	// Optional. Default is 10 * time.Second | ||||
| 	GCInterval time.Duration | ||||
|  | ||||
| 	//////////////////////////////////// | ||||
| 	// Adaptor related config options // | ||||
| 	//////////////////////////////////// | ||||
|  | ||||
| 	// Maximum wait for connection, in seconds. Zero or | ||||
| 	// n < 0 means wait indefinitely. | ||||
| 	timeout time.Duration | ||||
|  | ||||
| 	// The maximum number of connections in the idle connection pool. | ||||
| 	// | ||||
| 	// If MaxOpenConns is greater than 0 but less than the new MaxIdleConns, | ||||
| 	// then the new MaxIdleConns will be reduced to match the MaxOpenConns limit. | ||||
| 	// | ||||
| 	// If n <= 0, no idle connections are retained. | ||||
| 	// | ||||
| 	// The default max idle connections is currently 2. This may change in | ||||
| 	// a future release. | ||||
| 	maxIdleConns int | ||||
|  | ||||
| 	// The maximum number of open connections to the database. | ||||
| 	// | ||||
| 	// If MaxIdleConns is greater than 0 and the new MaxOpenConns is less than | ||||
| 	// MaxIdleConns, then MaxIdleConns will be reduced to match the new | ||||
| 	// MaxOpenConns limit. | ||||
| 	// | ||||
| 	// If n <= 0, then there is no limit on the number of open connections. | ||||
| 	// The default is 0 (unlimited). | ||||
| 	maxOpenConns int | ||||
|  | ||||
| 	// The maximum amount of time a connection may be reused. | ||||
| 	// | ||||
| 	// Expired connections may be closed lazily before reuse. | ||||
| 	// | ||||
| 	// If d <= 0, connections are reused forever. | ||||
| 	connMaxLifetime time.Duration | ||||
| } | ||||
|  | ||||
| // ConfigDefault is the default config | ||||
| var ConfigDefault = Config{ | ||||
| 	ConnectionURI:   "", | ||||
| 	Host:            "127.0.0.1", | ||||
| 	Port:            5432, | ||||
| 	Database:        "fiber", | ||||
| 	Table:           "fiber_storage", | ||||
| 	SslMode:         "disable", | ||||
| 	Reset:           false, | ||||
| 	GCInterval:      10 * time.Second, | ||||
| 	maxOpenConns:    100, | ||||
| 	maxIdleConns:    100, | ||||
| 	connMaxLifetime: 1 * time.Second, | ||||
| 	ConnectionURI: "", | ||||
| 	Host:          "127.0.0.1", | ||||
| 	Port:          5432, | ||||
| 	Database:      "fiber", | ||||
| 	Table:         "fiber_storage", | ||||
| 	SSLMode:       "disable", | ||||
| 	Reset:         false, | ||||
| 	GCInterval:    10 * time.Second, | ||||
| } | ||||
|  | ||||
| func (c *Config) getDSN() string { | ||||
| 	// Just return ConnectionURI if it's already exists | ||||
| 	if c.ConnectionURI != "" { | ||||
| 		return c.ConnectionURI | ||||
| 	} | ||||
|  | ||||
| 	// Generate DSN | ||||
| 	dsn := "postgresql://" | ||||
| 	if c.Username != "" { | ||||
| 		dsn += url.QueryEscape(c.Username) | ||||
| 	} | ||||
| 	if c.Password != "" { | ||||
| 		dsn += ":" + url.QueryEscape(c.Password) | ||||
| 	} | ||||
| 	if c.Username != "" || c.Password != "" { | ||||
| 		dsn += "@" | ||||
| 	} | ||||
|  | ||||
| 	// unix socket host path | ||||
| 	if strings.HasPrefix(c.Host, "/") { | ||||
| 		dsn += fmt.Sprintf("%s:%d", c.Host, c.Port) | ||||
| 	} else { | ||||
| 		dsn += fmt.Sprintf("%s:%d", url.QueryEscape(c.Host), c.Port) | ||||
| 	} | ||||
|  | ||||
| 	dsn += fmt.Sprintf("/%s?sslmode=%s", | ||||
| 		url.QueryEscape(c.Database), | ||||
| 		c.SSLMode) | ||||
|  | ||||
| 	return dsn | ||||
| } | ||||
|  | ||||
| // Helper function to set default values | ||||
| @@ -114,7 +117,6 @@ func configDefault(config ...Config) Config { | ||||
| 	if len(config) < 1 { | ||||
| 		return ConfigDefault | ||||
| 	} | ||||
|  | ||||
| 	// Override default config | ||||
| 	cfg := config[0] | ||||
|  | ||||
| @@ -131,8 +133,8 @@ func configDefault(config ...Config) Config { | ||||
| 	if cfg.Table == "" { | ||||
| 		cfg.Table = ConfigDefault.Table | ||||
| 	} | ||||
| 	if cfg.SslMode == "" { | ||||
| 		cfg.SslMode = ConfigDefault.SslMode | ||||
| 	if cfg.Table == "" { | ||||
| 		cfg.Table = ConfigDefault.Table | ||||
| 	} | ||||
| 	if int(cfg.GCInterval.Seconds()) <= 0 { | ||||
| 		cfg.GCInterval = ConfigDefault.GCInterval | ||||
|   | ||||
| @@ -1,8 +1,17 @@ | ||||
| module github.com/gofiber/storage/postgres | ||||
| module github.com/gofiber/storage/postgres/v2 | ||||
|  | ||||
| go 1.16 | ||||
| go 1.19 | ||||
|  | ||||
| require ( | ||||
| 	github.com/gofiber/utils v1.0.1 | ||||
| 	github.com/lib/pq v1.10.7 | ||||
| 	github.com/gofiber/utils v1.1.0 | ||||
| 	github.com/jackc/pgx/v5 v5.3.1 | ||||
| ) | ||||
|  | ||||
| require ( | ||||
| 	github.com/jackc/pgpassfile v1.0.0 // indirect | ||||
| 	github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect | ||||
| 	github.com/jackc/puddle/v2 v2.2.0 // indirect | ||||
| 	golang.org/x/crypto v0.7.0 // indirect | ||||
| 	golang.org/x/sync v0.1.0 // indirect | ||||
| 	golang.org/x/text v0.8.0 // indirect | ||||
| ) | ||||
|   | ||||
| @@ -1,4 +1,27 @@ | ||||
| github.com/gofiber/utils v1.0.1 h1:knct4cXwBipWQqFrOy1Pv6UcgPM+EXo9jDgc66V1Qio= | ||||
| github.com/gofiber/utils v1.0.1/go.mod h1:pacRFtghAE3UoknMOUiXh2Io/nLWSUHtQCi/3QASsOc= | ||||
| github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= | ||||
| github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= | ||||
| 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/gofiber/utils v1.1.0 h1:vdEBpn7AzIUJRhe+CiTOJdUcTg4Q9RK+pEa0KPbLdrM= | ||||
| github.com/gofiber/utils v1.1.0/go.mod h1:poZpsnhBykfnY1Mc0KeEa6mSHrS3dV0+oBWyeQmb2e0= | ||||
| github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= | ||||
| github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= | ||||
| github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= | ||||
| github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= | ||||
| github.com/jackc/pgx/v5 v5.3.1 h1:Fcr8QJ1ZeLi5zsPZqQeUZhNhxfkkKBOgJuYkJHoBOtU= | ||||
| github.com/jackc/pgx/v5 v5.3.1/go.mod h1:t3JDKnCBlYIc0ewLF0Q7B8MXmoIaBOZj/ic7iHozM/8= | ||||
| github.com/jackc/puddle/v2 v2.2.0 h1:RdcDk92EJBuBS55nQMMYFXTxwstHug4jkhT5pq8VxPk= | ||||
| github.com/jackc/puddle/v2 v2.2.0/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= | ||||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||
| github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | ||||
| github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= | ||||
| github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= | ||||
| github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= | ||||
| golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A= | ||||
| golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= | ||||
| golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= | ||||
| golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||||
| golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= | ||||
| golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||||
| gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= | ||||
|   | ||||
| @@ -1,19 +1,20 @@ | ||||
| package postgres | ||||
|  | ||||
| import ( | ||||
| 	"database/sql" | ||||
| 	"context" | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
| 	"net/url" | ||||
| 	"os" | ||||
| 	"strings" | ||||
| 	"time" | ||||
|  | ||||
| 	_ "github.com/lib/pq" | ||||
| 	"github.com/jackc/pgx/v5" | ||||
| 	"github.com/jackc/pgx/v5/pgxpool" | ||||
| ) | ||||
|  | ||||
| // Storage interface that is implemented by storage providers | ||||
| type Storage struct { | ||||
| 	db         *sql.DB | ||||
| 	db         *pgxpool.Pool | ||||
| 	gcInterval time.Duration | ||||
| 	done       chan struct{} | ||||
|  | ||||
| @@ -45,62 +46,33 @@ func New(config ...Config) *Storage { | ||||
| 	// Set default config | ||||
| 	cfg := configDefault(config...) | ||||
|  | ||||
| 	// Create data source name | ||||
| 	var dsn string | ||||
| 	if cfg.ConnectionURI != "" { | ||||
| 		dsn = cfg.ConnectionURI | ||||
| 	} else { | ||||
| 		dsn = "postgresql://" | ||||
| 		if cfg.Username != "" { | ||||
| 			dsn += url.QueryEscape(cfg.Username) | ||||
| 	// Select db connection | ||||
| 	var err error | ||||
| 	db := cfg.DB | ||||
| 	if db == nil { | ||||
| 		db, err = pgxpool.New(context.Background(), cfg.getDSN()) | ||||
| 		if err != nil { | ||||
| 			fmt.Fprintf(os.Stderr, "Unable to create connection pool: %v\n", err) | ||||
| 		} | ||||
| 		if cfg.Password != "" { | ||||
| 			dsn += ":" + url.QueryEscape(cfg.Password) | ||||
| 		} | ||||
| 		if cfg.Username != "" || cfg.Password != "" { | ||||
| 			dsn += "@" | ||||
| 		} | ||||
| 		// unix socket host path | ||||
| 		if strings.HasPrefix(cfg.Host, "/") { | ||||
| 			dsn += fmt.Sprintf("%s:%d", cfg.Host, cfg.Port) | ||||
| 		} else { | ||||
| 			dsn += fmt.Sprintf("%s:%d", url.QueryEscape(cfg.Host), cfg.Port) | ||||
| 		} | ||||
| 		dsn += fmt.Sprintf("/%s?connect_timeout=%d&sslmode=%s", | ||||
| 			url.QueryEscape(cfg.Database), | ||||
| 			int64(cfg.timeout.Seconds()), | ||||
| 			cfg.SslMode) | ||||
| 	} | ||||
|  | ||||
| 	// Create db | ||||
| 	db, err := sql.Open("postgres", dsn) | ||||
| 	if err != nil { | ||||
| 		panic(err) | ||||
| 	} | ||||
|  | ||||
| 	// Set database options | ||||
| 	db.SetMaxOpenConns(cfg.maxOpenConns) | ||||
| 	db.SetMaxIdleConns(cfg.maxIdleConns) | ||||
| 	db.SetConnMaxLifetime(cfg.connMaxLifetime) | ||||
|  | ||||
| 	// Ping database | ||||
| 	if err := db.Ping(); err != nil { | ||||
| 	if err := db.Ping(context.Background()); err != nil { | ||||
| 		panic(err) | ||||
| 	} | ||||
|  | ||||
| 	// Drop table if set to true | ||||
| 	if cfg.Reset { | ||||
| 		if _, err = db.Exec(fmt.Sprintf(dropQuery, cfg.Table)); err != nil { | ||||
| 			_ = db.Close() | ||||
| 		if _, err := db.Exec(context.Background(), fmt.Sprintf(dropQuery, cfg.Table)); err != nil { | ||||
| 			db.Close() | ||||
| 			panic(err) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	// Init database queries | ||||
| 	for _, query := range initQuery { | ||||
| 		if _, err := db.Exec(fmt.Sprintf(query, cfg.Table)); err != nil { | ||||
| 			_ = db.Close() | ||||
|  | ||||
| 		if _, err := db.Exec(context.Background(), fmt.Sprintf(query, cfg.Table)); err != nil { | ||||
| 			db.Close() | ||||
| 			panic(err) | ||||
| 		} | ||||
| 	} | ||||
| @@ -125,21 +97,19 @@ func New(config ...Config) *Storage { | ||||
| 	return store | ||||
| } | ||||
|  | ||||
| var noRows = errors.New("sql: no rows in result set") | ||||
|  | ||||
| // Get value by key | ||||
| func (s *Storage) Get(key string) ([]byte, error) { | ||||
| 	if len(key) <= 0 { | ||||
| 		return nil, nil | ||||
| 	} | ||||
| 	row := s.db.QueryRow(s.sqlSelect, key) | ||||
| 	row := s.db.QueryRow(context.Background(), s.sqlSelect, key) | ||||
| 	// Add db response to data | ||||
| 	var ( | ||||
| 		data       = []byte{} | ||||
| 		data []byte | ||||
| 		exp  int64 = 0 | ||||
| 	) | ||||
| 	if err := row.Scan(&data, &exp); err != nil { | ||||
| 		if err == sql.ErrNoRows { | ||||
| 		if errors.Is(err, pgx.ErrNoRows) { | ||||
| 			return nil, nil | ||||
| 		} | ||||
| 		return nil, err | ||||
| @@ -163,7 +133,7 @@ func (s *Storage) Set(key string, val []byte, exp time.Duration) error { | ||||
| 	if exp != 0 { | ||||
| 		expSeconds = time.Now().Add(exp).Unix() | ||||
| 	} | ||||
| 	_, err := s.db.Exec(s.sqlInsert, key, val, expSeconds, val, expSeconds) | ||||
| 	_, err := s.db.Exec(context.Background(), s.sqlInsert, key, val, expSeconds, val, expSeconds) | ||||
| 	return err | ||||
| } | ||||
|  | ||||
| @@ -173,24 +143,26 @@ func (s *Storage) Delete(key string) error { | ||||
| 	if len(key) <= 0 { | ||||
| 		return nil | ||||
| 	} | ||||
| 	_, err := s.db.Exec(s.sqlDelete, key) | ||||
| 	_, err := s.db.Exec(context.Background(), s.sqlDelete, key) | ||||
| 	return err | ||||
| } | ||||
|  | ||||
| // Reset all entries, including unexpired | ||||
| func (s *Storage) Reset() error { | ||||
| 	_, err := s.db.Exec(s.sqlReset) | ||||
| 	_, err := s.db.Exec(context.Background(), s.sqlReset) | ||||
| 	return err | ||||
| } | ||||
|  | ||||
| // Close the database | ||||
| func (s *Storage) Close() error { | ||||
| 	s.done <- struct{}{} | ||||
| 	return s.db.Close() | ||||
| 	s.db.Stat() | ||||
| 	s.db.Close() | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // Return database client | ||||
| func (s *Storage) Conn() *sql.DB { | ||||
| func (s *Storage) Conn() *pgxpool.Pool { | ||||
| 	return s.db | ||||
| } | ||||
|  | ||||
| @@ -210,13 +182,13 @@ func (s *Storage) gcTicker() { | ||||
|  | ||||
| // gc deletes all expired entries | ||||
| func (s *Storage) gc(t time.Time) { | ||||
| 	_, _ = s.db.Exec(s.sqlGC, t.Unix()) | ||||
| 	_, _ = s.db.Exec(context.Background(), s.sqlGC, t.Unix()) | ||||
| } | ||||
|  | ||||
| func (s *Storage) checkSchema(tableName string) { | ||||
| 	var data []byte | ||||
|  | ||||
| 	row := s.db.QueryRow(fmt.Sprintf(checkSchemaQuery, tableName)) | ||||
| 	row := s.db.QueryRow(context.Background(), fmt.Sprintf(checkSchemaQuery, tableName)) | ||||
| 	if err := row.Scan(&data); err != nil { | ||||
| 		panic(err) | ||||
| 	} | ||||
|   | ||||
| @@ -1,12 +1,13 @@ | ||||
| package postgres | ||||
|  | ||||
| import ( | ||||
| 	"database/sql" | ||||
| 	"context" | ||||
| 	"os" | ||||
| 	"testing" | ||||
| 	"time" | ||||
|  | ||||
| 	"github.com/gofiber/utils" | ||||
| 	"github.com/jackc/pgx/v5" | ||||
| ) | ||||
|  | ||||
| var testStore = New(Config{ | ||||
| @@ -133,9 +134,9 @@ func Test_Postgres_GC(t *testing.T) { | ||||
| 	utils.AssertEqual(t, nil, err) | ||||
|  | ||||
| 	testStore.gc(time.Now()) | ||||
| 	row := testStore.db.QueryRow(testStore.sqlSelect, "john") | ||||
| 	row := testStore.db.QueryRow(context.Background(), testStore.sqlSelect, "john") | ||||
| 	err = row.Scan(nil, nil) | ||||
| 	utils.AssertEqual(t, sql.ErrNoRows, err) | ||||
| 	utils.AssertEqual(t, pgx.ErrNoRows, err) | ||||
|  | ||||
| 	// This key should not expire | ||||
| 	err = testStore.Set("john", testVal, 0) | ||||
| @@ -166,18 +167,14 @@ func Test_SslRequiredMode(t *testing.T) { | ||||
| 		} | ||||
| 	}() | ||||
| 	_ = New(Config{ | ||||
| 		Database: "fiber", | ||||
| 		Username: "username", | ||||
| 		Password: "password", | ||||
| 		Reset:    true, | ||||
| 		SslMode:  "require", | ||||
| 		Reset: true, | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| func Test_Postgres_Close(t *testing.T) { | ||||
| 	utils.AssertEqual(t, nil, testStore.Close()) | ||||
| } | ||||
|  | ||||
| func Test_Postgres_Conn(t *testing.T) { | ||||
| 	utils.AssertEqual(t, true, testStore.Conn() != nil) | ||||
| } | ||||
|  | ||||
| func Test_Postgres_Close(t *testing.T) { | ||||
| 	utils.AssertEqual(t, nil, testStore.Close()) | ||||
| } | ||||
|   | ||||
| @@ -17,7 +17,7 @@ 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() *redis.Client | ||||
| func (s *Storage) Conn() redis.UniversalClient | ||||
| ``` | ||||
| ### Installation | ||||
| Redis is tested on the 2 last [Go versions](https://golang.org/dl/) with support for modules. So make sure to initialize one first if you didn't do that yet: | ||||
| @@ -26,13 +26,13 @@ go mod init github.com/<user>/<repo> | ||||
| ``` | ||||
| And then install the redis implementation: | ||||
| ```bash | ||||
| go get github.com/gofiber/storage/redis | ||||
| go get github.com/gofiber/storage/redis/v2 | ||||
| ``` | ||||
|  | ||||
| ### Examples | ||||
| Import the storage package. | ||||
| ```go | ||||
| import "github.com/gofiber/storage/redis" | ||||
| import "github.com/gofiber/storage/redis/v2" | ||||
| ``` | ||||
|  | ||||
| You can use the following possibilities to create a storage: | ||||
| @@ -46,13 +46,23 @@ store := redis.New(redis.Config{ | ||||
| 	Port:      6379, | ||||
| 	Username:  "", | ||||
| 	Password:  "", | ||||
| 	URL:       "", | ||||
| 	Database:  0, | ||||
| 	Reset:     false, | ||||
| 	TLSConfig: nil, | ||||
| 	PoolSize:  10 * runtime.GOMAXPROCS(0), | ||||
| }) | ||||
|  | ||||
| // Initialize Redis Failover Client | ||||
| store := redis.New(redis.Config{ | ||||
| 	MasterName:       "master-name", | ||||
| 	Addrs:            []string{":6379"}, | ||||
| }) | ||||
|  | ||||
| // Initialize Redis Cluster Client | ||||
| store := redis.New(redis.Config{ | ||||
| 	Addrs:            []string{":6379", ":6380"}, | ||||
| }) | ||||
|  | ||||
| // or just the url with all information | ||||
| store = redis.New(redis.Config{ | ||||
|     URL:     "redis://<user>:<pass>@127.0.0.1:6379/<db>", | ||||
| @@ -88,12 +98,37 @@ type Config struct { | ||||
| 	// Optional. Default is 0 | ||||
| 	Database int | ||||
|  | ||||
| 	// URL the standard format redis url to parse all other options. If this is set all other config options, Host, Port, Username, Password, Database have no effect. | ||||
| 	// URL standard format Redis URL. If this is set all other config options, Host, Port, Username, Password, Database have no effect. | ||||
| 	// | ||||
| 	// Example: redis://<user>:<pass>@localhost:6379/<db> | ||||
| 	// Optional. Default is "" | ||||
| 	URL string | ||||
|  | ||||
| 	// Either a single address or a seed list of host:port addresses, this enables FailoverClient and ClusterClient | ||||
| 	// | ||||
| 	// Optional. Default is []string{} | ||||
| 	Addrs []string | ||||
|  | ||||
| 	// MasterName is the sentinel master's name | ||||
| 	// | ||||
| 	// Optional. Default is "" | ||||
| 	MasterName string | ||||
|  | ||||
| 	// ClientName will execute the `CLIENT SETNAME ClientName` command for each conn. | ||||
| 	// | ||||
| 	// Optional. Default is "" | ||||
| 	ClientName string | ||||
|  | ||||
| 	// SentinelUsername | ||||
| 	// | ||||
| 	// Optional. Default is "" | ||||
| 	SentinelUsername string | ||||
|  | ||||
| 	// SentinelPassword | ||||
| 	// | ||||
| 	// Optional. Default is "" | ||||
| 	SentinelPassword string | ||||
|  | ||||
| 	// Reset clears any existing keys in existing Collection | ||||
| 	// | ||||
| 	// Optional. Default is false | ||||
| @@ -109,20 +144,24 @@ type Config struct { | ||||
| 	// Optional. Default is 10 connections per every available CPU as reported by runtime.GOMAXPROCS. | ||||
| 	PoolSize int | ||||
| } | ||||
|  | ||||
| ``` | ||||
|  | ||||
| ### Default Config | ||||
| ```go | ||||
| var ConfigDefault = Config{ | ||||
| 	Host:      "127.0.0.1", | ||||
| 	Port:      6379, | ||||
| 	Username:  "", | ||||
| 	Password:  "", | ||||
| 	URL:       "", | ||||
| 	Database:  0, | ||||
| 	Reset:     false, | ||||
| 	TLSConfig: nil, | ||||
| 	PoolSize:  10 * runtime.GOMAXPROCS(0), | ||||
| 	Host:                  "127.0.0.1", | ||||
| 	Port:                  6379, | ||||
| 	Username:              "", | ||||
| 	Password:              "", | ||||
| 	URL:                   "", | ||||
| 	Database:              0, | ||||
| 	Reset:                 false, | ||||
| 	TLSConfig:             nil, | ||||
| 	PoolSize:              10 * runtime.GOMAXPROCS(0), | ||||
| 	Addrs:                 []string{}, | ||||
| 	MasterName:            "", | ||||
| 	ClientName:            "", | ||||
| 	SentinelUsername:      "", | ||||
| 	SentinelPassword:      "", | ||||
| } | ||||
| ``` | ||||
|   | ||||
| @@ -32,43 +32,69 @@ type Config struct { | ||||
| 	// Optional. Default is 0 | ||||
| 	Database int | ||||
|  | ||||
| 	// URL the standard format redis url to parse all other options. If this is set all other config options, Host, Port, Username, Password, Database have no effect. | ||||
| 	// URL standard format Redis URL. If this is set all other config options, Host, Port, Username, Password, Database have no effect. | ||||
| 	// | ||||
| 	// Example: redis://<user>:<pass>@localhost:6379/<db> | ||||
| 	// Optional. Default is "" | ||||
| 	URL string | ||||
|  | ||||
| 	// Either a single address or a seed list of host:port addresses, this enables FailoverClient and ClusterClient | ||||
| 	// | ||||
| 	// Optional. Default is []string{} | ||||
| 	Addrs []string | ||||
|  | ||||
| 	// MasterName is the sentinel master's name | ||||
| 	// | ||||
| 	// Optional. Default is "" | ||||
| 	MasterName string | ||||
|  | ||||
| 	// ClientName will execute the `CLIENT SETNAME ClientName` command for each conn. | ||||
| 	// | ||||
| 	// Optional. Default is "" | ||||
| 	ClientName string | ||||
|  | ||||
| 	// SentinelUsername | ||||
| 	// | ||||
| 	// Optional. Default is "" | ||||
| 	SentinelUsername string | ||||
|  | ||||
| 	// SentinelPassword | ||||
| 	// | ||||
| 	// Optional. Default is "" | ||||
| 	SentinelPassword string | ||||
|  | ||||
| 	// Reset clears any existing keys in existing Collection | ||||
| 	// | ||||
| 	// Optional. Default is false | ||||
| 	Reset bool | ||||
|  | ||||
| 	// TLS Config to use. When set TLS will be negotiated. | ||||
| 	// | ||||
| 	// Optional. Default is nil | ||||
| 	TLSConfig *tls.Config | ||||
|  | ||||
| 	// Maximum number of socket connections. | ||||
| 	// | ||||
| 	// Optional. Default is 10 connections per every available CPU as reported by runtime.GOMAXPROCS. | ||||
| 	PoolSize int | ||||
|  | ||||
| 	//////////////////////////////////// | ||||
| 	// Adaptor related config options // | ||||
| 	//////////////////////////////////// | ||||
|  | ||||
| 	// https://pkg.go.dev/github.com/go-redis/redis/v8#Options | ||||
| } | ||||
|  | ||||
| // ConfigDefault is the default config | ||||
| var ConfigDefault = Config{ | ||||
| 	Host:      "127.0.0.1", | ||||
| 	Port:      6379, | ||||
| 	Username:  "", | ||||
| 	Password:  "", | ||||
| 	URL:       "", | ||||
| 	Database:  0, | ||||
| 	Reset:     false, | ||||
| 	TLSConfig: nil, | ||||
| 	PoolSize:  10 * runtime.GOMAXPROCS(0), | ||||
| 	Host:             "127.0.0.1", | ||||
| 	Port:             6379, | ||||
| 	Username:         "", | ||||
| 	Password:         "", | ||||
| 	URL:              "", | ||||
| 	Database:         0, | ||||
| 	Reset:            false, | ||||
| 	TLSConfig:        nil, | ||||
| 	PoolSize:         10 * runtime.GOMAXPROCS(0), | ||||
| 	Addrs:            []string{}, | ||||
| 	MasterName:       "", | ||||
| 	ClientName:       "", | ||||
| 	SentinelUsername: "", | ||||
| 	SentinelPassword: "", | ||||
| } | ||||
|  | ||||
| // Helper function to set default values | ||||
|   | ||||
| @@ -1,10 +1,10 @@ | ||||
| module github.com/gofiber/storage/redis | ||||
| module github.com/gofiber/storage/redis/v2 | ||||
|  | ||||
| go 1.18 | ||||
|  | ||||
| require ( | ||||
| 	github.com/gofiber/utils v1.0.1 | ||||
| 	github.com/redis/go-redis/v9 v9.0.2 | ||||
| 	github.com/gofiber/utils v1.1.0 | ||||
| 	github.com/redis/go-redis/v9 v9.0.5 | ||||
| ) | ||||
|  | ||||
| require ( | ||||
|   | ||||
							
								
								
									
										16
									
								
								redis/go.sum
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								redis/go.sum
									
									
									
									
									
								
							| @@ -1,14 +1,10 @@ | ||||
| github.com/bsm/ginkgo/v2 v2.5.0 h1:aOAnND1T40wEdAtkGSkvSICWeQ8L3UASX7YVCqQx+eQ= | ||||
| github.com/bsm/gomega v1.20.0 h1:JhAwLmtRzXFTx2AkALSLa8ijZafntmhSoU63Ok18Uq8= | ||||
| github.com/bsm/ginkgo/v2 v2.7.0 h1:ItPMPH90RbmZJt5GtkcNvIRuGEdwlBItdNVoyzaNQao= | ||||
| github.com/bsm/gomega v1.26.0 h1:LhQm+AFcgV2M0WyKroMASzAzCAJVpAxQXv4SaI9a69Y= | ||||
| github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= | ||||
| github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= | ||||
| github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= | ||||
| github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= | ||||
| github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= | ||||
| github.com/gofiber/utils v1.0.1 h1:knct4cXwBipWQqFrOy1Pv6UcgPM+EXo9jDgc66V1Qio= | ||||
| github.com/gofiber/utils v1.0.1/go.mod h1:pacRFtghAE3UoknMOUiXh2Io/nLWSUHtQCi/3QASsOc= | ||||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||
| github.com/redis/go-redis/v9 v9.0.2 h1:BA426Zqe/7r56kCcvxYLWe1mkaz71LKF77GwgFzSxfE= | ||||
| github.com/redis/go-redis/v9 v9.0.2/go.mod h1:/xDTe9EF1LM61hek62Poq2nzQSGj0xSrEtEHbBQevps= | ||||
| github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= | ||||
| gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= | ||||
| github.com/gofiber/utils v1.1.0 h1:vdEBpn7AzIUJRhe+CiTOJdUcTg4Q9RK+pEa0KPbLdrM= | ||||
| github.com/gofiber/utils v1.1.0/go.mod h1:poZpsnhBykfnY1Mc0KeEa6mSHrS3dV0+oBWyeQmb2e0= | ||||
| github.com/redis/go-redis/v9 v9.0.5 h1:CuQcn5HIEeK7BgElubPP8CGtE0KakrnbBSTLjathl5o= | ||||
| github.com/redis/go-redis/v9 v9.0.5/go.mod h1:WqMKv5vnQbRuZstUwxQI195wHy+t4PuXDOjzMvcuQHk= | ||||
|   | ||||
| @@ -10,7 +10,7 @@ import ( | ||||
|  | ||||
| // Storage interface that is implemented by storage providers | ||||
| type Storage struct { | ||||
| 	db *redis.Client | ||||
| 	db redis.UniversalClient | ||||
| } | ||||
|  | ||||
| // New creates a new redis storage | ||||
| @@ -18,31 +18,38 @@ func New(config ...Config) *Storage { | ||||
| 	// Set default config | ||||
| 	cfg := configDefault(config...) | ||||
|  | ||||
| 	// Create new redis client | ||||
| 	var options *redis.Options | ||||
| 	var err error | ||||
| 	// Create new redis universal client | ||||
| 	var db redis.UniversalClient | ||||
|  | ||||
| 	// Parse the URL and update config values accordingly | ||||
| 	if cfg.URL != "" { | ||||
| 		options, err = redis.ParseURL(cfg.URL) | ||||
|  | ||||
| 		options, err := redis.ParseURL(cfg.URL) | ||||
| 		if err != nil { | ||||
| 			panic(err) | ||||
| 		} | ||||
|  | ||||
| 		options.TLSConfig = cfg.TLSConfig | ||||
| 		options.PoolSize = cfg.PoolSize | ||||
| 	} else { | ||||
| 		options = &redis.Options{ | ||||
| 			Addr:      fmt.Sprintf("%s:%d", cfg.Host, cfg.Port), | ||||
| 			DB:        cfg.Database, | ||||
| 			Username:  cfg.Username, | ||||
| 			Password:  cfg.Password, | ||||
| 			TLSConfig: cfg.TLSConfig, | ||||
| 			PoolSize:  cfg.PoolSize, | ||||
| 		} | ||||
| 		// Update the config values with the parsed URL values | ||||
| 		cfg.Username = options.Username | ||||
| 		cfg.Password = options.Password | ||||
| 		cfg.Database = options.DB | ||||
| 		cfg.Addrs = []string{options.Addr} | ||||
| 	} else if len(cfg.Addrs) == 0 { | ||||
| 		// Fallback to Host and Port values if Addrs is empty | ||||
| 		cfg.Addrs = []string{fmt.Sprintf("%s:%d", cfg.Host, cfg.Port)} | ||||
| 	} | ||||
|  | ||||
| 	db := redis.NewClient(options) | ||||
| 	db = redis.NewUniversalClient(&redis.UniversalOptions{ | ||||
| 		Addrs:            cfg.Addrs, | ||||
| 		MasterName:       cfg.MasterName, | ||||
| 		ClientName:       cfg.ClientName, | ||||
| 		SentinelUsername: cfg.SentinelUsername, | ||||
| 		SentinelPassword: cfg.SentinelPassword, | ||||
| 		DB:               cfg.Database, | ||||
| 		Username:         cfg.Username, | ||||
| 		Password:         cfg.Password, | ||||
| 		TLSConfig:        cfg.TLSConfig, | ||||
| 		PoolSize:         cfg.PoolSize, | ||||
| 	}) | ||||
|  | ||||
| 	// Test connection | ||||
| 	if err := db.Ping(context.Background()).Err(); err != nil { | ||||
| @@ -62,6 +69,8 @@ func New(config ...Config) *Storage { | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // ... | ||||
|  | ||||
| // Get value by key | ||||
| func (s *Storage) Get(key string) ([]byte, error) { | ||||
| 	if len(key) <= 0 { | ||||
| @@ -76,7 +85,6 @@ func (s *Storage) Get(key string) ([]byte, error) { | ||||
|  | ||||
| // Set key with value | ||||
| func (s *Storage) Set(key string, val []byte, exp time.Duration) error { | ||||
| 	// Ain't Nobody Got Time For That | ||||
| 	if len(key) <= 0 || len(val) <= 0 { | ||||
| 		return nil | ||||
| 	} | ||||
| @@ -85,7 +93,6 @@ func (s *Storage) Set(key string, val []byte, exp time.Duration) error { | ||||
|  | ||||
| // Delete key by key | ||||
| func (s *Storage) Delete(key string) error { | ||||
| 	// Ain't Nobody Got Time For That | ||||
| 	if len(key) <= 0 { | ||||
| 		return nil | ||||
| 	} | ||||
| @@ -103,6 +110,6 @@ func (s *Storage) Close() error { | ||||
| } | ||||
|  | ||||
| // Return database client | ||||
| func (s *Storage) Conn() *redis.Client { | ||||
| func (s *Storage) Conn() redis.UniversalClient { | ||||
| 	return s.db | ||||
| } | ||||
|   | ||||
| @@ -191,3 +191,164 @@ func Test_Redis_Initalize_WithURL_TLS(t *testing.T) { | ||||
|  | ||||
| 	utils.AssertEqual(t, nil, testStoreUrl.Close()) | ||||
| } | ||||
|  | ||||
| func Test_Redis_Universal_Addrs(t *testing.T) { | ||||
| 	// This should failover and create a Single Node connection. | ||||
| 	testStoreUniversal := New(Config{ | ||||
| 		Addrs: []string{"localhost:6379"}, | ||||
| 	}) | ||||
|  | ||||
| 	var ( | ||||
| 		key = "bruce" | ||||
| 		val = []byte("wayne") | ||||
| 	) | ||||
|  | ||||
| 	err := testStoreUniversal.Set(key, val, 0) | ||||
| 	utils.AssertEqual(t, nil, err) | ||||
|  | ||||
| 	result, err := testStoreUniversal.Get(key) | ||||
| 	utils.AssertEqual(t, nil, err) | ||||
| 	utils.AssertEqual(t, val, result) | ||||
|  | ||||
| 	err = testStoreUniversal.Delete(key) | ||||
| 	utils.AssertEqual(t, nil, err) | ||||
|  | ||||
| 	utils.AssertEqual(t, nil, testStoreUniversal.Close()) | ||||
| } | ||||
|  | ||||
| func Test_Redis_Universal_With_URL_Undefined(t *testing.T) { | ||||
| 	// This should failover to creating a regular *redis.Client | ||||
| 	// The URL should get ignored since it's empty | ||||
| 	testStoreUniversal := New(Config{ | ||||
| 		URL:   "", | ||||
| 		Addrs: []string{"localhost:6379"}, | ||||
| 	}) | ||||
|  | ||||
| 	var ( | ||||
| 		key = "bruce" | ||||
| 		val = []byte("wayne") | ||||
| 	) | ||||
|  | ||||
| 	err := testStoreUniversal.Set(key, val, 0) | ||||
| 	utils.AssertEqual(t, nil, err) | ||||
|  | ||||
| 	result, err := testStoreUniversal.Get(key) | ||||
| 	utils.AssertEqual(t, nil, err) | ||||
| 	utils.AssertEqual(t, val, result) | ||||
|  | ||||
| 	err = testStoreUniversal.Delete(key) | ||||
| 	utils.AssertEqual(t, nil, err) | ||||
|  | ||||
| 	utils.AssertEqual(t, nil, testStoreUniversal.Close()) | ||||
| } | ||||
|  | ||||
| func Test_Redis_Universal_With_URL_Defined(t *testing.T) { | ||||
| 	// This should failover to creating a regular *redis.Client | ||||
| 	// The Addrs field should get ignored since URL is defined | ||||
| 	testStoreUniversal := New(Config{ | ||||
| 		URL:   "redis://localhost:6379", | ||||
| 		Addrs: []string{"localhost:6355"}, | ||||
| 	}) | ||||
|  | ||||
| 	var ( | ||||
| 		key = "bruce" | ||||
| 		val = []byte("wayne") | ||||
| 	) | ||||
|  | ||||
| 	err := testStoreUniversal.Set(key, val, 0) | ||||
| 	utils.AssertEqual(t, nil, err) | ||||
|  | ||||
| 	result, err := testStoreUniversal.Get(key) | ||||
| 	utils.AssertEqual(t, nil, err) | ||||
| 	utils.AssertEqual(t, val, result) | ||||
|  | ||||
| 	err = testStoreUniversal.Delete(key) | ||||
| 	utils.AssertEqual(t, nil, err) | ||||
|  | ||||
| 	utils.AssertEqual(t, nil, testStoreUniversal.Close()) | ||||
| } | ||||
|  | ||||
| func Test_Redis_Universal_With_HostPort(t *testing.T) { | ||||
| 	// This should failover to creating a regular *redis.Client | ||||
| 	// The Host and Port should get ignored since Addrs is defined | ||||
| 	testStoreUniversal := New(Config{ | ||||
| 		Host:  "localhost", | ||||
| 		Port:  6388, | ||||
| 		Addrs: []string{"localhost:6379"}, | ||||
| 	}) | ||||
|  | ||||
| 	var ( | ||||
| 		key = "bruce" | ||||
| 		val = []byte("wayne") | ||||
| 	) | ||||
|  | ||||
| 	err := testStoreUniversal.Set(key, val, 0) | ||||
| 	utils.AssertEqual(t, nil, err) | ||||
|  | ||||
| 	result, err := testStoreUniversal.Get(key) | ||||
| 	utils.AssertEqual(t, nil, err) | ||||
| 	utils.AssertEqual(t, val, result) | ||||
|  | ||||
| 	err = testStoreUniversal.Delete(key) | ||||
| 	utils.AssertEqual(t, nil, err) | ||||
|  | ||||
| 	utils.AssertEqual(t, nil, testStoreUniversal.Close()) | ||||
| } | ||||
|  | ||||
| func Test_Redis_Universal_With_HostPort_And_URL(t *testing.T) { | ||||
| 	// This should failover to creating a regular *redis.Client | ||||
| 	// The Host and Port should get ignored since Addrs is defined | ||||
| 	testStoreUniversal := New(Config{ | ||||
| 		URL:   "redis://localhost:6379", | ||||
| 		Host:  "localhost", | ||||
| 		Port:  6388, | ||||
| 		Addrs: []string{"localhost:6399"}, | ||||
| 	}) | ||||
|  | ||||
| 	var ( | ||||
| 		key = "bruce" | ||||
| 		val = []byte("wayne") | ||||
| 	) | ||||
|  | ||||
| 	err := testStoreUniversal.Set(key, val, 0) | ||||
| 	utils.AssertEqual(t, nil, err) | ||||
|  | ||||
| 	result, err := testStoreUniversal.Get(key) | ||||
| 	utils.AssertEqual(t, nil, err) | ||||
| 	utils.AssertEqual(t, val, result) | ||||
|  | ||||
| 	err = testStoreUniversal.Delete(key) | ||||
| 	utils.AssertEqual(t, nil, err) | ||||
|  | ||||
| 	utils.AssertEqual(t, nil, testStoreUniversal.Close()) | ||||
| } | ||||
|  | ||||
| func Test_Redis_Cluster(t *testing.T) { | ||||
| 	testStoreUniversal := New(Config{ | ||||
| 		Addrs: []string{ | ||||
| 			"localhost:7000", | ||||
| 			"localhost:7001", | ||||
| 			"localhost:7002", | ||||
| 			"localhost:7003", | ||||
| 			"localhost:7004", | ||||
| 			"localhost:7005", | ||||
| 		}, | ||||
| 	}) | ||||
|  | ||||
| 	var ( | ||||
| 		key = "bruce" | ||||
| 		val = []byte("wayne") | ||||
| 	) | ||||
|  | ||||
| 	err := testStoreUniversal.Set(key, val, 0) | ||||
| 	utils.AssertEqual(t, nil, err) | ||||
|  | ||||
| 	result, err := testStoreUniversal.Get(key) | ||||
| 	utils.AssertEqual(t, nil, err) | ||||
| 	utils.AssertEqual(t, val, result) | ||||
|  | ||||
| 	err = testStoreUniversal.Delete(key) | ||||
| 	utils.AssertEqual(t, nil, err) | ||||
|  | ||||
| 	utils.AssertEqual(t, nil, testStoreUniversal.Close()) | ||||
| } | ||||
| @@ -4,7 +4,7 @@ go 1.18 | ||||
|  | ||||
| require ( | ||||
| 	github.com/dgraph-io/ristretto v0.1.1 | ||||
| 	github.com/gofiber/utils v1.0.1 | ||||
| 	github.com/gofiber/utils v1.1.0 | ||||
| ) | ||||
|  | ||||
| require ( | ||||
|   | ||||
| @@ -10,8 +10,8 @@ github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2 h1:tdlZCpZ/P9DhczC | ||||
| 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/gofiber/utils v1.0.1 h1:knct4cXwBipWQqFrOy1Pv6UcgPM+EXo9jDgc66V1Qio= | ||||
| github.com/gofiber/utils v1.0.1/go.mod h1:pacRFtghAE3UoknMOUiXh2Io/nLWSUHtQCi/3QASsOc= | ||||
| github.com/gofiber/utils v1.1.0 h1:vdEBpn7AzIUJRhe+CiTOJdUcTg4Q9RK+pEa0KPbLdrM= | ||||
| github.com/gofiber/utils v1.1.0/go.mod h1:poZpsnhBykfnY1Mc0KeEa6mSHrS3dV0+oBWyeQmb2e0= | ||||
| github.com/golang/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.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= | ||||
|   | ||||
							
								
								
									
										30
									
								
								s3/go.mod
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								s3/go.mod
									
									
									
									
									
								
							| @@ -1,12 +1,30 @@ | ||||
| module github.com/gofiber/storage/s3 | ||||
|  | ||||
| go 1.16 | ||||
| go 1.18 | ||||
|  | ||||
| require ( | ||||
| 	github.com/aws/aws-sdk-go-v2 v1.17.4 | ||||
| 	github.com/aws/aws-sdk-go-v2/config v1.18.13 | ||||
| 	github.com/aws/aws-sdk-go-v2/credentials v1.13.13 | ||||
| 	github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.53 | ||||
| 	github.com/aws/aws-sdk-go-v2/service/s3 v1.30.3 | ||||
| 	github.com/aws/aws-sdk-go-v2 v1.18.0 | ||||
| 	github.com/aws/aws-sdk-go-v2/config v1.18.25 | ||||
| 	github.com/aws/aws-sdk-go-v2/credentials v1.13.24 | ||||
| 	github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.67 | ||||
| 	github.com/aws/aws-sdk-go-v2/service/s3 v1.33.1 | ||||
| 	github.com/gofiber/utils v1.0.1 | ||||
| ) | ||||
|  | ||||
| require ( | ||||
| 	github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.10 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.3 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.33 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.27 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2/internal/ini v1.3.34 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.25 // 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/checksum v1.1.28 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.27 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.14.2 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2/service/sso v1.12.10 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.10 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2/service/sts v1.19.0 // indirect | ||||
| 	github.com/aws/smithy-go v1.13.5 // indirect | ||||
| 	github.com/jmespath/go-jmespath v0.4.0 // indirect | ||||
| ) | ||||
|   | ||||
							
								
								
									
										64
									
								
								s3/go.sum
									
									
									
									
									
								
							
							
						
						
									
										64
									
								
								s3/go.sum
									
									
									
									
									
								
							| @@ -1,39 +1,39 @@ | ||||
| github.com/aws/aws-sdk-go-v2 v1.17.4 h1:wyC6p9Yfq6V2y98wfDsj6OnNQa4w2BLGCLIxzNhwOGY= | ||||
| github.com/aws/aws-sdk-go-v2 v1.17.4/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw= | ||||
| github.com/aws/aws-sdk-go-v2 v1.18.0 h1:882kkTpSFhdgYRKVZ/VCgf7sd0ru57p2JCxz4/oN5RY= | ||||
| github.com/aws/aws-sdk-go-v2 v1.18.0/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw= | ||||
| github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.10 h1:dK82zF6kkPeCo8J1e+tGx4JdvDIQzj7ygIoLg8WMuGs= | ||||
| github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.10/go.mod h1:VeTZetY5KRJLuD/7fkQXMU6Mw7H5m/KP2J5Iy9osMno= | ||||
| github.com/aws/aws-sdk-go-v2/config v1.18.13 h1:v0xlYqbO6/EVlM8tUn2QEOA7btQxcgidEq2JRDBPTho= | ||||
| github.com/aws/aws-sdk-go-v2/config v1.18.13/go.mod h1:r39wGSZB7wPDW1i54JyQXUpc5KsWjh5z/3S5D9eCqDg= | ||||
| github.com/aws/aws-sdk-go-v2/credentials v1.13.13 h1:zw1KAc1kl00NYd3ofVmFrb09qnYlSQMeh+fmlQRAihI= | ||||
| github.com/aws/aws-sdk-go-v2/credentials v1.13.13/go.mod h1:DW9nbIIF9MrIja0cBQrUpeWYQMSlNmP8fevLUyF9W38= | ||||
| github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.22 h1:3aMfcTmoXtTZnaT86QlVaYh+BRMbvrrmZwIQ5jWqCZQ= | ||||
| github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.22/go.mod h1:YGSIJyQ6D6FjKMQh16hVFSIUD54L4F7zTGePqYMYYJU= | ||||
| github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.53 h1:h1MmqGtYgkf49DhG2BSjGukpm8c+BJ9CL+bBbdFGzlk= | ||||
| github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.53/go.mod h1:mlWLxwKZNeEwE+3Pko07lSr1NvHZwUtdzmo9AiGn7QU= | ||||
| github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.28 h1:r+XwaCLpIvCKjBIYy/HVZujQS9tsz5ohHG3ZIe0wKoE= | ||||
| github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.28/go.mod h1:3lwChorpIM/BhImY/hy+Z6jekmN92cXGPI1QJasVPYY= | ||||
| github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.22 h1:7AwGYXDdqRQYsluvKFmWoqpcOQJ4bH634SkYf3FNj/A= | ||||
| github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.22/go.mod h1:EqK7gVrIGAHyZItrD1D8B0ilgwMD1GiWAmbU4u/JHNk= | ||||
| github.com/aws/aws-sdk-go-v2/internal/ini v1.3.29 h1:J4xhFd6zHhdF9jPP0FQJ6WknzBboGMBNjKOv4iTuw4A= | ||||
| github.com/aws/aws-sdk-go-v2/internal/ini v1.3.29/go.mod h1:TwuqRBGzxjQJIwH16/fOZodwXt2Zxa9/cwJC5ke4j7s= | ||||
| github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.20 h1:YIvKIfPXQVp0EhXUV644kmQo6cQPPSRmC44A1HSoJeg= | ||||
| github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.20/go.mod h1:8W88sW3PjamQpKFUQvHWWKay6ARsNvZnzU7+a4apubw= | ||||
| github.com/aws/aws-sdk-go-v2/config v1.18.25 h1:JuYyZcnMPBiFqn87L2cRppo+rNwgah6YwD3VuyvaW6Q= | ||||
| github.com/aws/aws-sdk-go-v2/config v1.18.25/go.mod h1:dZnYpD5wTW/dQF0rRNLVypB396zWCcPiBIvdvSWHEg4= | ||||
| github.com/aws/aws-sdk-go-v2/credentials v1.13.24 h1:PjiYyls3QdCrzqUN35jMWtUK1vqVZ+zLfdOa/UPFDp0= | ||||
| github.com/aws/aws-sdk-go-v2/credentials v1.13.24/go.mod h1:jYPYi99wUOPIFi0rhiOvXeSEReVOzBqFNOX5bXYoG2o= | ||||
| github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.3 h1:jJPgroehGvjrde3XufFIJUZVK5A2L9a3KwSFgKy9n8w= | ||||
| github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.3/go.mod h1:4Q0UFP0YJf0NrsEuEYHpM9fTSEVnD16Z3uyEF7J9JGM= | ||||
| github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.67 h1:fI9/5BDEaAv/pv1VO1X1n3jfP9it+IGqWsCuuBQI8wM= | ||||
| github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.67/go.mod h1:zQClPRIwQZfJlZq6WZve+s4Tb4JW+3V6eS+4+KrYeP8= | ||||
| github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.33 h1:kG5eQilShqmJbv11XL1VpyDbaEJzWxd4zRiCG30GSn4= | ||||
| github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.33/go.mod h1:7i0PF1ME/2eUPFcjkVIwq+DOygHEoK92t5cDqNgYbIw= | ||||
| github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.27 h1:vFQlirhuM8lLlpI7imKOMsjdQLuN9CPi+k44F/OFVsk= | ||||
| github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.27/go.mod h1:UrHnn3QV/d0pBZ6QBAEQcqFLf8FAzLmoUfPVIueOvoM= | ||||
| github.com/aws/aws-sdk-go-v2/internal/ini v1.3.34 h1:gGLG7yKaXG02/jBlg210R7VgQIotiQntNhsCFejawx8= | ||||
| github.com/aws/aws-sdk-go-v2/internal/ini v1.3.34/go.mod h1:Etz2dj6UHYuw+Xw830KfzCfWGMzqvUTCjUj5b76GVDc= | ||||
| github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.25 h1:AzwRi5OKKwo4QNqPf7TjeO+tK8AyOK3GVSwmRPo7/Cs= | ||||
| github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.25/go.mod h1:SUbB4wcbSEyCvqBxv/O/IBf93RbEze7U7OnoTlpPB+g= | ||||
| github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.11 h1:y2+VQzC6Zh2ojtV2LoC0MNwHWc6qXv/j2vrQtlftkdA= | ||||
| github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.11/go.mod h1:iV4q2hsqtNECrfmlXyord9u4zyuFEJX9eLgLpSPzWA8= | ||||
| github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.23 h1:c5+bNdV8E4fIPteWx4HZSkqI07oY9exbfQ7JH7Yx4PI= | ||||
| github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.23/go.mod h1:1jcUfF+FAOEwtIcNiHPaV4TSoZqkUIPzrohmD7fb95c= | ||||
| github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.22 h1:LjFQf8hFuMO22HkV5VWGLBvmCLBCLPivUAmpdpnp4Vs= | ||||
| github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.22/go.mod h1:xt0Au8yPIwYXf/GYPy/vl4K3CgwhfQMYbrH7DlUUIws= | ||||
| github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.22 h1:ISLJ2BKXe4zzyZ7mp5ewKECiw0U7KpLgS3S6OxY9Cm0= | ||||
| github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.22/go.mod h1:QFVbqK54XArazLvn2wvWMRBi/jGrWii46qbr5DyPGjc= | ||||
| github.com/aws/aws-sdk-go-v2/service/s3 v1.30.3 h1:PVieHTwugdlHedlxLpYLQsOZAq736RScuEb/m4zhzc4= | ||||
| github.com/aws/aws-sdk-go-v2/service/s3 v1.30.3/go.mod h1:XN3YcdmnWYZ3Hrnojvo5p2mc/wfF973nkq3ClXPDMHk= | ||||
| github.com/aws/aws-sdk-go-v2/service/sso v1.12.2 h1:EN102fWY7hI5u/2FPheTrwwMHkSXfl49RYkeEnJsrCU= | ||||
| github.com/aws/aws-sdk-go-v2/service/sso v1.12.2/go.mod h1:IgV8l3sj22nQDd5qcAGY0WenwCzCphqdbFOpfktZPrI= | ||||
| github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.2 h1:f1lmlce7r13CX1BPyPqt9oh/H+uqOWc9367lDoGGwNQ= | ||||
| github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.2/go.mod h1:O1YSOg3aekZibh2SngvCRRG+cRHKKlYgxf/JBF/Kr/k= | ||||
| github.com/aws/aws-sdk-go-v2/service/sts v1.18.3 h1:s49mSnsBZEXjfGBkRfmK+nPqzT7Lt3+t2SmAKNyHblw= | ||||
| github.com/aws/aws-sdk-go-v2/service/sts v1.18.3/go.mod h1:b+psTJn33Q4qGoDaM7ZiOVVG8uVjGI6HaZ8WBHdgDgU= | ||||
| github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.28 h1:vGWm5vTpMr39tEZfQeDiDAMgk+5qsnvRny3FjLpnH5w= | ||||
| github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.28/go.mod h1:spfrICMD6wCAhjhzHuy6DOZZ+LAIY10UxhUmLzpJTTs= | ||||
| github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.27 h1:0iKliEXAcCa2qVtRs7Ot5hItA2MsufrphbRFlz1Owxo= | ||||
| github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.27/go.mod h1:EOwBD4J4S5qYszS5/3DpkejfuK+Z5/1uzICfPaZLtqw= | ||||
| github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.14.2 h1:NbWkRxEEIRSCqxhsHQuMiTH7yo+JZW1gp8v3elSVMTQ= | ||||
| github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.14.2/go.mod h1:4tfW5l4IAB32VWCDEBxCRtR9T4BWy4I4kr1spr8NgZM= | ||||
| github.com/aws/aws-sdk-go-v2/service/s3 v1.33.1 h1:O+9nAy9Bb6bJFTpeNFtd9UfHbgxO1o4ZDAM9rQp5NsY= | ||||
| github.com/aws/aws-sdk-go-v2/service/s3 v1.33.1/go.mod h1:J9kLNzEiHSeGMyN7238EjJmBpCniVzFda75Gxl/NqB8= | ||||
| github.com/aws/aws-sdk-go-v2/service/sso v1.12.10 h1:UBQjaMTCKwyUYwiVnUt6toEJwGXsLBI6al083tpjJzY= | ||||
| github.com/aws/aws-sdk-go-v2/service/sso v1.12.10/go.mod h1:ouy2P4z6sJN70fR3ka3wD3Ro3KezSxU6eKGQI2+2fjI= | ||||
| github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.10 h1:PkHIIJs8qvq0e5QybnZoG1K/9QTrLr9OsqCIo59jOBA= | ||||
| github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.10/go.mod h1:AFvkxc8xfBe8XA+5St5XIHHrQQtkxqrRincx4hmMHOk= | ||||
| github.com/aws/aws-sdk-go-v2/service/sts v1.19.0 h1:2DQLAKDteoEDI8zpCzqBMaZlJuoE9iTYD0gFmXVax9E= | ||||
| github.com/aws/aws-sdk-go-v2/service/sts v1.19.0/go.mod h1:BgQOMsg8av8jset59jelyPW7NoZcZXLVpDsXunGDrk8= | ||||
| github.com/aws/smithy-go v1.13.5 h1:hgz0X/DX0dGqTYpGALqXJoRKRj5oQ7150i5FdTePzO8= | ||||
| github.com/aws/smithy-go v1.13.5/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= | ||||
| github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| module github.com/gofiber/storage/sqlite3 | ||||
|  | ||||
| go 1.16 | ||||
| go 1.17 | ||||
|  | ||||
| require ( | ||||
| 	github.com/gofiber/utils v1.0.1 | ||||
| 	github.com/mattn/go-sqlite3 v1.14.16 | ||||
| 	github.com/gofiber/utils v1.1.0 | ||||
| 	github.com/mattn/go-sqlite3 v1.14.17 | ||||
| ) | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| github.com/gofiber/utils v1.0.1 h1:knct4cXwBipWQqFrOy1Pv6UcgPM+EXo9jDgc66V1Qio= | ||||
| github.com/gofiber/utils v1.0.1/go.mod h1:pacRFtghAE3UoknMOUiXh2Io/nLWSUHtQCi/3QASsOc= | ||||
| github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y= | ||||
| github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= | ||||
| github.com/gofiber/utils v1.1.0 h1:vdEBpn7AzIUJRhe+CiTOJdUcTg4Q9RK+pEa0KPbLdrM= | ||||
| github.com/gofiber/utils v1.1.0/go.mod h1:poZpsnhBykfnY1Mc0KeEa6mSHrS3dV0+oBWyeQmb2e0= | ||||
| github.com/mattn/go-sqlite3 v1.14.17 h1:mCRHCLDUBXgpKAqIKsaAaAsrAlbkeomtRFKXh2L6YIM= | ||||
| github.com/mattn/go-sqlite3 v1.14.17/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= | ||||
|   | ||||
		Reference in New Issue
	
	Block a user