Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MaxJSONSize and MaxXMLSize must be greater than zero #114

Open
wants to merge 250 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
250 commits
Select commit Hold shift + click to select a range
b3b7754
Merge pull request #1 from tsawler/development
tsawler Mar 31, 2022
beebcbc
Merge pull request #2 from tsawler/development
tsawler Mar 31, 2022
60af551
Merge pull request #3 from tsawler/development
tsawler Mar 31, 2022
0007be4
Merge pull request #4 from tsawler/development
tsawler Mar 31, 2022
c6e68d6
Merge pull request #5 from tsawler/development
tsawler Mar 31, 2022
3c2a06a
Merge pull request #6 from tsawler/development
tsawler Mar 31, 2022
f67a434
Merge pull request #7 from tsawler/development
tsawler Mar 31, 2022
bda5799
Merge pull request #8 from tsawler/development
tsawler Apr 1, 2022
5d97417
Merge pull request #9 from tsawler/development
tsawler Apr 1, 2022
e8171ea
Merge pull request #10 from tsawler/development
tsawler Apr 3, 2022
18594e1
Merge pull request #11 from tsawler/development
tsawler Apr 3, 2022
eed1b85
Merge pull request #12 from tsawler/development
tsawler Apr 3, 2022
bf7e8a1
Merge pull request #13 from tsawler/development
tsawler Apr 3, 2022
3eb0a9c
Merge pull request #14 from tsawler/development
tsawler Apr 3, 2022
1230b4e
Merge pull request #15 from tsawler/development
tsawler Apr 3, 2022
7eaa15b
Merge pull request #16 from tsawler/development
tsawler Apr 3, 2022
ec3c33e
Merge pull request #17 from tsawler/development
tsawler Apr 3, 2022
fe9ff8e
Merge pull request #18 from tsawler/development
tsawler Apr 3, 2022
11ad254
Merge pull request #19 from tsawler/development
tsawler Apr 3, 2022
202a137
Merge pull request #20 from tsawler/development
tsawler Apr 4, 2022
9c6ef85
Merge pull request #21 from tsawler/development
tsawler Apr 4, 2022
b397d49
Merge pull request #22 from tsawler/development
tsawler Apr 4, 2022
fd6c095
Merge pull request #23 from tsawler/development
tsawler Apr 4, 2022
e3034a2
Merge pull request #24 from tsawler/development
tsawler Apr 4, 2022
e40c1b6
Merge pull request #25 from tsawler/development
tsawler Apr 4, 2022
cbe168e
Merge pull request #26 from tsawler/development
tsawler Apr 4, 2022
cbb6226
Merge pull request #27 from tsawler/development
tsawler Apr 5, 2022
f94f437
Merge pull request #28 from tsawler/development
tsawler Apr 5, 2022
25dd86c
Merge pull request #29 from tsawler/development
tsawler Apr 6, 2022
63775e8
Merge pull request #30 from tsawler/development
tsawler Apr 6, 2022
c3396f6
Merge pull request #31 from tsawler/development
tsawler Apr 6, 2022
11a5ee1
Merge pull request #32 from tsawler/development
tsawler Apr 8, 2022
1fe9ed5
Merge pull request #33 from tsawler/development
tsawler Apr 9, 2022
bb8df9a
Merge pull request #34 from tsawler/development
tsawler Apr 9, 2022
d6a3d06
Merge pull request #35 from tsawler/development
tsawler Apr 9, 2022
58e16b7
Merge pull request #36 from tsawler/development
tsawler Apr 9, 2022
de1c167
Merge pull request #37 from tsawler/development
tsawler Apr 9, 2022
ff1e8d8
Merge pull request #38 from tsawler/development
tsawler Apr 10, 2022
796e7ed
Merge pull request #39 from tsawler/development
tsawler Apr 10, 2022
89a5f93
Merge pull request #40 from tsawler/development
tsawler Apr 12, 2022
5ab154a
Merge pull request #41 from tsawler/development
tsawler Apr 12, 2022
bc2f8df
Merge pull request #42 from tsawler/development
tsawler Apr 12, 2022
c547e25
Merge pull request #43 from tsawler/development
tsawler Apr 27, 2022
feab64a
Merge pull request #44 from tsawler/development
tsawler May 8, 2022
932a662
Merge pull request #45 from tsawler/development
tsawler May 14, 2022
4140c6d
Update readme
tsawler Jul 2, 2022
419ff46
update readme
tsawler Jul 2, 2022
f51b2ae
simplify
tsawler Jul 3, 2022
dcf55f2
restrict file types on upload
tsawler Jul 3, 2022
e7bc7e5
improvements for cross-platform file uploads
tsawler Jul 3, 2022
9cb98bb
update readme
tsawler Jul 3, 2022
4c65a41
update readme
tsawler Jul 3, 2022
04b522f
update test
tsawler Jul 3, 2022
4691ec8
typo in readme
tsawler Jul 3, 2022
57e69ae
Check for file size on upload
tsawler Jul 3, 2022
b2006b0
Check for file size on upload
tsawler Jul 3, 2022
30bed91
Allow for preserving original filename when uploading a file.
tsawler Jul 4, 2022
4d34f68
update the readme
tsawler Jul 4, 2022
3576f63
update the readme
tsawler Jul 4, 2022
e60d157
improve reading json
tsawler Jul 4, 2022
5d6bdcc
improve reading json
tsawler Jul 4, 2022
f653cfe
fix default for renaming files
tsawler Jul 4, 2022
a0d3c1b
fix default for renaming files
tsawler Jul 4, 2022
27cfe13
remove dependency
tsawler Jul 4, 2022
7832f99
comments
tsawler Jul 4, 2022
13eb2a9
any -> interface{}, for backwards compatibility
tsawler Jul 4, 2022
97ac176
marshalindent -> marshal
tsawler Jul 4, 2022
0401123
Update readme
tsawler Jul 4, 2022
fe3ec25
Update readme
tsawler Jul 4, 2022
339334c
Update tests; remove panic
tsawler Jul 5, 2022
bb97020
add table test
tsawler Jul 5, 2022
3dcfffa
add table test
tsawler Jul 5, 2022
476b596
tests
tsawler Jul 5, 2022
41d0625
tests
tsawler Jul 5, 2022
ea3ae20
tests
tsawler Jul 5, 2022
8c0ae56
tests
tsawler Jul 5, 2022
65954c4
tests
tsawler Jul 5, 2022
4a4641f
update readme
tsawler Jul 5, 2022
eccebef
Permit more than one file in upload
tsawler Jul 6, 2022
2e4941c
Update readme
tsawler Jul 6, 2022
08e0d4a
Typo in readme
tsawler Jul 6, 2022
cc968c8
Merge pull request #46 from tsawler/development
tsawler Jul 6, 2022
9124c27
Update readme
tsawler Jul 6, 2022
38367ed
Merge pull request #47 from tsawler/development
tsawler Jul 6, 2022
a61f0dc
readme
tsawler Jul 6, 2022
394393a
Merge pull request #48 from tsawler/development
tsawler Jul 6, 2022
752c6c5
Add convenience method
tsawler Jul 6, 2022
6736fce
update tests
tsawler Jul 6, 2022
5f63592
Merge pull request #49 from tsawler/development
tsawler Jul 6, 2022
4f44d3e
create the directory when uploading files
tsawler Jul 6, 2022
9821826
Update readme
tsawler Jul 6, 2022
a2fef41
Merge pull request #50 from tsawler/development
tsawler Jul 6, 2022
ebcdae6
add TODO item
tsawler Jul 6, 2022
01b5473
Return response in PushJSONToRemote
tsawler Jul 6, 2022
6eb407b
Merge pull request #51 from tsawler/development
tsawler Jul 6, 2022
834afde
comments
tsawler Jul 6, 2022
73ac1cc
wrap for loop contents in func to take care of deferring things
tsawler Jul 6, 2022
dd4b8a1
Merge pull request #52 from tsawler/development
tsawler Jul 6, 2022
26f0e63
typo
tsawler Jul 6, 2022
725942f
Merge pull request #53 from tsawler/development
tsawler Jul 6, 2022
f20f050
allow unknown fields in JSON if desired
tsawler Jul 6, 2022
7e61c53
allow unknown fields in JSON if desired
tsawler Jul 6, 2022
e092fa8
Merge pull request #54 from tsawler/development
tsawler Jul 6, 2022
96aff43
formatting
tsawler Jul 6, 2022
837375f
rename testApp -> testTools (which makes more sense)
tsawler Jul 6, 2022
c60265d
Merge pull request #55 from tsawler/development
tsawler Jul 6, 2022
85ac2ad
typo
tsawler Jul 6, 2022
ad6f0b9
typo
tsawler Jul 6, 2022
01c012f
Merge pull request #56 from tsawler/development
tsawler Jul 6, 2022
15bbe61
grammar
tsawler Jul 7, 2022
75fdaa5
Merge pull request #57 from tsawler/development
tsawler Jul 7, 2022
bb63669
improve readme example html
tsawler Jul 7, 2022
1bde3b6
Merge pull request #58 from tsawler/development
tsawler Jul 7, 2022
6b25226
use fmt.Sprintf instead of concatenation
tsawler Jul 7, 2022
6e50f1d
Merge pull request #59 from tsawler/development
tsawler Jul 7, 2022
2848fad
Change order of parameters so that http client defaults to stdlib, bu…
tsawler Jul 7, 2022
bb2dd55
Merge pull request #60 from tsawler/development
tsawler Jul 7, 2022
9f50480
Update readme with example to push JSON to remote
tsawler Jul 7, 2022
10c4286
Update readme with example to push JSON to remote
tsawler Jul 7, 2022
89d936c
Merge pull request #61 from tsawler/development
tsawler Jul 7, 2022
d4096f1
Correct appending to slice when multiple files uploaded in one request
tsawler Jul 7, 2022
aa89f97
Merge remote-tracking branch 'origin/development' into development
tsawler Jul 7, 2022
3ea250c
Merge pull request #62 from tsawler/development
tsawler Jul 7, 2022
ba876b2
Add slugify method & tests
tsawler Jul 7, 2022
ecec4e4
Update readme
tsawler Jul 7, 2022
8a014bc
use raw string in regex
tsawler Jul 7, 2022
91c8825
Merge pull request #63 from tsawler/development
tsawler Jul 7, 2022
344743d
update readme
tsawler Jul 7, 2022
c415b67
Merge pull request #64 from tsawler/development
tsawler Jul 7, 2022
b9c772a
update readme
tsawler Jul 10, 2022
3f6a8c3
Merge pull request #65 from tsawler/development
tsawler Jul 10, 2022
1fd448f
add default max file size
tsawler Jul 11, 2022
e23ed8f
Merge pull request #66 from tsawler/development
tsawler Jul 11, 2022
1e1e08e
improve error message
tsawler Jul 11, 2022
e58f083
Merge pull request #67 from tsawler/development
tsawler Jul 11, 2022
452bb46
use fmt.Errorf
tsawler Jul 11, 2022
da5b2c0
Merge pull request #68 from tsawler/development
tsawler Jul 11, 2022
fff4fb3
Update readme
tsawler Jul 11, 2022
e9e45d0
Merge pull request #69 from tsawler/development
tsawler Jul 11, 2022
b43bf8d
comment
tsawler Jul 12, 2022
386d8a2
Merge pull request #70 from tsawler/development
tsawler Jul 12, 2022
ec28375
fix test
tsawler Jul 13, 2022
62527d8
Merge remote-tracking branch 'origin/main'
tsawler Jul 13, 2022
c18a1d7
tests
tsawler Jul 13, 2022
e19edf5
Merge pull request #71 from tsawler/development
tsawler Jul 13, 2022
1f2043d
Readme
tsawler Jul 14, 2022
ae78d9f
Merge pull request #72 from tsawler/development
tsawler Jul 14, 2022
d892d0f
comments
tsawler Jul 22, 2022
c774d03
Merge pull request #73 from tsawler/development
tsawler Jul 22, 2022
e47438b
add test
tsawler Jul 26, 2022
d5cdfda
fix name
tsawler Jul 27, 2022
bb6f711
Merge pull request #74 from tsawler/development
tsawler Jul 27, 2022
9187067
add comments
tsawler Jul 28, 2022
63fe1f4
Merge pull request #75 from tsawler/development
tsawler Jul 28, 2022
c137e5b
add comments
tsawler Jul 28, 2022
b2e66a1
Merge pull request #76 from tsawler/development
tsawler Jul 28, 2022
0674903
add comments
tsawler Jul 28, 2022
874d70a
Merge pull request #77 from tsawler/development
tsawler Jul 28, 2022
7312287
fix test for errorjson
tsawler Jul 28, 2022
9a99923
Merge pull request #78 from tsawler/development
tsawler Jul 28, 2022
8d90f39
add comments
tsawler Jul 30, 2022
692c760
Merge pull request #79 from tsawler/development
tsawler Jul 30, 2022
fde2543
update comments
tsawler Aug 4, 2022
ef6e01e
Merge pull request #80 from tsawler/development
tsawler Aug 4, 2022
9d818f0
grammar
tsawler Oct 16, 2022
9c800ba
Merge pull request #81 from tsawler/development
tsawler Oct 16, 2022
edc1740
Add WriteXML
tsawler Apr 5, 2023
f22fc31
Merge pull request #82 from tsawler/development
tsawler Apr 5, 2023
571330e
update tests
tsawler Apr 6, 2023
54a61e0
Merge pull request #83 from tsawler/development
tsawler Apr 6, 2023
670c7ee
update tests
tsawler Apr 6, 2023
31331bf
update tests
tsawler Apr 6, 2023
decb111
update tests
tsawler Apr 6, 2023
486b4e4
Merge pull request #84 from tsawler/development
tsawler Apr 6, 2023
2a0f63b
remove deprecated ioutil
tsawler Apr 6, 2023
03176c2
Merge pull request #85 from tsawler/development
tsawler Apr 6, 2023
cbeeba0
Add test for WriteXML
tsawler Apr 6, 2023
dd230a3
Merge pull request #86 from tsawler/development
tsawler Apr 6, 2023
ca77dd0
Update readme
tsawler Apr 6, 2023
249de0c
Merge pull request #87 from tsawler/development
tsawler Apr 6, 2023
a5f8e36
add ReadXML
tsawler Apr 6, 2023
6b9a47f
add ReadXML
tsawler Apr 6, 2023
9ba1336
Merge pull request #88 from tsawler/development
tsawler Apr 6, 2023
52d8c2a
improve test coverage
tsawler Apr 7, 2023
d40bdf2
Merge pull request #89 from tsawler/development
tsawler Apr 7, 2023
a9ec456
improve tests
tsawler Apr 7, 2023
f3d796b
correct check for max file size
tsawler Apr 7, 2023
2c86f0f
Merge pull request #90 from tsawler/development
tsawler Apr 7, 2023
e2ede8b
formatting
tsawler Apr 7, 2023
30b6070
improve tests
tsawler Apr 7, 2023
d45e47a
clean up
tsawler Apr 7, 2023
8582a42
Merge pull request #91 from tsawler/development
tsawler Apr 7, 2023
3174d5c
update badge
tsawler Apr 7, 2023
2770744
Merge pull request #92 from tsawler/development
tsawler Apr 7, 2023
50934f1
improve tests
tsawler Apr 7, 2023
862b9f7
Merge pull request #93 from tsawler/development
tsawler Apr 7, 2023
2cd9f40
add ErrorXML method
tsawler Apr 7, 2023
6fbe8da
update readme
tsawler Apr 7, 2023
effde78
Merge pull request #94 from tsawler/development
tsawler Apr 7, 2023
056d586
comments
tsawler Apr 7, 2023
d8bbcd2
comments
tsawler Apr 7, 2023
195e49c
Merge pull request #95 from tsawler/development
tsawler Apr 7, 2023
ef3600e
add test case for ReadJSON
tsawler Apr 10, 2023
c61fcd3
Merge pull request #96 from tsawler/development
tsawler Apr 10, 2023
78e577b
improve tests
tsawler Apr 10, 2023
5b40108
Merge pull request #97 from tsawler/development
tsawler Apr 10, 2023
6415005
Add check for Content-Type header; simplify error checking; improve t…
tsawler Apr 10, 2023
3bb84c9
Merge pull request #98 from tsawler/development
tsawler Apr 10, 2023
0a57262
Lint
tsawler Apr 10, 2023
f281248
comments
tsawler Apr 10, 2023
acb186b
Merge pull request #99 from tsawler/development
tsawler Apr 10, 2023
907638c
badge
tsawler Apr 18, 2023
9d25a88
Merge pull request #100 from tsawler/development
tsawler Apr 18, 2023
0e097e2
Add comment.
tsawler Apr 21, 2023
8bedbf8
Merge pull request #101 from tsawler/development
tsawler Apr 21, 2023
57add5b
Add comment.
tsawler Apr 26, 2023
027604f
Merge pull request #102 from tsawler/development
tsawler Apr 26, 2023
917e45a
Add DownloadLargeFile.
tsawler Apr 26, 2023
252a33d
remove download method.
tsawler Apr 26, 2023
d8ba6cf
Merge pull request #103 from tsawler/development
tsawler Apr 26, 2023
ee45805
Improve tests
tsawler Apr 27, 2023
4519b27
Merge pull request #104 from tsawler/development
tsawler Apr 27, 2023
a226c53
Improve comments.
tsawler May 18, 2023
59e9a42
Merge pull request #105 from tsawler/development
tsawler May 18, 2023
a13c1a1
Drop else and outdent block.
tsawler May 18, 2023
bf29dbf
Merge pull request #106 from tsawler/development
tsawler May 18, 2023
f2548f1
Improve error message.
tsawler May 18, 2023
6f90f0f
Merge pull request #107 from tsawler/development
tsawler May 18, 2023
bb0a19d
Add XML header to output.
tsawler Jun 14, 2023
f25b16a
Merge pull request #108 from tsawler/development
tsawler Jun 14, 2023
0e19b10
Formatting
tsawler Jun 14, 2023
d912205
Merge pull request #109 from tsawler/development
tsawler Jun 14, 2023
c9015c2
correct path in badge
tsawler Jun 26, 2023
fa706e7
Merge pull request #110 from tsawler/development
tsawler Jun 26, 2023
5d40b14
set larger default upload size
tsawler Aug 17, 2023
f685bdd
Merge pull request #111 from tsawler/development
tsawler Aug 17, 2023
1d26ea1
Add loggers.
tsawler Nov 23, 2023
6e61f57
Add loggers.
tsawler Nov 23, 2023
ff55bf4
Merge pull request #112 from tsawler/development
tsawler Nov 23, 2023
15b0b98
Update tests
tsawler Nov 23, 2023
91f9628
Merge pull request #113 from tsawler/development
tsawler Nov 23, 2023
da425fd
MaxJSONSize and MaxXMLSize must be greater than zero
mstgnz Dec 24, 2023
2be358d
load sql
mstgnz Dec 28, 2023
5f79099
test sql
mstgnz Dec 28, 2023
87d8aa0
readme
mstgnz Dec 28, 2023
34cfd15
some fix
mstgnz Dec 29, 2023
47835fe
some fix
mstgnz Dec 29, 2023
991eb09
change func name
mstgnz Jan 5, 2024
9808e78
readme
mstgnz Jan 6, 2024
31ac0d9
fix load sql
mstgnz Jun 5, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,19 @@ on:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:

