diff --git a/.gitignore b/.gitignore index 6a2dd92d..290a6f30 100644 --- a/.gitignore +++ b/.gitignore @@ -158,7 +158,7 @@ db.sqlite3 db.sqlite3-journal # SQL -*.sql +*.sql # Flask stuff: instance/ diff --git a/cli/go.mod b/cli/go.mod index 4b438cd4..75f22904 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -1,6 +1,8 @@ module github.com/TheOpenDictionary/odict/cli -go 1.20 +go 1.21.0 + +toolchain go1.21.6 require ( github.com/TheOpenDictionary/odict/lib/config v0.0.0-20231024210539-d4e83ae7bfdc diff --git a/go.work.sum b/go.work.sum index 3198d216..dd8e37f3 100644 --- a/go.work.sum +++ b/go.work.sum @@ -4,80 +4,47 @@ github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.11.0/go.mod h1:HcM1YX14R7CJc github.com/Azure/azure-sdk-for-go/sdk/internal v0.7.0/go.mod h1:yqy467j36fJxcRV2TzfVZ1pCb5vxm4BtZPUdYWe/Xo8= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= -github.com/RoaringBitmap/roaring v1.2.3/go.mod h1:plvDsJQpxOC5bw8LRteu/MLWHsHez/3y6cubLI4/1yE= github.com/TheOpenDictionary/odict/lib/config v0.0.0-20230806153940-6b01ba7136fa/go.mod h1:+aU3saFQkiASuB07qTVt49KAMEJVE5V9U0zV2USCwYo= -github.com/TheOpenDictionary/odict/lib/config v0.0.0-20231031041149-dd406d841689/go.mod h1:+aU3saFQkiASuB07qTVt49KAMEJVE5V9U0zV2USCwYo= github.com/TheOpenDictionary/odict/lib/core v0.0.0-20230921060249-e2cb2527d998/go.mod h1:bz2jtd8Ob3xfAjDczf21YrQbLazM+SlQe4AydGa3K+8= github.com/TheOpenDictionary/odict/lib/core v0.0.0-20231024210539-d4e83ae7bfdc/go.mod h1:6r7Uve6zyCBEQ3gF1eM68MMaKE28TahjOEXoXgqtYak= -github.com/TheOpenDictionary/odict/lib/core v0.0.0-20231031041149-dd406d841689/go.mod h1:vPC9yVsGR3mLL/l6/3sXFa8jC+f8B+TPv8y5HJV6n1k= github.com/TheOpenDictionary/odict/lib/dump v0.0.0-20231024210539-d4e83ae7bfdc/go.mod h1:n9iQP2j9K2UWqnr48FuF48n7y7WKJHidb9PH4MWVyTA= github.com/TheOpenDictionary/odict/lib/search v0.0.0-20231024210539-d4e83ae7bfdc/go.mod h1:QQP23s5hPNJMgBhiD1SpHD1ZkuTJCxXOR7kNeR+QrT8= github.com/TheOpenDictionary/odict/lib/server v0.0.0-20231024210539-d4e83ae7bfdc/go.mod h1:fnMKQbabDcNwRbn3H+oeRXABHhhVGfaHVgjOoUKw1Po= -github.com/TheOpenDictionary/odict/lib/test v0.0.0-20231031041149-dd406d841689/go.mod h1:GCSWJlVAmBLPIwBHbQvEw0TM5s+iOZETPNbSDHk8BVo= github.com/TheOpenDictionary/odict/lib/test v0.0.0-20231201204918-056ce8487757/go.mod h1:GCSWJlVAmBLPIwBHbQvEw0TM5s+iOZETPNbSDHk8BVo= github.com/TheOpenDictionary/odict/lib/test v0.0.0-20240109012151-688e6c29aa28/go.mod h1:GCSWJlVAmBLPIwBHbQvEw0TM5s+iOZETPNbSDHk8BVo= github.com/TheOpenDictionary/odict/lib/types v0.0.0-20230921060249-e2cb2527d998/go.mod h1:CFu/SVhm/v0fio+DwrsEgTCMLFctZcJbZxe4Ch5MY2U= -github.com/TheOpenDictionary/odict/lib/types v0.0.0-20231031041149-dd406d841689/go.mod h1:EyG+XUeVlK9nKtKexShKWlVwN2qd6Z4KoYdENtQlyT4= github.com/TheOpenDictionary/odict/lib/utils v0.0.0-20230921060249-e2cb2527d998/go.mod h1:J+wpUCVDLh4i6YWJPMFVNMT/rK/6H08fNpzgxrrdTtY= github.com/TheOpenDictionary/odict/lib/utils v0.0.0-20231201204918-056ce8487757/go.mod h1:PpECSsE6EVzk6sV4eFTNs3cj9eR2vtOosDdsb7EtLlI= -github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= -github.com/blevesearch/bleve/v2 v2.3.10/go.mod h1:RJzeoeHC+vNHsoLR54+crS1HmOWpnH87fL70HAUCzIA= github.com/blevesearch/bleve_index_api v1.1.4/go.mod h1:PbcwjIcRmjhGbkS/lJCpfgVSMROV6TRubGGAODaK1W8= -github.com/blevesearch/geo v0.1.18/go.mod h1:uRMGWG0HJYfWfFJpK3zTdnnr1K+ksZTuWKhXeSokfnM= -github.com/blevesearch/go-porterstemmer v1.0.3/go.mod h1:angGc5Ht+k2xhJdZi511LtmxuEf0OVpvUUNrwmM1P7M= -github.com/blevesearch/gtreap v0.1.1/go.mod h1:QaQyDRAT51sotthUWAH4Sj08awFSSWzgYICSZ3w0tYk= -github.com/blevesearch/mmap-go v1.0.4/go.mod h1:EWmEAOmdAS9z/pi/+Toxu99DnsbhG1TIxUoRmJw/pSs= -github.com/blevesearch/scorch_segment_api/v2 v2.1.6/go.mod h1:nQQYlp51XvoSVxcciBjtvuHPIVjlWrN1hX4qwK2cqdc= -github.com/blevesearch/segment v0.9.1/go.mod h1:zN21iLm7+GnBHWTao9I+Au/7MBiL8pPFtJBJTsk6kQw= -github.com/blevesearch/snowballstem v0.9.0/go.mod h1:PivSj3JMc8WuaFkTSRDW2SlrulNWPl4ABg1tC/hlgLs= -github.com/blevesearch/upsidedown_store_api v1.0.2/go.mod h1:M01mh3Gpfy56Ps/UXHjEO/knbqyQ1Oamg8If49gRwrQ= -github.com/blevesearch/vellum v1.0.10/go.mod h1:ul1oT0FhSMDIExNjIxHqJoGpVrBpKCdgDQNxfqgJt7k= -github.com/blevesearch/zapx/v11 v11.3.10/go.mod h1:0+gW+FaE48fNxoVtMY5ugtNHHof/PxCqh7CnhYdnMzQ= -github.com/blevesearch/zapx/v12 v12.3.10/go.mod h1:0yeZg6JhaGxITlsS5co73aqPtM04+ycnI6D1v0mhbCs= -github.com/blevesearch/zapx/v13 v13.3.10/go.mod h1:w2wjSDQ/WBVeEIvP0fvMJZAzDwqwIEzVPnCPrz93yAk= -github.com/blevesearch/zapx/v14 v14.3.10/go.mod h1:qqyuR0u230jN1yMmE4FIAuCxmahRQEOehF78m6oTgns= -github.com/blevesearch/zapx/v15 v15.3.13/go.mod h1:Turk/TNRKj9es7ZpKK95PS7f6D44Y7fAFy8F4LXQtGg= -github.com/bokwoon95/sq v0.4.5/go.mod h1:E3X8ARaXQ77XGMvjS0sQrcA1F5BZvq4Ck/91dPsMKR4= -github.com/bokwoon95/sqddl v0.4.9/go.mod h1:OKDpMxJCGMMtn52HdgltLH7M7zHrLo/lxGbnIkG6nQo= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/denisenkom/go-mssqldb v0.12.3/go.mod h1:k0mtMFOnU+AihqFxPMiF05rtiDrorD1Vrm1KEz5hxDo= github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= -github.com/go-xmlfmt/xmlfmt v1.1.2/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EOqtpKwwwHI= -github.com/golang/geo v0.0.0-20210211234256-740aa86cb551/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/json-iterator/go v0.0.0-20171115153421-f7279a603ede/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213/go.mod h1:vNUNkEQ1e29fT/6vq2aBdFsgNPmy8qMdSay1npru+Sw= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= -github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw= -github.com/mschoch/smat v0.2.0/go.mod h1:kc9mz7DoBKqDyiRL7VZN8KvXQMWeTaVnttLRXOlotKw= -github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/schollz/progressbar/v3 v3.14.1/go.mod h1:Zc9xXneTzWXF81TGoqL71u0sBPjULtEHYtj/WVgVy8E= -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/urfave/cli/v2 v2.27.1/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= -go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww= -golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/justfile b/justfile index c654c36c..3b479b4a 100644 --- a/justfile +++ b/justfile @@ -29,6 +29,9 @@ GOLANG_CROSS_VERSION := "v1.21.3" @publish +args="--auto-snapshot --clean": goreleaser release {{args}} +@snaps: + UPDATE_SNAPS=true just go test + @sync: go work sync diff --git a/lib/config/go.mod b/lib/config/go.mod index 9d3edd22..b090267f 100644 --- a/lib/config/go.mod +++ b/lib/config/go.mod @@ -10,8 +10,9 @@ require ( require ( github.com/davecgh/go-spew v1.1.1 // indirect - github.com/kr/text v0.1.0 // indirect + github.com/kr/pretty v0.3.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/rogpeppe/go-internal v1.11.0 // indirect golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/lib/config/go.sum b/lib/config/go.sum index 62b8c811..bbc8d1a3 100644 --- a/lib/config/go.sum +++ b/lib/config/go.sum @@ -1,8 +1,9 @@ github.com/TheOpenDictionary/odict/lib/test v0.0.0-20231201204918-056ce8487757 h1:HOb1lFasPHV10OBKDT6Xf5HJmgoxtZCGESHAP9XTlMU= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/samber/lo v1.39.0 h1:4gTz1wUhNYLhFSKl6O+8peW0v2F4BCY034GRpU9WnuA= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 h1:3MTrJm4PyNL9NBqvYDSj3DHl46qQakyfqfWo4jgfaEM= diff --git a/lib/core/go.mod b/lib/core/go.mod index 7b123c9f..443e38ed 100644 --- a/lib/core/go.mod +++ b/lib/core/go.mod @@ -18,8 +18,9 @@ require ( github.com/gomarkdown/markdown v0.0.0-20231222211730-1d6d20845b47 // indirect github.com/google/flatbuffers v23.5.26+incompatible // indirect github.com/imdario/mergo v0.3.16 // indirect - github.com/kr/text v0.1.0 // indirect + github.com/kr/pretty v0.3.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/rogpeppe/go-internal v1.11.0 // indirect golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/lib/core/go.sum b/lib/core/go.sum index 3c436a26..06829bf3 100644 --- a/lib/core/go.sum +++ b/lib/core/go.sum @@ -17,12 +17,11 @@ github.com/google/flatbuffers v23.5.26+incompatible/go.mod h1:1AeVuKshWv4vARoZat github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU= github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= 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/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/samber/lo v1.39.0 h1:4gTz1wUhNYLhFSKl6O+8peW0v2F4BCY034GRpU9WnuA= github.com/samber/lo v1.39.0/go.mod h1:+m/ZKRl6ClXCE2Lgf3MsQlWfh4bn1bz6CXEOxnEXnEA= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= diff --git a/lib/dump/go.mod b/lib/dump/go.mod index c04e0cbd..7089194e 100644 --- a/lib/dump/go.mod +++ b/lib/dump/go.mod @@ -1,6 +1,8 @@ module github.com/TheOpenDictionary/odict/lib/dump -go 1.20 +go 1.21.0 + +toolchain go1.21.6 require ( github.com/TheOpenDictionary/odict/lib/core v0.0.0-20230921060249-e2cb2527d998 @@ -17,8 +19,9 @@ require ( github.com/google/flatbuffers v23.5.26+incompatible // indirect github.com/google/uuid v1.5.0 // indirect github.com/imdario/mergo v0.3.16 // indirect - github.com/kr/text v0.1.0 // indirect + github.com/kr/pretty v0.3.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/rogpeppe/go-internal v1.11.0 // indirect github.com/samber/lo v1.39.0 // indirect golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/lib/dump/go.sum b/lib/dump/go.sum index 7dc693da..4ba05a0a 100644 --- a/lib/dump/go.sum +++ b/lib/dump/go.sum @@ -8,9 +8,10 @@ github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/google/flatbuffers v23.5.26+incompatible h1:M9dgRyhJemaM4Sw8+66GHBu8ioaQmyPLg1b8VwK5WJg= github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU= github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/samber/lo v1.39.0 h1:4gTz1wUhNYLhFSKl6O+8peW0v2F4BCY034GRpU9WnuA= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 h1:3MTrJm4PyNL9NBqvYDSj3DHl46qQakyfqfWo4jgfaEM= diff --git a/lib/search/go.mod b/lib/search/go.mod index f23d9ce9..e0613653 100644 --- a/lib/search/go.mod +++ b/lib/search/go.mod @@ -40,10 +40,12 @@ require ( github.com/google/uuid v1.5.0 // indirect github.com/imdario/mergo v0.3.16 // indirect github.com/json-iterator/go v0.0.0-20171115153421-f7279a603ede // indirect + github.com/kr/pretty v0.3.1 // indirect github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect github.com/mschoch/smat v0.2.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rivo/uniseg v0.4.4 // indirect + github.com/rogpeppe/go-internal v1.11.0 // indirect github.com/samber/lo v1.39.0 // indirect go.etcd.io/bbolt v1.3.7 // indirect golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 // indirect diff --git a/lib/search/go.sum b/lib/search/go.sum index f59ca51e..c2020e75 100644 --- a/lib/search/go.sum +++ b/lib/search/go.sum @@ -65,8 +65,8 @@ github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+h github.com/json-iterator/go v0.0.0-20171115153421-f7279a603ede h1:YrgBGwxMRK0Vq0WSCWFaZUnTsrA/PZE/xs1QZh+/edg= github.com/json-iterator/go v0.0.0-20171115153421-f7279a603ede/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213/go.mod h1:vNUNkEQ1e29fT/6vq2aBdFsgNPmy8qMdSay1npru+Sw= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db h1:62I3jR2EmQ4l5rM/4FEfDWcRD+abF5XlKShorW5LRoQ= github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw= @@ -76,6 +76,7 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/samber/lo v1.39.0 h1:4gTz1wUhNYLhFSKl6O+8peW0v2F4BCY034GRpU9WnuA= github.com/samber/lo v1.39.0/go.mod h1:+m/ZKRl6ClXCE2Lgf3MsQlWfh4bn1bz6CXEOxnEXnEA= github.com/schollz/progressbar/v3 v3.14.1 h1:VD+MJPCr4s3wdhTc7OEJ/Z3dAeBzJ7yKH/P4lC5yRTI= diff --git a/lib/server/go.mod b/lib/server/go.mod index ae0a5b07..35da59f4 100644 --- a/lib/server/go.mod +++ b/lib/server/go.mod @@ -6,8 +6,9 @@ require github.com/stretchr/testify v1.8.4 require ( github.com/davecgh/go-spew v1.1.1 // indirect - github.com/kr/pretty v0.1.0 // indirect + github.com/kr/pretty v0.3.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/rogpeppe/go-internal v1.11.0 // indirect gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/lib/server/go.sum b/lib/server/go.sum index b4a838d7..316fcd4b 100644 --- a/lib/server/go.sum +++ b/lib/server/go.sum @@ -1,7 +1,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/lib/sql/__snapshots__/sql_test.snap b/lib/sql/__snapshots__/sql_test.snap new file mode 100755 index 00000000..8bd23bf9 --- /dev/null +++ b/lib/sql/__snapshots__/sql_test.snap @@ -0,0 +1,128 @@ + +[TestDictionaryToSQL - 1] +CREATE TABLE dictionaries ( + id UUID NOT NULL + ,name TEXT NOT NULL + + ,CONSTRAINT dictionaries_id_pkey PRIMARY KEY (id) +); + +CREATE TABLE entries ( + id UUID NOT NULL + ,created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP + ,updated_at TIMESTAMPTZ + ,term TEXT NOT NULL + ,dictionary_id UUID + + ,CONSTRAINT entries_id_pkey PRIMARY KEY (id) +); + +CREATE TABLE etymologies ( + id UUID NOT NULL + ,description TEXT + ,entry_id UUID NOT NULL + + ,CONSTRAINT etymologies_id_pkey PRIMARY KEY (id) +); + +CREATE TABLE senses ( + id UUID NOT NULL + ,pos TEXT DEFAULT 'unknown' + ,etymology_id UUID NOT NULL + + ,CONSTRAINT senses_id_pkey PRIMARY KEY (id) +); + +CREATE TABLE groups ( + id UUID NOT NULL + ,description TEXT + ,sense_id UUID NOT NULL + + ,CONSTRAINT groups_id_pkey PRIMARY KEY (id) +); + +CREATE TABLE definitions ( + id UUID NOT NULL + ,value TEXT NOT NULL + ,sense_id UUID + ,group_id UUID + + ,CONSTRAINT definitions_id_pkey PRIMARY KEY (id) +); + +CREATE TABLE notes ( + id UUID NOT NULL + ,value TEXT + ,definition_id UUID NOT NULL + + ,CONSTRAINT notes_id_pkey PRIMARY KEY (id) +); + +CREATE TABLE examples ( + id TEXT NOT NULL + ,text TEXT NOT NULL + ,definition_id UUID + ,note_id UUID + + ,CONSTRAINT examples_id_pkey PRIMARY KEY (id) +); + +ALTER TABLE entries ADD CONSTRAINT entries_dictionary_id_fkey FOREIGN KEY (dictionary_id) REFERENCES dictionaries (id); + +ALTER TABLE etymologies ADD CONSTRAINT etymologies_entry_id_fkey FOREIGN KEY (entry_id) REFERENCES entries (id); + +ALTER TABLE senses ADD CONSTRAINT senses_etymology_id_fkey FOREIGN KEY (etymology_id) REFERENCES etymologies (id); + +ALTER TABLE groups ADD CONSTRAINT groups_sense_id_fkey FOREIGN KEY (sense_id) REFERENCES senses (id); + +ALTER TABLE definitions ADD CONSTRAINT definitions_sense_id_fkey FOREIGN KEY (sense_id) REFERENCES senses (id); + +ALTER TABLE definitions ADD CONSTRAINT definitions_group_id_fkey FOREIGN KEY (group_id) REFERENCES groups (id); + +ALTER TABLE notes ADD CONSTRAINT notes_definition_id_fkey FOREIGN KEY (definition_id) REFERENCES definitions (id); + +ALTER TABLE examples ADD CONSTRAINT examples_definition_id_fkey FOREIGN KEY (definition_id) REFERENCES definitions (id); + +ALTER TABLE examples ADD CONSTRAINT examples_note_id_fkey FOREIGN KEY (note_id) REFERENCES notes (id); +; + +INSERT INTO dictionaries (name, id) VALUES ('Example Dictionary 1', '52fdfc07-2182-454f-963f-5f0f9a621d72'); +INSERT INTO entries (id, term, dictionary_id) VALUES ('9566c74d-1003-4c4d-bbbb-0407d1e2c649', 'cat', '52fdfc07-2182-454f-963f-5f0f9a621d72'); +INSERT INTO etymologies (id, description, entry_id) VALUES ('81855ad8-681d-4d86-91e9-1e00167939cb', 'Latin root', '9566c74d-1003-4c4d-bbbb-0407d1e2c649'); +INSERT INTO senses (id, etymology_id, pos) VALUES ('6694d2c4-22ac-4208-a007-2939487f6999', '81855ad8-681d-4d86-91e9-1e00167939cb', 'n'); +INSERT INTO definitions (id, value, sense_id) VALUES ('eb9d18a4-4784-445d-87f3-c67cf22746e9', 'a cat', '6694d2c4-22ac-4208-a007-2939487f6999'); +INSERT INTO notes (id, value, definition_id) VALUES ('95af5a25-3679-41ba-a2ff-6cd471c483f1', 'Some definition note', 'eb9d18a4-4784-445d-87f3-c67cf22746e9'); +INSERT INTO examples (id, text, note_id) VALUES ('5fb90bad-b37c-4821-b6d9-5526a41a9504', 'Some example', '95af5a25-3679-41ba-a2ff-6cd471c483f1'); +INSERT INTO examples (id, text, definition_id) VALUES ('680b4e7c-8b76-4a1b-9d49-d4955c848621', 'There goes a cat!', 'eb9d18a4-4784-445d-87f3-c67cf22746e9'); +INSERT INTO entries (id, term, dictionary_id) VALUES ('6325253f-ec73-4dd7-a9e2-8bf921119c16', 'dog', '52fdfc07-2182-454f-963f-5f0f9a621d72'); +INSERT INTO etymologies (id, description, entry_id) VALUES ('0f070244-8615-4bda-8831-3f6a8eb668d2', 'Latin root', '6325253f-ec73-4dd7-a9e2-8bf921119c16'); +INSERT INTO senses (id, etymology_id, pos) VALUES ('0bf50598-7592-4e66-8a5b-df2c7fc48445', '0f070244-8615-4bda-8831-3f6a8eb668d2', 'un'); +INSERT INTO definitions (id, value, sense_id) VALUES ('92d2572b-cd06-48d2-96c5-2f5054e2d083', 'a dog', '0bf50598-7592-4e66-8a5b-df2c7fc48445'); +INSERT INTO entries (id, term, dictionary_id) VALUES ('6bf84c71-74cb-4476-b64c-c3dbd968b0f7', 'poo', '52fdfc07-2182-454f-963f-5f0f9a621d72'); +INSERT INTO etymologies (id, description, entry_id) VALUES ('172ed857-94bb-458b-8c3b-525da1786f9f', 'Latin root', '6bf84c71-74cb-4476-b64c-c3dbd968b0f7'); +INSERT INTO senses (id, etymology_id, pos) VALUES ('ff094279-db19-44eb-97a1-9d0f7bbacbe0', '172ed857-94bb-458b-8c3b-525da1786f9f', 'un'); +INSERT INTO groups (id, description, sense_id) VALUES ('255aa5b7-d44b-4c40-b84c-892b9bffd436', 'A number of verb senses', 'ff094279-db19-44eb-97a1-9d0f7bbacbe0'); +INSERT INTO definitions (id, value) VALUES ('29b0223b-eea5-44f7-8391-f445d15afd42', 'crap, shit'); +INSERT INTO entries (id, term, dictionary_id) VALUES ('94040374-f692-4b98-8bf8-713f8d962d7c', 'ran', '52fdfc07-2182-454f-963f-5f0f9a621d72'); +INSERT INTO entries (id, term, dictionary_id) VALUES ('8d019192-c242-44e2-8afc-cae3a61fb586', 'run', '52fdfc07-2182-454f-963f-5f0f9a621d72'); +INSERT INTO etymologies (id, description, entry_id) VALUES ('b14323a6-bc8f-4e7d-b1d9-29333ff99393', 'Latin root', '8d019192-c242-44e2-8afc-cae3a61fb586'); +INSERT INTO senses (id, etymology_id, pos) VALUES ('3bea6f5b-3af6-4e03-b436-6c4719e43a1b', 'b14323a6-bc8f-4e7d-b1d9-29333ff99393', 'n'); +INSERT INTO definitions (id, value, sense_id) VALUES ('067d89bc-7f01-41f5-b398-1659a44ff17a', '(vertebrates) To move swiftly', '3bea6f5b-3af6-4e03-b436-6c4719e43a1b'); +INSERT INTO examples (id, text, definition_id) VALUES ('4c7215a3-b539-4b1e-9849-c6077dbb5722', 'The dog runs after the cat.', '067d89bc-7f01-41f5-b398-1659a44ff17a'); +INSERT INTO examples (id, text, definition_id) VALUES ('f5717a28-9a26-4f97-a479-81998ebea89c', 'The horse ran away.', '067d89bc-7f01-41f5-b398-1659a44ff17a'); +INSERT INTO definitions (id, value, sense_id) VALUES ('0b4b3739-7011-4e82-ad6f-4125c8fa7311', 'Act or instance of hurrying (to or from a place) (not necessarily by foot); dash or errand, trip.', '3bea6f5b-3af6-4e03-b436-6c4719e43a1b'); +INSERT INTO definitions (id, value, sense_id) VALUES ('e4d7defa-922d-4ae7-b866-67f7e936cd4f', 'A pleasure trip.', '3bea6f5b-3af6-4e03-b436-6c4719e43a1b'); +INSERT INTO definitions (id, value, sense_id) VALUES ('24abf7df-866b-4a56-8383-67ad6145de1e', 'Flight, instance or period of fleeing.', '3bea6f5b-3af6-4e03-b436-6c4719e43a1b'); +INSERT INTO definitions (id, value, sense_id) VALUES ('e8f4a8b0-993e-4df8-883a-0ad8be9c3978', 'Migration (of fish).', '3bea6f5b-3af6-4e03-b436-6c4719e43a1b'); +INSERT INTO definitions (id, value, sense_id) VALUES ('b04883e5-6a15-4a8d-a563-afa467d49dec', 'A group of fish that migrate, or ascend a river for the purpose of spawning.', '3bea6f5b-3af6-4e03-b436-6c4719e43a1b'); +INSERT INTO senses (id, etymology_id, pos) VALUES ('6a40e9a1-d007-4033-8282-3061bdd0eaa5', 'b14323a6-bc8f-4e7d-b1d9-29333ff99393', 'v'); +INSERT INTO groups (id, description, sense_id) VALUES ('9f8e4da6-4301-4522-8d0b-29688b734b8e', 'A number of verb senses', '6a40e9a1-d007-4033-8282-3061bdd0eaa5'); +INSERT INTO definitions (id, value) VALUES ('a0f3ca99-36e8-461f-90d7-7c96ea80a7a6', '(vertebrates) To move swiftly (figuratively)'); +INSERT INTO examples (id, text, definition_id) VALUES ('65f606f6-a63b-4f3d-bd25-67c18979e4d6', 'The dog runs after the cat.', 'a0f3ca99-36e8-461f-90d7-7c96ea80a7a6'); +INSERT INTO examples (id, text, definition_id) VALUES ('0f26686d-9bf2-4b26-8901-ff354cde1607', 'The horse ran away.', 'a0f3ca99-36e8-461f-90d7-7c96ea80a7a6'); +INSERT INTO definitions (id, value) VALUES ('ee294b39-f32b-4c78-a2ba-64f84ab43ca0', '(fluids) To flow.'); +INSERT INTO definitions (id, value) VALUES ('c6e6b91c-1fd3-4e89-9043-4179d3af4491', '(nautical, of a vessel) To sail before the wind, in distinction from reaching or sailing close-hauled.'); +INSERT INTO definitions (id, value) VALUES ('a369012d-b92d-484f-839d-1734ff571642', '(social) To carry out an activity.'); +INSERT INTO definitions (id, value) VALUES ('8953bb68-65fc-492b-8c3a-17c9028be991', 'To extend or persist, statically or dynamically, through space or time.'); +INSERT INTO definitions (id, value) VALUES ('4eb7649c-6c93-4780-8979-d1830356f2a5', '(transitive) To execute or carry out a plan, procedure or program.'); +--- diff --git a/lib/sql/definitions.go b/lib/sql/definitions.go index 5aafe1d0..a5e153ce 100644 --- a/lib/sql/definitions.go +++ b/lib/sql/definitions.go @@ -19,13 +19,14 @@ func insertDefinitions(builder *SQLBuilder, senseID string, groupID string, defi for _, definition := range definitions { def := sq.New[DEFINITIONS]("") id := uuid.New().String() + value := definition.Value.String() builder.AddCommand( sq. InsertInto(def). ColumnValues(func(col *sq.Column) { col.Set(def.ID, sq.Literal(id)) - col.Set(def.VALUE, sq.Literal(definition.Value.String())) + col.Set(def.VALUE, sq.Literal(value)) if len(senseID) > 0 { col.Set(def.SENSE_ID, sq.Literal(senseID)) diff --git a/lib/sql/dictionaries.go b/lib/sql/dictionaries.go index 8855eb74..a3f11067 100644 --- a/lib/sql/dictionaries.go +++ b/lib/sql/dictionaries.go @@ -16,12 +16,13 @@ type DICTIONARIES struct { func insertDictionary(builder *SQLBuilder, dict types.DictionaryRepresentable) { d := sq.New[DICTIONARIES]("") id := utils.CreateUUID() + name := dict.Name builder.AddCommand( sq. InsertInto(d). Columns(d.NAME, d.ID). - Values(sq.Literal(dict.Name), sq.Literal(id)), + Values(sq.Literal(name), sq.Literal(id)), ) insertEntries(builder, id, dict.Entries) diff --git a/lib/sql/entries.go b/lib/sql/entries.go index 9029da99..a961204a 100644 --- a/lib/sql/entries.go +++ b/lib/sql/entries.go @@ -1,6 +1,8 @@ package sql import ( + "sort" + "github.com/TheOpenDictionary/odict/lib/types" "github.com/TheOpenDictionary/odict/lib/utils" "github.com/bokwoon95/sq" @@ -16,16 +18,23 @@ type ENTRIES struct { } // Insert entries w/ relation to dictionary -func insertEntries(builder *SQLBuilder, dictionaryID string, entries types.KVMap[string, types.EntryRepresentable]) { +func insertEntries(builder *SQLBuilder, dictionaryID string, entryMap types.KVMap[string, types.EntryRepresentable]) { + entries := entryMap.Values() + + sort.Slice(entries, func(i, j int) bool { + return entries[i].Term < entries[j].Term + }) + for _, entry := range entries { e := sq.New[ENTRIES]("") id := utils.CreateUUID() + term := entry.Term builder.AddCommand( sq. InsertInto(e). Columns(e.ID, e.TERM, e.DICTIONARY_ID). - Values(sq.Literal(id), sq.Literal(entry.Term), sq.Literal(dictionaryID)), + Values(sq.Literal(id), sq.Literal(term), sq.Literal(dictionaryID)), ) insertEtymologies(builder, id, entry.Etymologies) diff --git a/lib/sql/etymologies.go b/lib/sql/etymologies.go index cf5dd863..b97fa095 100644 --- a/lib/sql/etymologies.go +++ b/lib/sql/etymologies.go @@ -18,12 +18,13 @@ func insertEtymologies(builder *SQLBuilder, entryID string, etymologies []types. for _, etymology := range etymologies { ety := sq.New[ETYMOLOGIES]("") id := utils.CreateUUID() + description := etymology.Description.String() builder.AddCommand( sq. InsertInto(ety). Columns(ety.ID, ety.DESCRIPTION, ety.ENTRY_ID). - Values(sq.Literal(id), sq.Literal(etymology.Description.String()), sq.Literal(entryID)), + Values(sq.Literal(id), sq.Literal(description), sq.Literal(entryID)), ) insertSenses(builder, id, etymology.Senses) diff --git a/lib/sql/examples.go b/lib/sql/examples.go index b7bf69be..b596f82a 100644 --- a/lib/sql/examples.go +++ b/lib/sql/examples.go @@ -18,13 +18,14 @@ func insertExamples(builder *SQLBuilder, definitionID string, noteID string, exa for _, example := range examples { ex := sq.New[EXAMPLES]("") id := utils.CreateUUID() + value := example builder.AddCommand( sq. InsertInto(ex). ColumnValues(func(col *sq.Column) { col.Set(ex.ID, sq.Literal(id)) - col.Set(ex.TEXT, sq.Literal(example)) + col.Set(ex.TEXT, sq.Literal(value)) if len(definitionID) > 0 { col.Set(ex.DEFINITION_ID, sq.Literal(definitionID)) diff --git a/lib/sql/go.mod b/lib/sql/go.mod index 61a52516..e3270c61 100644 --- a/lib/sql/go.mod +++ b/lib/sql/go.mod @@ -3,13 +3,39 @@ module github.com/TheOpenDictionary/odict/lib/sql go 1.21.6 require ( + github.com/TheOpenDictionary/odict/lib/core v0.0.0-20240121002644-e3f52802057f + github.com/TheOpenDictionary/odict/lib/test v0.0.0-20240121002644-e3f52802057f + github.com/TheOpenDictionary/odict/lib/types v0.0.0-20240121002644-e3f52802057f + github.com/TheOpenDictionary/odict/lib/utils v0.0.0-20240121002644-e3f52802057f github.com/bokwoon95/sq v0.4.5 github.com/bokwoon95/sqddl v0.4.9 + github.com/gkampitakis/go-snaps v0.4.12 github.com/google/uuid v1.5.0 + github.com/stretchr/testify v1.8.4 ) require ( + dario.cat/mergo v1.0.0 // indirect + github.com/TheOpenDictionary/odict/lib/config v0.0.0-20231024210539-d4e83ae7bfdc // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/gkampitakis/ciinfo v0.3.0 // indirect + github.com/gkampitakis/go-diff v1.3.2 // indirect + github.com/golang/snappy v0.0.4 // indirect + github.com/gomarkdown/markdown v0.0.0-20231222211730-1d6d20845b47 // indirect + github.com/google/flatbuffers v23.5.26+incompatible // indirect + github.com/kr/pretty v0.3.1 // indirect + github.com/kr/text v0.2.0 // indirect + github.com/maruel/natural v1.1.0 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/rogpeppe/go-internal v1.11.0 // indirect + github.com/samber/lo v1.39.0 // indirect + github.com/tidwall/gjson v1.17.0 // indirect + github.com/tidwall/match v1.1.1 // indirect + github.com/tidwall/pretty v1.2.1 // indirect + github.com/tidwall/sjson v1.2.5 // indirect + golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 // indirect golang.org/x/sync v0.2.0 // indirect golang.org/x/sys v0.14.0 // indirect golang.org/x/tools v0.9.1 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/lib/sql/go.sum b/lib/sql/go.sum index 2cd989f5..5f06f414 100644 --- a/lib/sql/go.sum +++ b/lib/sql/go.sum @@ -1,15 +1,90 @@ +dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= +dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= +github.com/TheOpenDictionary/odict/lib/config v0.0.0-20231024210539-d4e83ae7bfdc h1:7o2ZuoSkd46ahLR8kqByb0xI5BfoEDWLSZ72FcbW6QQ= +github.com/TheOpenDictionary/odict/lib/config v0.0.0-20231024210539-d4e83ae7bfdc/go.mod h1:+aU3saFQkiASuB07qTVt49KAMEJVE5V9U0zV2USCwYo= +github.com/TheOpenDictionary/odict/lib/core v0.0.0-20240121002644-e3f52802057f h1:Fh4P0bxgq0nuvGAZUwbaqrJRiynkxufa0TA7rDIYZ1A= +github.com/TheOpenDictionary/odict/lib/core v0.0.0-20240121002644-e3f52802057f/go.mod h1:jhyNmlRtUTRcf3LZaux63ieisM1JLuo3VjJ97L2hAe0= +github.com/TheOpenDictionary/odict/lib/test v0.0.0-20240121002644-e3f52802057f h1:E6nPMhsdTw2fHz0ihSIlop/V6Co30zaKi7/TAI5GzNc= +github.com/TheOpenDictionary/odict/lib/test v0.0.0-20240121002644-e3f52802057f/go.mod h1:GCSWJlVAmBLPIwBHbQvEw0TM5s+iOZETPNbSDHk8BVo= +github.com/TheOpenDictionary/odict/lib/types v0.0.0-20240121002644-e3f52802057f h1:XwsPEn538/qy+CW5J/0PxEj6DwMq2tsz+6XiHN6DYEw= +github.com/TheOpenDictionary/odict/lib/types v0.0.0-20240121002644-e3f52802057f/go.mod h1:9jmtcQhIpA//m7qFcyGF5D4k16et1f2ClLfp10cuyjw= +github.com/TheOpenDictionary/odict/lib/utils v0.0.0-20240121002644-e3f52802057f h1:smU5tRBT6iCY37oXFtmnSM0P6PEO/FdwCdp9FIUpZHo= +github.com/TheOpenDictionary/odict/lib/utils v0.0.0-20240121002644-e3f52802057f/go.mod h1:ZpuKJoffuEq0Ngx+EYUQRhCcBfE8oApzLT7t8iNam4c= github.com/bokwoon95/sq v0.4.5 h1:1uAaYFJs897zrAJWPedJG0FWuJP7KRKOKT1GnU4ne+w= +github.com/bokwoon95/sq v0.4.5/go.mod h1:E3X8ARaXQ77XGMvjS0sQrcA1F5BZvq4Ck/91dPsMKR4= github.com/bokwoon95/sqddl v0.4.9 h1:ELZB4osci3LrjPZZyhKgnFvX7HtOk2stq+eBpzD+SME= +github.com/bokwoon95/sqddl v0.4.9/go.mod h1:OKDpMxJCGMMtn52HdgltLH7M7zHrLo/lxGbnIkG6nQo= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/denisenkom/go-mssqldb v0.12.3 h1:pBSGx9Tq67pBOTLmxNuirNTeB8Vjmf886Kx+8Y+8shw= +github.com/denisenkom/go-mssqldb v0.12.3/go.mod h1:k0mtMFOnU+AihqFxPMiF05rtiDrorD1Vrm1KEz5hxDo= +github.com/gkampitakis/ciinfo v0.3.0 h1:gWZlOC2+RYYttL0hBqcoQhM7h1qNkVqvRCV1fOvpAv8= +github.com/gkampitakis/ciinfo v0.3.0/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo= +github.com/gkampitakis/go-diff v1.3.2 h1:Qyn0J9XJSDTgnsgHRdz9Zp24RaJeKMUHg2+PDZZdC4M= +github.com/gkampitakis/go-diff v1.3.2/go.mod h1:LLgOrpqleQe26cte8s36HTWcTmMEur6OPYerdAAS9tk= +github.com/gkampitakis/go-snaps v0.4.12 h1:YeMgKOm0XW3f/Pt2rYpUlpyF8nG6lYGe9oXFJw5LdME= +github.com/gkampitakis/go-snaps v0.4.12/go.mod h1:PpnF1KPXQAHBdb/DHoi/1VmlwE+ZkVHzl+QHmgzMSz8= 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/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/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/gomarkdown/markdown v0.0.0-20231222211730-1d6d20845b47 h1:k4Tw0nt6lwro3Uin8eqoET7MDA4JnT8YgbCjc/g5E3k= +github.com/gomarkdown/markdown v0.0.0-20231222211730-1d6d20845b47/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= +github.com/google/flatbuffers v23.5.26+incompatible h1:M9dgRyhJemaM4Sw8+66GHBu8ioaQmyPLg1b8VwK5WJg= +github.com/google/flatbuffers v23.5.26+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU= +github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= +github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/maruel/natural v1.1.0 h1:2z1NgP/Vae+gYrtC0VuvrTJ6U35OuyUqDdfluLqMWuQ= +github.com/maruel/natural v1.1.0/go.mod h1:eFVhYCcUOfZFxXoDZam8Ktya72wa79fNC3lc/leA0DQ= 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/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +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/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= +github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= +github.com/samber/lo v1.39.0 h1:4gTz1wUhNYLhFSKl6O+8peW0v2F4BCY034GRpU9WnuA= +github.com/samber/lo v1.39.0/go.mod h1:+m/ZKRl6ClXCE2Lgf3MsQlWfh4bn1bz6CXEOxnEXnEA= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.17.0 h1:/Jocvlh98kcTfpN2+JzGQWQcqrPQwDrVEMApx/M5ZwM= +github.com/tidwall/gjson v1.17.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= +github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= +github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= +github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= 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/exp v0.0.0-20220303212507-bbda1eaf7a17 h1:3MTrJm4PyNL9NBqvYDSj3DHl46qQakyfqfWo4jgfaEM= +golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE= golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= +golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI= +golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/tools v0.9.1 h1:8WMNJAz3zrtPmnYC7ISf5dEn3MT0gY7jBJfw27yrrLo= +golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/lib/sql/groups.go b/lib/sql/groups.go index 2f895cc2..6c6c753c 100644 --- a/lib/sql/groups.go +++ b/lib/sql/groups.go @@ -18,6 +18,7 @@ func insertGroups(builder *SQLBuilder, senseID string, groups []types.GroupRepre for _, group := range groups { grp := sq.New[GROUPS]("") id := utils.CreateUUID() + value := group.Description.String() builder.AddCommand( sq. @@ -25,7 +26,7 @@ func insertGroups(builder *SQLBuilder, senseID string, groups []types.GroupRepre Columns(grp.ID, grp.DESCRIPTION, grp.SENSE_ID). Values( sq.Literal(id), - sq.Literal(group.Description.String()), + sq.Literal(value), sq.Literal(senseID), ), ) diff --git a/lib/sql/notes.go b/lib/sql/notes.go index 81c3e65f..e7c59d53 100644 --- a/lib/sql/notes.go +++ b/lib/sql/notes.go @@ -18,6 +18,7 @@ func insertNotes(builder *SQLBuilder, definitionID string, notes []types.NoteRep for _, note := range notes { nt := sq.New[NOTES]("") id := utils.CreateUUID() + value := note.Value.String() builder.AddCommand( sq. @@ -25,7 +26,7 @@ func insertNotes(builder *SQLBuilder, definitionID string, notes []types.NoteRep Columns(nt.ID, nt.VALUE, nt.DEFINITION_ID). Values( sq.Literal(id), - sq.Literal(note.Value.String()), + sq.Literal(value), sq.Literal(definitionID), ), ) diff --git a/lib/sql/senses.go b/lib/sql/senses.go index 14e71bfe..4192e5f0 100644 --- a/lib/sql/senses.go +++ b/lib/sql/senses.go @@ -1,6 +1,8 @@ package sql import ( + "sort" + "github.com/TheOpenDictionary/odict/lib/types" "github.com/TheOpenDictionary/odict/lib/utils" "github.com/bokwoon95/sq" @@ -9,20 +11,34 @@ import ( type SENSES struct { sq.TableStruct ID sq.UUIDField `ddl:"primarykey"` + POS sq.EnumField `ddl:"default='unknown'"` ETYMOLOGY_ID sq.UUIDField `ddl:"notnull references=etymologies.id"` } // Insert senses w/ relation to current ety -func insertSenses(builder *SQLBuilder, etymologyID string, senses types.KVMap[types.PartOfSpeech, types.SenseRepresentable]) { +func insertSenses(builder *SQLBuilder, etymologyID string, senseMap types.KVMap[types.PartOfSpeech, types.SenseRepresentable]) { + senses := senseMap.Values() + + sort.Slice(senses, func(i, j int) bool { + return senses[i].POS.Tag() < senses[j].POS.Tag() + }) + for _, sense := range senses { usg := sq.New[SENSES]("") id := utils.CreateUUID() + pos := sense.POS.Tag() builder.AddCommand( sq. InsertInto(usg). - Columns(usg.ID, usg.ETYMOLOGY_ID). - Values(sq.Literal(id), sq.Literal(etymologyID)), + ColumnValues(func(col *sq.Column) { + col.Set(usg.ID, sq.Literal(id)) + col.Set(usg.ETYMOLOGY_ID, sq.Literal(etymologyID)) + + if len(pos) > 0 { + col.Set(usg.POS, sq.Literal(pos)) + } + }), ) insertGroups(builder, id, sense.Groups) diff --git a/lib/sql/sql_test.go b/lib/sql/sql_test.go new file mode 100644 index 00000000..8eacf4a8 --- /dev/null +++ b/lib/sql/sql_test.go @@ -0,0 +1,36 @@ +package sql + +import ( + "math/rand" + "testing" + + "github.com/TheOpenDictionary/odict/lib/core" + "github.com/TheOpenDictionary/odict/lib/test" + "github.com/gkampitakis/go-snaps/snaps" + "github.com/google/uuid" + "github.com/stretchr/testify/assert" +) + +func TestDictionaryToSQL(t *testing.T) { + _, err := core.CompileDictionary("../../examples/example1.xml", "../../examples/example1.odict") + + assert.Equal(t, nil, err) + + dict, err := core.ReadDictionary("../../examples/example1.odict") + + assert.Equal(t, nil, err) + + dict_r := dict.AsRepresentable() + + assert.Equal(t, nil, err) + + uuid.SetRand(rand.New(rand.NewSource(1))) + + sql, err := DictionaryToSQL(dict_r, "postgres", true) + + assert.Equal(t, nil, err) + + snaps.MatchSnapshot(t, sql) + + test.CleanupTest() +} diff --git a/lib/test/go.mod b/lib/test/go.mod index b9f5b615..82e8e9c6 100644 --- a/lib/test/go.mod +++ b/lib/test/go.mod @@ -6,8 +6,9 @@ require github.com/stretchr/testify v1.8.4 require ( github.com/davecgh/go-spew v1.1.1 // indirect - github.com/kr/pretty v0.1.0 // indirect + github.com/kr/pretty v0.3.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/rogpeppe/go-internal v1.11.0 // indirect gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/lib/test/go.sum b/lib/test/go.sum index b4a838d7..316fcd4b 100644 --- a/lib/test/go.sum +++ b/lib/test/go.sum @@ -1,7 +1,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/lib/types/go.mod b/lib/types/go.mod index ae25f849..9f146959 100644 --- a/lib/types/go.mod +++ b/lib/types/go.mod @@ -3,9 +3,9 @@ module github.com/TheOpenDictionary/odict/lib/types go 1.20 require ( + dario.cat/mergo v1.0.0 github.com/TheOpenDictionary/odict/lib/utils v0.0.0-20231201204918-056ce8487757 github.com/google/flatbuffers v23.5.26+incompatible - dario.cat/mergo v1.0.0 github.com/samber/lo v1.39.0 github.com/stretchr/testify v1.8.4 ) @@ -13,8 +13,9 @@ require ( require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/gomarkdown/markdown v0.0.0-20231222211730-1d6d20845b47 // indirect - github.com/kr/text v0.1.0 // indirect + github.com/kr/pretty v0.3.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/rogpeppe/go-internal v1.11.0 // indirect golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/lib/types/go.sum b/lib/types/go.sum index 29c98f8e..b2fa4828 100644 --- a/lib/types/go.sum +++ b/lib/types/go.sum @@ -3,9 +3,10 @@ github.com/TheOpenDictionary/odict/lib/utils v0.0.0-20231201204918-056ce8487757 github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/gomarkdown/markdown v0.0.0-20231222211730-1d6d20845b47 h1:k4Tw0nt6lwro3Uin8eqoET7MDA4JnT8YgbCjc/g5E3k= github.com/google/flatbuffers v23.5.26+incompatible h1:M9dgRyhJemaM4Sw8+66GHBu8ioaQmyPLg1b8VwK5WJg= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/samber/lo v1.39.0 h1:4gTz1wUhNYLhFSKl6O+8peW0v2F4BCY034GRpU9WnuA= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 h1:3MTrJm4PyNL9NBqvYDSj3DHl46qQakyfqfWo4jgfaEM= diff --git a/lib/types/types.go b/lib/types/types.go index dbf1e2fd..f8af989a 100644 --- a/lib/types/types.go +++ b/lib/types/types.go @@ -6,6 +6,7 @@ import ( "dario.cat/mergo" flatbuffers "github.com/google/flatbuffers/go" + "github.com/samber/lo" ) func Serialize(b Serializable) []byte { @@ -31,6 +32,14 @@ type Representable interface { type KVMap[K comparable, V Keyable[K]] map[K]V +func (m KVMap[K, V]) Keys() []K { + return lo.Keys[K, V](m) +} + +func (m KVMap[K, V]) Values() []V { + return lo.Values[K, V](m) +} + func (m KVMap[K, V]) MarshalXML(e *xml.Encoder, start xml.StartElement) error { for key := range m { e.Encode(m[key]) diff --git a/lib/utils/go.mod b/lib/utils/go.mod index 044ca06d..d8c84dc5 100644 --- a/lib/utils/go.mod +++ b/lib/utils/go.mod @@ -10,8 +10,9 @@ require ( require ( github.com/davecgh/go-spew v1.1.1 // indirect - github.com/kr/pretty v0.1.0 // indirect + github.com/kr/pretty v0.3.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/rogpeppe/go-internal v1.11.0 // indirect gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/lib/utils/go.sum b/lib/utils/go.sum index 371da83b..00a28af5 100644 --- a/lib/utils/go.sum +++ b/lib/utils/go.sum @@ -1,9 +1,10 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/gomarkdown/markdown v0.0.0-20231222211730-1d6d20845b47 h1:k4Tw0nt6lwro3Uin8eqoET7MDA4JnT8YgbCjc/g5E3k= github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=