mirror of
https://github.com/kubeshark/kubeshark.git
synced 2025-06-21 05:53:29 +00:00
remove unused things and use external for object id (instead of copy)
This commit is contained in:
parent
162dc9de7f
commit
40d48a6364
1
.gitignore
vendored
1
.gitignore
vendored
@ -14,3 +14,4 @@
|
||||
# Dependency directories (remove the comment below to include it)
|
||||
# vendor/
|
||||
.idea/
|
||||
*.db
|
||||
|
@ -1,9 +1,10 @@
|
||||
module harsave
|
||||
module main
|
||||
|
||||
go 1.16
|
||||
|
||||
require (
|
||||
github.com/google/martian v2.1.0+incompatible
|
||||
go.mongodb.org/mongo-driver v1.5.1
|
||||
gorm.io/driver/sqlite v1.1.4
|
||||
gorm.io/gorm v1.21.8
|
||||
)
|
||||
|
124
tap/go.sum
124
tap/go.sum
@ -1,42 +1,120 @@
|
||||
github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=
|
||||
github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
|
||||
github.com/denisenkom/go-mssqldb v0.0.0-20191124224453-732737034ffd h1:83Wprp6ROGeiHFAP8WJdI2RoxALQYgdllERc3N5N2DM=
|
||||
github.com/denisenkom/go-mssqldb v0.0.0-20191124224453-732737034ffd/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU=
|
||||
github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5 h1:Yzb9+7DPaBjB8zlTR87/ElzFsnQfuHnVUVqpZZIcV5Y=
|
||||
github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0=
|
||||
github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
github.com/aws/aws-sdk-go v1.34.28/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48=
|
||||
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/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
|
||||
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY=
|
||||
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
|
||||
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
||||
github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0=
|
||||
github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY=
|
||||
github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg=
|
||||
github.com/gobuffalo/envy v1.6.15/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI=
|
||||
github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI=
|
||||
github.com/gobuffalo/flect v0.1.0/go.mod h1:d2ehjJqGOH/Kjqcoz+F7jHTBbmDb38yXA598Hb50EGs=
|
||||
github.com/gobuffalo/flect v0.1.1/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI=
|
||||
github.com/gobuffalo/flect v0.1.3/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI=
|
||||
github.com/gobuffalo/genny v0.0.0-20190329151137-27723ad26ef9/go.mod h1:rWs4Z12d1Zbf19rlsn0nurr75KqhYp52EAGGxTbBhNk=
|
||||
github.com/gobuffalo/genny v0.0.0-20190403191548-3ca520ef0d9e/go.mod h1:80lIj3kVJWwOrXWWMRzzdhW3DsrdjILVil/SFKBzF28=
|
||||
github.com/gobuffalo/genny v0.1.0/go.mod h1:XidbUqzak3lHdS//TPu2OgiFB+51Ur5f7CSnXZ/JDvo=
|
||||
github.com/gobuffalo/genny v0.1.1/go.mod h1:5TExbEyY48pfunL4QSXxlDOmdsD44RRq4mVZ0Ex28Xk=
|
||||
github.com/gobuffalo/gitgen v0.0.0-20190315122116-cc086187d211/go.mod h1:vEHJk/E9DmhejeLeNt7UVvlSGv3ziL+djtTr3yyzcOw=
|
||||
github.com/gobuffalo/gogen v0.0.0-20190315121717-8f38393713f5/go.mod h1:V9QVDIxsgKNZs6L2IYiGR8datgMhB577vzTDqypH360=
|
||||
github.com/gobuffalo/gogen v0.1.0/go.mod h1:8NTelM5qd8RZ15VjQTFkAW6qOMx5wBbW4dSCS3BY8gg=
|
||||
github.com/gobuffalo/gogen v0.1.1/go.mod h1:y8iBtmHmGc4qa3urIyo1shvOD8JftTtfcKi+71xfDNE=
|
||||
github.com/gobuffalo/logger v0.0.0-20190315122211-86e12af44bc2/go.mod h1:QdxcLw541hSGtBnhUc4gaNIXRjiDppFGaDqzbrBd3v8=
|
||||
github.com/gobuffalo/mapi v1.0.1/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc=
|
||||
github.com/gobuffalo/mapi v1.0.2/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc=
|
||||
github.com/gobuffalo/packd v0.0.0-20190315124812-a385830c7fc0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4=
|
||||
github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4=
|
||||
github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ=
|
||||
github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0=
|
||||
github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw=
|
||||
github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||
github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM=
|
||||
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
|
||||
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
|
||||
github.com/jinzhu/gorm v1.9.16 h1:+IyIjPEABKRpsu/F8OvDPy9fyQlgsg2luMV2ZIH5i5o=
|
||||
github.com/jinzhu/gorm v1.9.16/go.mod h1:G3LB3wezTOWM2ITLzPxEXgSkOXAntiLHS7UdBefADcs=
|
||||
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
|
||||
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
|
||||
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
|
||||
github.com/jinzhu/now v1.0.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
|
||||
github.com/jinzhu/now v1.1.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
|
||||
github.com/jinzhu/now v1.1.2 h1:eVKgfIdy9b6zbWBMgFpfDPoAMifwSZagU9HmEU6zgiI=
|
||||
github.com/jinzhu/now v1.1.2/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
|
||||
github.com/lib/pq v1.1.1 h1:sJZmqHoEaY7f+NPP8pgLB/WxulyR3fewgCM2qaSlBb4=
|
||||
github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
|
||||
github.com/mattn/go-sqlite3 v1.14.0/go.mod h1:JIl7NbARA7phWnGvh0LKTyg7S9BA+6gx71ShQilpsus=
|
||||
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
|
||||
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
|
||||
github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg=
|
||||
github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4=
|
||||
github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA=
|
||||
github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
|
||||
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||
github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||
github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE=
|
||||
github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0=
|
||||
github.com/mattn/go-sqlite3 v1.14.5 h1:1IdxlwTNazvbKJQSxoJ5/9ECbEeaTTyeU7sEAZ5KKTQ=
|
||||
github.com/mattn/go-sqlite3 v1.14.5/go.mod h1:WVKg1VTActs4Qso6iwGbiFih2UIHo0ENGwNd0Lj+XmI=
|
||||
github.com/mattn/go-sqlite3 v1.14.7 h1:fxWBnXkxfM6sRiuH3bqJ4CfzZojMOLVc0UTsTglEghA=
|
||||
github.com/mattn/go-sqlite3 v1.14.7/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
|
||||
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
|
||||
github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE=
|
||||
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||
github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||
github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
|
||||
github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
|
||||
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
|
||||
github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
|
||||
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||
github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
|
||||
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
|
||||
github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
|
||||
github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs=
|
||||
github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM=
|
||||
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
|
||||
go.mongodb.org/mongo-driver v1.5.1 h1:9nOVLGDfOaZ9R0tBumx/BcuqkbFpyTCU2r/Po7A2azI=
|
||||
go.mongodb.org/mongo-driver v1.5.1/go.mod h1:gRXCHX4Jo7J0IJ1oDQyUxF7jfy19UfxniMS4xxMmUqw=
|
||||
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd h1:GGJVjV8waZKRHrgwvtH66z9ZGVurTD1MT0n1Bb+q4aM=
|
||||
golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE=
|
||||
golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
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-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
||||
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=
|
||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
||||
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gorm.io/driver/sqlite v1.1.4 h1:PDzwYE+sI6De2+mxAneV9Xs11+ZyKV6oxD3wDGkaNvM=
|
||||
gorm.io/driver/sqlite v1.1.4/go.mod h1:mJCeTFr7+crvS+TRnWc5Z3UvwxUN1BGBLMrf5LA9DYw=
|
||||
gorm.io/gorm v1.20.7/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw=
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -5,12 +5,12 @@ import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"github.com/google/martian/har"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
"gorm.io/driver/sqlite"
|
||||
"gorm.io/gorm"
|
||||
"os"
|
||||
)
|
||||
|
||||
|
||||
func main() {
|
||||
FILEPATH := "/Users/roeegadot/Downloads/testing.har"
|
||||
file, err := os.Open(FILEPATH)
|
||||
@ -29,7 +29,7 @@ func main() {
|
||||
}
|
||||
|
||||
for _, entry := range inputHar.Log.Entries {
|
||||
saveHarToDb(*entry)
|
||||
saveHarToDb(*entry, "service", "source")
|
||||
}
|
||||
|
||||
}
|
||||
@ -44,23 +44,16 @@ func getGormDB() *gorm.DB {
|
||||
return db
|
||||
}
|
||||
|
||||
func saveHarToDb(entry har.Entry) {
|
||||
func saveHarToDb(entry har.Entry, serviceName string, source string) {
|
||||
a, _ := json.Marshal(entry)
|
||||
mizuEntry := MizuEntry{
|
||||
EntryId: NewObjectID().Hex(),
|
||||
// simple way to store it and not convert to bytes
|
||||
Entry: string(a),
|
||||
Url: (&entry).Request.URL,
|
||||
Method: (&entry).Request.Method,
|
||||
Status: (&entry).Response.Status,
|
||||
Source: "",
|
||||
Service: "MyService",
|
||||
}
|
||||
|
||||
if err := mizuEntry.Create(getGormDB()); err != nil {
|
||||
fmt.Print(err)
|
||||
panic("cannot create")
|
||||
EntryId: primitive.NewObjectID().Hex(),
|
||||
Entry: string(a), // simple way to store it and not convert to bytes
|
||||
Url: entry.Request.URL,
|
||||
Method: entry.Request.Method,
|
||||
Status: entry.Response.Status,
|
||||
Source: source,
|
||||
Service: serviceName,
|
||||
}
|
||||
getGormDB().Create(&mizuEntry)
|
||||
}
|
||||
|
||||
|
||||
|
@ -4,19 +4,13 @@ import (
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
|
||||
//go:generate goqueryset -in mizuEntry.go
|
||||
// gen:qs
|
||||
type MizuEntry struct {
|
||||
gorm.Model
|
||||
// The Entry itself (as string)
|
||||
Entry string `json:"entry,omitempty"`
|
||||
//TODO: here we will add fields we need to query for
|
||||
|
||||
Entry string `json:"entry,omitempty"`
|
||||
EntryId string `json:"entryId"`
|
||||
Url string `json:"url"`
|
||||
Method string `json:"method"`
|
||||
Status int `json:"status"`
|
||||
Source string `json:"source"`
|
||||
Url string `json:"url"`
|
||||
Method string `json:"method"`
|
||||
Status int `json:"status"`
|
||||
Source string `json:"source"`
|
||||
Service string `json:"serviceName"`
|
||||
}
|
||||
|
@ -1,471 +0,0 @@
|
||||
//// Code generated by go-queryset. DO NOT EDIT.
|
||||
package main
|
||||
//
|
||||
//import (
|
||||
// "errors"
|
||||
// "fmt"
|
||||
// "strings"
|
||||
// "time"
|
||||
//
|
||||
// "github.com/jinzhu/gorm"
|
||||
// "github.com/google/martian/har"
|
||||
//
|
||||
//)
|
||||
//
|
||||
//// ===== BEGIN of all query sets
|
||||
//
|
||||
//// ===== BEGIN of query set MizuEntryQuerySet
|
||||
//
|
||||
//// MizuEntryQuerySet is an queryset type for MizuEntry
|
||||
//type MizuEntryQuerySet struct {
|
||||
// db *gorm.DB
|
||||
//}
|
||||
//
|
||||
//// NewMizuEntryQuerySet constructs new MizuEntryQuerySet
|
||||
//func NewMizuEntryQuerySet(db *gorm.DB) MizuEntryQuerySet {
|
||||
// return MizuEntryQuerySet{
|
||||
// db: db.Model(&MizuEntry{}),
|
||||
// }
|
||||
//}
|
||||
//
|
||||
//func (qs MizuEntryQuerySet) w(db *gorm.DB) MizuEntryQuerySet {
|
||||
// return NewMizuEntryQuerySet(db)
|
||||
//}
|
||||
//
|
||||
//func (qs MizuEntryQuerySet) Select(fields ...MizuEntryDBSchemaField) MizuEntryQuerySet {
|
||||
// names := []string{}
|
||||
// for _, f := range fields {
|
||||
// names = append(names, f.String())
|
||||
// }
|
||||
//
|
||||
// return qs.w(qs.db.Select(strings.Join(names, ",")))
|
||||
//}
|
||||
//
|
||||
//// Create is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (o *MizuEntry) Create(db *gorm.DB) error {
|
||||
// return db.Create(o).Error
|
||||
//}
|
||||
//
|
||||
//// Delete is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (o *MizuEntry) Delete(db *gorm.DB) error {
|
||||
// return db.Delete(o).Error
|
||||
//}
|
||||
//
|
||||
//// All is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) All(ret *[]MizuEntry) error {
|
||||
// return qs.db.Find(ret).Error
|
||||
//}
|
||||
//
|
||||
//// Count is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) Count() (int, error) {
|
||||
// var count int
|
||||
// err := qs.db.Count(&count).Error
|
||||
// return count, err
|
||||
//}
|
||||
//
|
||||
//// CreatedAtEq is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) CreatedAtEq(createdAt time.Time) MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Where("created_at = ?", createdAt))
|
||||
//}
|
||||
//
|
||||
//// CreatedAtGt is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) CreatedAtGt(createdAt time.Time) MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Where("created_at > ?", createdAt))
|
||||
//}
|
||||
//
|
||||
//// CreatedAtGte is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) CreatedAtGte(createdAt time.Time) MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Where("created_at >= ?", createdAt))
|
||||
//}
|
||||
//
|
||||
//// CreatedAtLt is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) CreatedAtLt(createdAt time.Time) MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Where("created_at < ?", createdAt))
|
||||
//}
|
||||
//
|
||||
//// CreatedAtLte is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) CreatedAtLte(createdAt time.Time) MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Where("created_at <= ?", createdAt))
|
||||
//}
|
||||
//
|
||||
//// CreatedAtNe is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) CreatedAtNe(createdAt time.Time) MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Where("created_at != ?", createdAt))
|
||||
//}
|
||||
//
|
||||
//// Delete is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) Delete() error {
|
||||
// return qs.db.Delete(MizuEntry{}).Error
|
||||
//}
|
||||
//
|
||||
//// DeleteNum is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) DeleteNum() (int64, error) {
|
||||
// db := qs.db.Delete(MizuEntry{})
|
||||
// return db.RowsAffected, db.Error
|
||||
//}
|
||||
//
|
||||
//// DeleteNumUnscoped is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) DeleteNumUnscoped() (int64, error) {
|
||||
// db := qs.db.Unscoped().Delete(MizuEntry{})
|
||||
// return db.RowsAffected, db.Error
|
||||
//}
|
||||
//
|
||||
//// DeletedAtEq is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) DeletedAtEq(deletedAt time.Time) MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Where("deleted_at = ?", deletedAt))
|
||||
//}
|
||||
//
|
||||
//// DeletedAtGt is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) DeletedAtGt(deletedAt time.Time) MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Where("deleted_at > ?", deletedAt))
|
||||
//}
|
||||
//
|
||||
//// DeletedAtGte is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) DeletedAtGte(deletedAt time.Time) MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Where("deleted_at >= ?", deletedAt))
|
||||
//}
|
||||
//
|
||||
//// DeletedAtIsNotNull is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) DeletedAtIsNotNull() MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Where("deleted_at IS NOT NULL"))
|
||||
//}
|
||||
//
|
||||
//// DeletedAtIsNull is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) DeletedAtIsNull() MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Where("deleted_at IS NULL"))
|
||||
//}
|
||||
//
|
||||
//// DeletedAtLt is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) DeletedAtLt(deletedAt time.Time) MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Where("deleted_at < ?", deletedAt))
|
||||
//}
|
||||
//
|
||||
//// DeletedAtLte is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) DeletedAtLte(deletedAt time.Time) MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Where("deleted_at <= ?", deletedAt))
|
||||
//}
|
||||
//
|
||||
//// DeletedAtNe is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) DeletedAtNe(deletedAt time.Time) MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Where("deleted_at != ?", deletedAt))
|
||||
//}
|
||||
//
|
||||
//// GetDB is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) GetDB() *gorm.DB {
|
||||
// return qs.db
|
||||
//}
|
||||
//
|
||||
//// GetUpdater is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) GetUpdater() MizuEntryUpdater {
|
||||
// return NewMizuEntryUpdater(qs.db)
|
||||
//}
|
||||
//
|
||||
//// IDEq is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) IDEq(ID uint) MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Where("id = ?", ID))
|
||||
//}
|
||||
//
|
||||
//// IDGt is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) IDGt(ID uint) MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Where("id > ?", ID))
|
||||
//}
|
||||
//
|
||||
//// IDGte is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) IDGte(ID uint) MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Where("id >= ?", ID))
|
||||
//}
|
||||
//
|
||||
//// IDIn is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) IDIn(ID ...uint) MizuEntryQuerySet {
|
||||
// if len(ID) == 0 {
|
||||
// qs.db.AddError(errors.New("must at least pass one ID in IDIn"))
|
||||
// return qs.w(qs.db)
|
||||
// }
|
||||
// return qs.w(qs.db.Where("id IN (?)", ID))
|
||||
//}
|
||||
//
|
||||
//// IDLt is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) IDLt(ID uint) MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Where("id < ?", ID))
|
||||
//}
|
||||
//
|
||||
//// IDLte is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) IDLte(ID uint) MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Where("id <= ?", ID))
|
||||
//}
|
||||
//
|
||||
//// IDNe is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) IDNe(ID uint) MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Where("id != ?", ID))
|
||||
//}
|
||||
//
|
||||
//// IDNotIn is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) IDNotIn(ID ...uint) MizuEntryQuerySet {
|
||||
// if len(ID) == 0 {
|
||||
// qs.db.AddError(errors.New("must at least pass one ID in IDNotIn"))
|
||||
// return qs.w(qs.db)
|
||||
// }
|
||||
// return qs.w(qs.db.Where("id NOT IN (?)", ID))
|
||||
//}
|
||||
//
|
||||
//// Limit is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) Limit(limit int) MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Limit(limit))
|
||||
//}
|
||||
//
|
||||
//// Offset is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) Offset(offset int) MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Offset(offset))
|
||||
//}
|
||||
//
|
||||
//// One is used to retrieve one result. It returns gorm.ErrRecordNotFound
|
||||
//// if nothing was fetched
|
||||
//func (qs MizuEntryQuerySet) One(ret *MizuEntry) error {
|
||||
// return qs.db.First(ret).Error
|
||||
//}
|
||||
//
|
||||
//// OrderAscByCreatedAt is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) OrderAscByCreatedAt() MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Order("created_at ASC"))
|
||||
//}
|
||||
//
|
||||
//// OrderAscByDeletedAt is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) OrderAscByDeletedAt() MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Order("deleted_at ASC"))
|
||||
//}
|
||||
//
|
||||
//// OrderAscByID is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) OrderAscByID() MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Order("id ASC"))
|
||||
//}
|
||||
//
|
||||
//// OrderAscByUpdatedAt is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) OrderAscByUpdatedAt() MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Order("updated_at ASC"))
|
||||
//}
|
||||
//
|
||||
//// OrderDescByCreatedAt is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) OrderDescByCreatedAt() MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Order("created_at DESC"))
|
||||
//}
|
||||
//
|
||||
//// OrderDescByDeletedAt is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) OrderDescByDeletedAt() MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Order("deleted_at DESC"))
|
||||
//}
|
||||
//
|
||||
//// OrderDescByID is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) OrderDescByID() MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Order("id DESC"))
|
||||
//}
|
||||
//
|
||||
//// OrderDescByUpdatedAt is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) OrderDescByUpdatedAt() MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Order("updated_at DESC"))
|
||||
//}
|
||||
//
|
||||
//// PreloadEntry is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) PreloadEntry() MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Preload("Entry"))
|
||||
//}
|
||||
//
|
||||
//// UpdatedAtEq is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) UpdatedAtEq(updatedAt time.Time) MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Where("updated_at = ?", updatedAt))
|
||||
//}
|
||||
//
|
||||
//// UpdatedAtGt is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) UpdatedAtGt(updatedAt time.Time) MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Where("updated_at > ?", updatedAt))
|
||||
//}
|
||||
//
|
||||
//// UpdatedAtGte is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) UpdatedAtGte(updatedAt time.Time) MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Where("updated_at >= ?", updatedAt))
|
||||
//}
|
||||
//
|
||||
//// UpdatedAtLt is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) UpdatedAtLt(updatedAt time.Time) MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Where("updated_at < ?", updatedAt))
|
||||
//}
|
||||
//
|
||||
//// UpdatedAtLte is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) UpdatedAtLte(updatedAt time.Time) MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Where("updated_at <= ?", updatedAt))
|
||||
//}
|
||||
//
|
||||
//// UpdatedAtNe is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (qs MizuEntryQuerySet) UpdatedAtNe(updatedAt time.Time) MizuEntryQuerySet {
|
||||
// return qs.w(qs.db.Where("updated_at != ?", updatedAt))
|
||||
//}
|
||||
//
|
||||
//// SetCreatedAt is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (u MizuEntryUpdater) SetCreatedAt(createdAt time.Time) MizuEntryUpdater {
|
||||
// u.fields[string(MizuEntryDBSchema.CreatedAt)] = createdAt
|
||||
// return u
|
||||
//}
|
||||
//
|
||||
//// SetDeletedAt is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (u MizuEntryUpdater) SetDeletedAt(deletedAt *time.Time) MizuEntryUpdater {
|
||||
// u.fields[string(MizuEntryDBSchema.DeletedAt)] = deletedAt
|
||||
// return u
|
||||
//}
|
||||
//
|
||||
//// SetEntry is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (u MizuEntryUpdater) SetEntry(entry har.Entry) MizuEntryUpdater {
|
||||
// u.fields[string(MizuEntryDBSchema.Entry)] = entry
|
||||
// return u
|
||||
//}
|
||||
//
|
||||
//// SetID is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (u MizuEntryUpdater) SetID(ID uint) MizuEntryUpdater {
|
||||
// u.fields[string(MizuEntryDBSchema.ID)] = ID
|
||||
// return u
|
||||
//}
|
||||
//
|
||||
//// SetUpdatedAt is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (u MizuEntryUpdater) SetUpdatedAt(updatedAt time.Time) MizuEntryUpdater {
|
||||
// u.fields[string(MizuEntryDBSchema.UpdatedAt)] = updatedAt
|
||||
// return u
|
||||
//}
|
||||
//
|
||||
//// Update is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (u MizuEntryUpdater) Update() error {
|
||||
// return u.db.Updates(u.fields).Error
|
||||
//}
|
||||
//
|
||||
//// UpdateNum is an autogenerated method
|
||||
//// nolint: dupl
|
||||
//func (u MizuEntryUpdater) UpdateNum() (int64, error) {
|
||||
// db := u.db.Updates(u.fields)
|
||||
// return db.RowsAffected, db.Error
|
||||
//}
|
||||
//
|
||||
//// ===== END of query set MizuEntryQuerySet
|
||||
//
|
||||
//// ===== BEGIN of MizuEntry modifiers
|
||||
//
|
||||
//// MizuEntryDBSchemaField describes database schema field. It requires for method 'Update'
|
||||
//type MizuEntryDBSchemaField string
|
||||
//
|
||||
//// String method returns string representation of field.
|
||||
//// nolint: dupl
|
||||
//func (f MizuEntryDBSchemaField) String() string {
|
||||
// return string(f)
|
||||
//}
|
||||
//
|
||||
//// MizuEntryDBSchema stores db field names of MizuEntry
|
||||
//var MizuEntryDBSchema = struct {
|
||||
// ID MizuEntryDBSchemaField
|
||||
// CreatedAt MizuEntryDBSchemaField
|
||||
// UpdatedAt MizuEntryDBSchemaField
|
||||
// DeletedAt MizuEntryDBSchemaField
|
||||
// Entry MizuEntryDBSchemaField
|
||||
//}{
|
||||
//
|
||||
// ID: MizuEntryDBSchemaField("id"),
|
||||
// CreatedAt: MizuEntryDBSchemaField("created_at"),
|
||||
// UpdatedAt: MizuEntryDBSchemaField("updated_at"),
|
||||
// DeletedAt: MizuEntryDBSchemaField("deleted_at"),
|
||||
// Entry: MizuEntryDBSchemaField("entry"),
|
||||
//}
|
||||
//
|
||||
//// Update updates MizuEntry fields by primary key
|
||||
//// nolint: dupl
|
||||
//func (o *MizuEntry) Update(db *gorm.DB, fields ...MizuEntryDBSchemaField) error {
|
||||
// dbNameToFieldName := map[string]interface{}{
|
||||
// "id": o.ID,
|
||||
// "created_at": o.CreatedAt,
|
||||
// "updated_at": o.UpdatedAt,
|
||||
// "deleted_at": o.DeletedAt,
|
||||
// "entry": o.Entry,
|
||||
// }
|
||||
// u := map[string]interface{}{}
|
||||
// for _, f := range fields {
|
||||
// fs := f.String()
|
||||
// u[fs] = dbNameToFieldName[fs]
|
||||
// }
|
||||
// if err := db.Model(o).Updates(u).Error; err != nil {
|
||||
// if err == gorm.ErrRecordNotFound {
|
||||
// return err
|
||||
// }
|
||||
//
|
||||
// return fmt.Errorf("can't update MizuEntry %v fields %v: %s",
|
||||
// o, fields, err)
|
||||
// }
|
||||
//
|
||||
// return nil
|
||||
//}
|
||||
//
|
||||
//// MizuEntryUpdater is an MizuEntry updates manager
|
||||
//type MizuEntryUpdater struct {
|
||||
// fields map[string]interface{}
|
||||
// db *gorm.DB
|
||||
//}
|
||||
//
|
||||
//// NewMizuEntryUpdater creates new MizuEntry updater
|
||||
//// nolint: dupl
|
||||
//func NewMizuEntryUpdater(db *gorm.DB) MizuEntryUpdater {
|
||||
// return MizuEntryUpdater{
|
||||
// fields: map[string]interface{}{},
|
||||
// db: db.Model(&MizuEntry{}),
|
||||
// }
|
||||
//}
|
||||
//
|
||||
//// ===== END of MizuEntry modifiers
|
||||
//
|
||||
//// ===== END of all query sets
|
175
tap/src/types.go
175
tap/src/types.go
@ -1,175 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"crypto/rand"
|
||||
"encoding/binary"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"sync/atomic"
|
||||
"time"
|
||||
)
|
||||
|
||||
// ErrInvalidHex indicates that a hex string cannot be converted to an ObjectID.
|
||||
var ErrInvalidHex = errors.New("the provided hex string is not a valid ObjectID")
|
||||
|
||||
// ObjectID is the BSON ObjectID type.
|
||||
type ObjectID [12]byte
|
||||
|
||||
// NilObjectID is the zero value for ObjectID.
|
||||
var NilObjectID ObjectID
|
||||
|
||||
var objectIDCounter = readRandomUint32()
|
||||
var processUnique = processUniqueBytes()
|
||||
|
||||
// NewObjectID generates a new ObjectID.
|
||||
func NewObjectID() ObjectID {
|
||||
return NewObjectIDFromTimestamp(time.Now())
|
||||
}
|
||||
|
||||
// NewObjectIDFromTimestamp generates a new ObjectID based on the given time.
|
||||
func NewObjectIDFromTimestamp(timestamp time.Time) ObjectID {
|
||||
var b [12]byte
|
||||
|
||||
binary.BigEndian.PutUint32(b[0:4], uint32(timestamp.Unix()))
|
||||
copy(b[4:9], processUnique[:])
|
||||
putUint24(b[9:12], atomic.AddUint32(&objectIDCounter, 1))
|
||||
|
||||
return b
|
||||
}
|
||||
|
||||
// Timestamp extracts the time part of the ObjectId.
|
||||
func (id ObjectID) Timestamp() time.Time {
|
||||
unixSecs := binary.BigEndian.Uint32(id[0:4])
|
||||
return time.Unix(int64(unixSecs), 0).UTC()
|
||||
}
|
||||
|
||||
// Hex returns the hex encoding of the ObjectID as a string.
|
||||
func (id ObjectID) Hex() string {
|
||||
return hex.EncodeToString(id[:])
|
||||
}
|
||||
|
||||
func (id ObjectID) String() string {
|
||||
return fmt.Sprintf("ObjectID(%q)", id.Hex())
|
||||
}
|
||||
|
||||
// IsZero returns true if id is the empty ObjectID.
|
||||
func (id ObjectID) IsZero() bool {
|
||||
return bytes.Equal(id[:], NilObjectID[:])
|
||||
}
|
||||
|
||||
// ObjectIDFromHex creates a new ObjectID from a hex string. It returns an error if the hex string is not a
|
||||
// valid ObjectID.
|
||||
func ObjectIDFromHex(s string) (ObjectID, error) {
|
||||
b, err := hex.DecodeString(s)
|
||||
if err != nil {
|
||||
return NilObjectID, err
|
||||
}
|
||||
|
||||
if len(b) != 12 {
|
||||
return NilObjectID, ErrInvalidHex
|
||||
}
|
||||
|
||||
var oid [12]byte
|
||||
copy(oid[:], b[:])
|
||||
|
||||
return oid, nil
|
||||
}
|
||||
|
||||
// IsValidObjectID returns true if the provided hex string represents a valid ObjectID and false if not.
|
||||
func IsValidObjectID(s string) bool {
|
||||
_, err := ObjectIDFromHex(s)
|
||||
return err == nil
|
||||
}
|
||||
|
||||
// MarshalJSON returns the ObjectID as a string
|
||||
func (id ObjectID) MarshalJSON() ([]byte, error) {
|
||||
return json.Marshal(id.Hex())
|
||||
}
|
||||
|
||||
// UnmarshalJSON populates the byte slice with the ObjectID. If the byte slice is 24 bytes long, it
|
||||
// will be populated with the hex representation of the ObjectID. If the byte slice is twelve bytes
|
||||
// long, it will be populated with the BSON representation of the ObjectID. This method also accepts empty strings and
|
||||
// decodes them as NilObjectID. For any other inputs, an error will be returned.
|
||||
func (id *ObjectID) UnmarshalJSON(b []byte) error {
|
||||
// Ignore "null" to keep parity with the standard library. Decoding a JSON null into a non-pointer ObjectID field
|
||||
// will leave the field unchanged. For pointer values, encoding/json will set the pointer to nil and will not
|
||||
// enter the UnmarshalJSON hook.
|
||||
if string(b) == "null" {
|
||||
return nil
|
||||
}
|
||||
|
||||
var err error
|
||||
switch len(b) {
|
||||
case 12:
|
||||
copy(id[:], b)
|
||||
default:
|
||||
// Extended JSON
|
||||
var res interface{}
|
||||
err := json.Unmarshal(b, &res)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
str, ok := res.(string)
|
||||
if !ok {
|
||||
m, ok := res.(map[string]interface{})
|
||||
if !ok {
|
||||
return errors.New("not an extended JSON ObjectID")
|
||||
}
|
||||
oid, ok := m["$oid"]
|
||||
if !ok {
|
||||
return errors.New("not an extended JSON ObjectID")
|
||||
}
|
||||
str, ok = oid.(string)
|
||||
if !ok {
|
||||
return errors.New("not an extended JSON ObjectID")
|
||||
}
|
||||
}
|
||||
|
||||
// An empty string is not a valid ObjectID, but we treat it as a special value that decodes as NilObjectID.
|
||||
if len(str) == 0 {
|
||||
copy(id[:], NilObjectID[:])
|
||||
return nil
|
||||
}
|
||||
|
||||
if len(str) != 24 {
|
||||
return fmt.Errorf("cannot unmarshal into an ObjectID, the length must be 24 but it is %d", len(str))
|
||||
}
|
||||
|
||||
_, err = hex.Decode(id[:], []byte(str))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
func processUniqueBytes() [5]byte {
|
||||
var b [5]byte
|
||||
_, err := io.ReadFull(rand.Reader, b[:])
|
||||
if err != nil {
|
||||
panic(fmt.Errorf("cannot initialize objectid package with crypto.rand.Reader: %v", err))
|
||||
}
|
||||
|
||||
return b
|
||||
}
|
||||
|
||||
func readRandomUint32() uint32 {
|
||||
var b [4]byte
|
||||
_, err := io.ReadFull(rand.Reader, b[:])
|
||||
if err != nil {
|
||||
panic(fmt.Errorf("cannot initialize objectid package with crypto.rand.Reader: %v", err))
|
||||
}
|
||||
|
||||
return (uint32(b[0]) << 0) | (uint32(b[1]) << 8) | (uint32(b[2]) << 16) | (uint32(b[3]) << 24)
|
||||
}
|
||||
|
||||
func putUint24(b []byte, v uint32) {
|
||||
b[0] = byte(v >> 16)
|
||||
b[1] = byte(v >> 8)
|
||||
b[2] = byte(v)
|
||||
}
|
Loading…
Reference in New Issue
Block a user