jobs:

audit:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3

- name: Set up Go
uses: actions/setup-go@v2
uses: actions/setup-go@v3
with:
go-version: 1.18
go-version: 1.19

- name: Verify dependencies
run: go mod verify
Expand All @@ -37,4 +38,7 @@ jobs:
run: golint ./...

- name: Run tests
run: go test -race -vet=off ./...
run: go test -race -vet=off ./...

- name: Update coverage report
uses: ncruces/go-coverage-report@main
6 changes: 1 addition & 5 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
module github.com/tsawler/toolbox

go 1.18

require github.com/gabriel-vasile/mimetype v1.4.0

require golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4 // indirect
go 1.19
11 changes: 0 additions & 11 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,11 +0,0 @@
github.com/gabriel-vasile/mimetype v1.4.0 h1:Cn9dkdYsMIu56tGho+fqzh7XmvY2YyGU0FnbhiOsEro=
github.com/gabriel-vasile/mimetype v1.4.0/go.mod h1:fA8fi6KUiG7MgQQ+mEWotXoEOvmxRtOJlERCzSmRvr8=
golang.org/x/net v0.0.0-20210505024714-0287a6fb4125 h1:Ugb8sMTWuWRC3+sz5WeN/4kejDx9BvIwnPUiJBjJE+8=
golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4 h1:HVyaeDAYux4pnY+D/SiwmLOR36ewZ4iGQIIrtnuCjFA=
golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
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/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
78 changes: 78 additions & 0 deletions load_sql.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
package toolbox

import (
"bufio"
"fmt"
"os"
"strings"
)

// LoadSQLQueries loads SQL queries from a file and populates the QUERY map.
// This tool aims to facilitate the use of the go language's database/sql standard library.
// Writing SQL queries directly in the code can make it messy, so writing SQL queries in .sql files
// and then calling them from the code helps prevent code clutter,
// allowing SQL queries to be centralized in one place for better organization.
func (t *Tools) LoadSQLQueries(fileName string) (map[string]string, error) {
query := make(map[string]string)

file, err := os.Open(fileName)
if err != nil {
return query, err
}
defer func() {
_ = file.Close()
}()

query, err = parseSQLQueries(file, query)
return query, err
}

// parseSQLQueries reads the SQL queries from the provided file and populates the QUERY map.
func parseSQLQueries(file *os.File, query map[string]string) (map[string]string, error) {
scanner := bufio.NewScanner(file)
var key string
var queryBuilder strings.Builder
mstgnz marked this conversation as resolved.
Show resolved Hide resolved
for scanner.Scan() {
line := strings.TrimSpace(scanner.Text())
if isSQLQuery(line) || len(key) > 0 {
if len(key) > 0 {
if strings.HasSuffix(line, ";") {
queryBuilder.WriteString(line)
query[key] = queryBuilder.String()
key, queryBuilder = "", strings.Builder{}
} else {
queryBuilder.WriteString(line + " ")
mstgnz marked this conversation as resolved.
Show resolved Hide resolved
}
} else {
key = extractKey(line)
}
}
}
if err := scanner.Err(); err != nil {
return query, fmt.Errorf("error reading file: %w", err)
}
return query, nil
}

// isSQLQuery checks if the given line is an SQL query or a comment.
func isSQLQuery(line string) bool {
return hasPrefixInList(line, []string{"-- ", "SELECT", "INSERT", "UPDATE", "DELETE"})
}

// extractKey extracts the key from the comment line.
func extractKey(line string) string {
if strings.HasPrefix(line, "-- ") {
return strings.Split(line, "-- ")[1]
}
return ""
}

// hasPrefixInList is a prefix checker
func hasPrefixInList(str string, prefixes []string) bool {
for _, prefix := range prefixes {
if strings.HasPrefix(str, prefix) {
return true
}
}
return false
}
100 changes: 100 additions & 0 deletions load_sql_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
package toolbox

import (
"os"
"strconv"
"strings"
"testing"
)

var tools Tools

func TestLoadSQLQueries(t *testing.T) {
tests := []struct {
fileName string
key string
value string
equal bool
err bool
}{
{fileName: "./testdata/not.sql", key: "", value: "", equal: true, err: true},
{fileName: "./testdata/not.sql", key: "not", value: "", equal: true, err: true},
{fileName: "./testdata/not.sql", key: "not", value: "equal", equal: false, err: true},
{fileName: "./testdata/test.sql", key: "TEST1", value: "WHERE ass.id=$1;", equal: true, err: false},
{fileName: "./testdata/test.sql", key: "TEST1", value: "WHERE ass.id=$1", equal: false, err: false},
{fileName: "./testdata/test.sql", key: "TEST2", value: "id = $1;", equal: true, err: false},
}
for i, tt := range tests {
t.Run(strconv.Itoa(i), func(t *testing.T) {
query, err := tools.LoadSQLQueries(tt.fileName)
if (err != nil) != tt.err {
t.Errorf("LoadSQLQueries() error: %v, except: %v", err, tt.err)
}
if strings.HasSuffix(query[tt.key], tt.value) != tt.equal {
t.Errorf("LoadSQLQueries() error: %v, except: %v", err, tt.equal)
}
})
}
}

func TestParseSQLQueries(t *testing.T) {
file, err := os.Open("./testdata/test.sql")
defer func(file *os.File) {
_ = file.Close()
}(file)
if (err != nil) != false {
t.Errorf("File Open result: %v, expect: %v", false, true)
}
_, err = parseSQLQueries(file, make(map[string]string))
if (err != nil) != false {
t.Errorf("parseSQLQueries() result: %v, expect: %v", false, true)
}
}

func TestIsSQLQuery(t *testing.T) {
if result := isSQLQuery("-- "); result != true {
t.Errorf("isSQLQuery() result: %v, expect: %v", result, true)
}
if result := isSQLQuery("--"); result != false {
t.Errorf("isSQLQuery() result: %v, expect: %v", result, false)
}
}

func TestExtractKey(t *testing.T) {
tests := []struct {
value string
expect string
}{
{value: "-- ABC", expect: "ABC"},
{value: "DEF", expect: ""},
}
for i, tt := range tests {
t.Run(strconv.Itoa(i), func(t *testing.T) {
if result := extractKey(tt.value); result != tt.expect {
t.Errorf("extractKey() result: %v, expect: %v", result, tt.expect)
}
})
}
}

func TestHasPrefixInList(t *testing.T) {
type args struct {
key string
value []string
}
tests := []struct {
args args
expect bool
}{
{args: args{key: "abc"}, expect: false},
{args: args{key: "abc", value: []string{"abc", "def"}}, expect: true},
{args: args{key: "xyz", value: []string{"abc", "def"}}, expect: false},
}
for i, tt := range tests {
t.Run(strconv.Itoa(i), func(t *testing.T) {
if result := hasPrefixInList(tt.args.key, tt.args.value); result != tt.expect {
t.Errorf("hasPrefixInList() result: %v, expect: %v", result, tt.expect)
}
})
}
}
Loading