no message

This commit is contained in:
Roee Gadot 2021-04-22 20:11:22 +03:00
parent 4ecccba4a1
commit 162dc9de7f
5 changed files with 176 additions and 66 deletions

View File

@ -4,5 +4,6 @@ go 1.16
require ( require (
github.com/google/martian v2.1.0+incompatible github.com/google/martian v2.1.0+incompatible
github.com/jinzhu/gorm v1.9.16 gorm.io/driver/sqlite v1.1.4
gorm.io/gorm v1.21.8
) )

View File

@ -1,5 +1,3 @@
github.com/CyrusBiotechnology/go-har v0.0.0-20160107200632-7e81ccfd566e h1:5/mVjqdyM1KH36dKfdfQ+En+Fqdj16aAlx9salHhzRY=
github.com/CyrusBiotechnology/go-har v0.0.0-20160107200632-7e81ccfd566e/go.mod h1:F06TYwuSm2x+nwDbYZ/K/I10kmiKWZWSMugUQ/YTSdQ=
github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc= 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/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 h1:83Wprp6ROGeiHFAP8WJdI2RoxALQYgdllERc3N5N2DM=
@ -22,10 +20,11 @@ github.com/jinzhu/now v1.1.2 h1:eVKgfIdy9b6zbWBMgFpfDPoAMifwSZagU9HmEU6zgiI=
github.com/jinzhu/now v1.1.2/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= 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 h1:sJZmqHoEaY7f+NPP8pgLB/WxulyR3fewgCM2qaSlBb4=
github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/mattn/go-sqlite3 v1.14.0 h1:mLyGNKR8+Vv9CAU7PphKa2hkEqxxhn8i32J6FPj1/QA=
github.com/mattn/go-sqlite3 v1.14.0/go.mod h1:JIl7NbARA7phWnGvh0LKTyg7S9BA+6gx71ShQilpsus= github.com/mattn/go-sqlite3 v1.14.0/go.mod h1:JIl7NbARA7phWnGvh0LKTyg7S9BA+6gx71ShQilpsus=
github.com/mattn/go-sqlite3 v1.14.5 h1:1IdxlwTNazvbKJQSxoJ5/9ECbEeaTTyeU7sEAZ5KKTQ= 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.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=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= 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-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 h1:GGJVjV8waZKRHrgwvtH66z9ZGVurTD1MT0n1Bb+q4aM=

View File

@ -7,8 +7,7 @@ import (
"strings" "strings"
"time" "time"
"github.com/google/martian/har" "gorm.io/gorm"
"github.com/jinzhu/gorm"
) )
// ===== BEGIN of all query sets // ===== BEGIN of all query sets
@ -60,11 +59,11 @@ func (qs MizuEntryQuerySet) All(ret *[]MizuEntry) error {
// Count is an autogenerated method // Count is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs MizuEntryQuerySet) Count() (int, error) { //func (qs MizuEntryQuerySet) Count() (int, error) {
var count int // var count int
err := qs.db.Count(&count).Error // err := qs.db.Count(&count).Error
return count, err // return count, err
} //}
// CreatedAtEq is an autogenerated method // CreatedAtEq is an autogenerated method
// nolint: dupl // nolint: dupl
@ -122,52 +121,140 @@ func (qs MizuEntryQuerySet) DeleteNumUnscoped() (int64, error) {
return db.RowsAffected, db.Error return db.RowsAffected, db.Error
} }
// DeletedAtEq is an autogenerated method // EntryEq is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs MizuEntryQuerySet) DeletedAtEq(deletedAt time.Time) MizuEntryQuerySet { func (qs MizuEntryQuerySet) EntryEq(entry string) MizuEntryQuerySet {
return qs.w(qs.db.Where("deleted_at = ?", deletedAt)) return qs.w(qs.db.Where("entry = ?", entry))
} }
// DeletedAtGt is an autogenerated method // EntryGt is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs MizuEntryQuerySet) DeletedAtGt(deletedAt time.Time) MizuEntryQuerySet { func (qs MizuEntryQuerySet) EntryGt(entry string) MizuEntryQuerySet {
return qs.w(qs.db.Where("deleted_at > ?", deletedAt)) return qs.w(qs.db.Where("entry > ?", entry))
} }
// DeletedAtGte is an autogenerated method // EntryGte is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs MizuEntryQuerySet) DeletedAtGte(deletedAt time.Time) MizuEntryQuerySet { func (qs MizuEntryQuerySet) EntryGte(entry string) MizuEntryQuerySet {
return qs.w(qs.db.Where("deleted_at >= ?", deletedAt)) return qs.w(qs.db.Where("entry >= ?", entry))
} }
// DeletedAtIsNotNull is an autogenerated method // EntryIdEq is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs MizuEntryQuerySet) DeletedAtIsNotNull() MizuEntryQuerySet { func (qs MizuEntryQuerySet) EntryIdEq(entryId string) MizuEntryQuerySet {
return qs.w(qs.db.Where("deleted_at IS NOT NULL")) return qs.w(qs.db.Where("entry_id = ?", entryId))
} }
// DeletedAtIsNull is an autogenerated method // EntryIdGt is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs MizuEntryQuerySet) DeletedAtIsNull() MizuEntryQuerySet { func (qs MizuEntryQuerySet) EntryIdGt(entryId string) MizuEntryQuerySet {
return qs.w(qs.db.Where("deleted_at IS NULL")) return qs.w(qs.db.Where("entry_id > ?", entryId))
} }
// DeletedAtLt is an autogenerated method // EntryIdGte is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs MizuEntryQuerySet) DeletedAtLt(deletedAt time.Time) MizuEntryQuerySet { func (qs MizuEntryQuerySet) EntryIdGte(entryId string) MizuEntryQuerySet {
return qs.w(qs.db.Where("deleted_at < ?", deletedAt)) return qs.w(qs.db.Where("entry_id >= ?", entryId))
} }
// DeletedAtLte is an autogenerated method // EntryIdIn is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs MizuEntryQuerySet) DeletedAtLte(deletedAt time.Time) MizuEntryQuerySet { func (qs MizuEntryQuerySet) EntryIdIn(entryId ...string) MizuEntryQuerySet {
return qs.w(qs.db.Where("deleted_at <= ?", deletedAt)) if len(entryId) == 0 {
qs.db.AddError(errors.New("must at least pass one entryId in EntryIdIn"))
return qs.w(qs.db)
}
return qs.w(qs.db.Where("entry_id IN (?)", entryId))
} }
// DeletedAtNe is an autogenerated method // EntryIdLike is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs MizuEntryQuerySet) DeletedAtNe(deletedAt time.Time) MizuEntryQuerySet { func (qs MizuEntryQuerySet) EntryIdLike(entryId string) MizuEntryQuerySet {
return qs.w(qs.db.Where("deleted_at != ?", deletedAt)) return qs.w(qs.db.Where("entry_id LIKE ?", entryId))
}
// EntryIdLt is an autogenerated method
// nolint: dupl
func (qs MizuEntryQuerySet) EntryIdLt(entryId string) MizuEntryQuerySet {
return qs.w(qs.db.Where("entry_id < ?", entryId))
}
// EntryIdLte is an autogenerated method
// nolint: dupl
func (qs MizuEntryQuerySet) EntryIdLte(entryId string) MizuEntryQuerySet {
return qs.w(qs.db.Where("entry_id <= ?", entryId))
}
// EntryIdNe is an autogenerated method
// nolint: dupl
func (qs MizuEntryQuerySet) EntryIdNe(entryId string) MizuEntryQuerySet {
return qs.w(qs.db.Where("entry_id != ?", entryId))
}
// EntryIdNotIn is an autogenerated method
// nolint: dupl
func (qs MizuEntryQuerySet) EntryIdNotIn(entryId ...string) MizuEntryQuerySet {
if len(entryId) == 0 {
qs.db.AddError(errors.New("must at least pass one entryId in EntryIdNotIn"))
return qs.w(qs.db)
}
return qs.w(qs.db.Where("entry_id NOT IN (?)", entryId))
}
// EntryIdNotlike is an autogenerated method
// nolint: dupl
func (qs MizuEntryQuerySet) EntryIdNotlike(entryId string) MizuEntryQuerySet {
return qs.w(qs.db.Where("entry_id NOT LIKE ?", entryId))
}
// EntryIn is an autogenerated method
// nolint: dupl
func (qs MizuEntryQuerySet) EntryIn(entry ...string) MizuEntryQuerySet {
if len(entry) == 0 {
qs.db.AddError(errors.New("must at least pass one entry in EntryIn"))
return qs.w(qs.db)
}
return qs.w(qs.db.Where("entry IN (?)", entry))
}
// EntryLike is an autogenerated method
// nolint: dupl
func (qs MizuEntryQuerySet) EntryLike(entry string) MizuEntryQuerySet {
return qs.w(qs.db.Where("entry LIKE ?", entry))
}
// EntryLt is an autogenerated method
// nolint: dupl
func (qs MizuEntryQuerySet) EntryLt(entry string) MizuEntryQuerySet {
return qs.w(qs.db.Where("entry < ?", entry))
}
// EntryLte is an autogenerated method
// nolint: dupl
func (qs MizuEntryQuerySet) EntryLte(entry string) MizuEntryQuerySet {
return qs.w(qs.db.Where("entry <= ?", entry))
}
// EntryNe is an autogenerated method
// nolint: dupl
func (qs MizuEntryQuerySet) EntryNe(entry string) MizuEntryQuerySet {
return qs.w(qs.db.Where("entry != ?", entry))
}
// EntryNotIn is an autogenerated method
// nolint: dupl
func (qs MizuEntryQuerySet) EntryNotIn(entry ...string) MizuEntryQuerySet {
if len(entry) == 0 {
qs.db.AddError(errors.New("must at least pass one entry in EntryNotIn"))
return qs.w(qs.db)
}
return qs.w(qs.db.Where("entry NOT IN (?)", entry))
}
// EntryNotlike is an autogenerated method
// nolint: dupl
func (qs MizuEntryQuerySet) EntryNotlike(entry string) MizuEntryQuerySet {
return qs.w(qs.db.Where("entry NOT LIKE ?", entry))
} }
// GetDB is an autogenerated method // GetDB is an autogenerated method
@ -330,10 +417,16 @@ func (qs MizuEntryQuerySet) OrderAscByCreatedAt() MizuEntryQuerySet {
return qs.w(qs.db.Order("created_at ASC")) return qs.w(qs.db.Order("created_at ASC"))
} }
// OrderAscByDeletedAt is an autogenerated method // OrderAscByEntry is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs MizuEntryQuerySet) OrderAscByDeletedAt() MizuEntryQuerySet { func (qs MizuEntryQuerySet) OrderAscByEntry() MizuEntryQuerySet {
return qs.w(qs.db.Order("deleted_at ASC")) return qs.w(qs.db.Order("entry ASC"))
}
// OrderAscByEntryId is an autogenerated method
// nolint: dupl
func (qs MizuEntryQuerySet) OrderAscByEntryId() MizuEntryQuerySet {
return qs.w(qs.db.Order("entry_id ASC"))
} }
// OrderAscByID is an autogenerated method // OrderAscByID is an autogenerated method
@ -384,10 +477,16 @@ func (qs MizuEntryQuerySet) OrderDescByCreatedAt() MizuEntryQuerySet {
return qs.w(qs.db.Order("created_at DESC")) return qs.w(qs.db.Order("created_at DESC"))
} }
// OrderDescByDeletedAt is an autogenerated method // OrderDescByEntry is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs MizuEntryQuerySet) OrderDescByDeletedAt() MizuEntryQuerySet { func (qs MizuEntryQuerySet) OrderDescByEntry() MizuEntryQuerySet {
return qs.w(qs.db.Order("deleted_at DESC")) return qs.w(qs.db.Order("entry DESC"))
}
// OrderDescByEntryId is an autogenerated method
// nolint: dupl
func (qs MizuEntryQuerySet) OrderDescByEntryId() MizuEntryQuerySet {
return qs.w(qs.db.Order("entry_id DESC"))
} }
// OrderDescByID is an autogenerated method // OrderDescByID is an autogenerated method
@ -432,10 +531,10 @@ func (qs MizuEntryQuerySet) OrderDescByUrl() MizuEntryQuerySet {
return qs.w(qs.db.Order("url DESC")) return qs.w(qs.db.Order("url DESC"))
} }
// PreloadEntry is an autogenerated method // PreloadDeletedAt is an autogenerated method
// nolint: dupl // nolint: dupl
func (qs MizuEntryQuerySet) PreloadEntry() MizuEntryQuerySet { func (qs MizuEntryQuerySet) PreloadDeletedAt() MizuEntryQuerySet {
return qs.w(qs.db.Preload("Entry")) return qs.w(qs.db.Preload("DeletedAt"))
} }
// ServiceEq is an autogenerated method // ServiceEq is an autogenerated method
@ -743,18 +842,25 @@ func (u MizuEntryUpdater) SetCreatedAt(createdAt time.Time) MizuEntryUpdater {
// SetDeletedAt is an autogenerated method // SetDeletedAt is an autogenerated method
// nolint: dupl // nolint: dupl
func (u MizuEntryUpdater) SetDeletedAt(deletedAt *time.Time) MizuEntryUpdater { func (u MizuEntryUpdater) SetDeletedAt(deletedAt gorm.DeletedAt) MizuEntryUpdater {
u.fields[string(MizuEntryDBSchema.DeletedAt)] = deletedAt u.fields[string(MizuEntryDBSchema.DeletedAt)] = deletedAt
return u return u
} }
// SetEntry is an autogenerated method // SetEntry is an autogenerated method
// nolint: dupl // nolint: dupl
func (u MizuEntryUpdater) SetEntry(entry har.Entry) MizuEntryUpdater { func (u MizuEntryUpdater) SetEntry(entry string) MizuEntryUpdater {
u.fields[string(MizuEntryDBSchema.Entry)] = entry u.fields[string(MizuEntryDBSchema.Entry)] = entry
return u return u
} }
// SetEntryId is an autogenerated method
// nolint: dupl
func (u MizuEntryUpdater) SetEntryId(entryId string) MizuEntryUpdater {
u.fields[string(MizuEntryDBSchema.EntryId)] = entryId
return u
}
// SetID is an autogenerated method // SetID is an autogenerated method
// nolint: dupl // nolint: dupl
func (u MizuEntryUpdater) SetID(ID uint) MizuEntryUpdater { func (u MizuEntryUpdater) SetID(ID uint) MizuEntryUpdater {
@ -837,6 +943,7 @@ var MizuEntryDBSchema = struct {
UpdatedAt MizuEntryDBSchemaField UpdatedAt MizuEntryDBSchemaField
DeletedAt MizuEntryDBSchemaField DeletedAt MizuEntryDBSchemaField
Entry MizuEntryDBSchemaField Entry MizuEntryDBSchemaField
EntryId MizuEntryDBSchemaField
Url MizuEntryDBSchemaField Url MizuEntryDBSchemaField
Method MizuEntryDBSchemaField Method MizuEntryDBSchemaField
Status MizuEntryDBSchemaField Status MizuEntryDBSchemaField
@ -849,6 +956,7 @@ var MizuEntryDBSchema = struct {
UpdatedAt: MizuEntryDBSchemaField("updated_at"), UpdatedAt: MizuEntryDBSchemaField("updated_at"),
DeletedAt: MizuEntryDBSchemaField("deleted_at"), DeletedAt: MizuEntryDBSchemaField("deleted_at"),
Entry: MizuEntryDBSchemaField("entry"), Entry: MizuEntryDBSchemaField("entry"),
EntryId: MizuEntryDBSchemaField("entry_id"),
Url: MizuEntryDBSchemaField("url"), Url: MizuEntryDBSchemaField("url"),
Method: MizuEntryDBSchemaField("method"), Method: MizuEntryDBSchemaField("method"),
Status: MizuEntryDBSchemaField("status"), Status: MizuEntryDBSchemaField("status"),
@ -865,6 +973,7 @@ func (o *MizuEntry) Update(db *gorm.DB, fields ...MizuEntryDBSchemaField) error
"updated_at": o.UpdatedAt, "updated_at": o.UpdatedAt,
"deleted_at": o.DeletedAt, "deleted_at": o.DeletedAt,
"entry": o.Entry, "entry": o.Entry,
"entry_id": o.EntryId,
"url": o.Url, "url": o.Url,
"method": o.Method, "method": o.Method,
"status": o.Status, "status": o.Status,

View File

@ -5,17 +5,11 @@ import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"github.com/google/martian/har" "github.com/google/martian/har"
"github.com/jinzhu/gorm" "gorm.io/driver/sqlite"
// "gorm.io/driver/sqlite" "gorm.io/gorm"
_ "github.com/jinzhu/gorm/dialects/sqlite"
"os" "os"
) )
func check(e error) {
if e != nil {
panic(e)
}
}
func main() { func main() {
FILEPATH := "/Users/roeegadot/Downloads/testing.har" FILEPATH := "/Users/roeegadot/Downloads/testing.har"
@ -41,24 +35,32 @@ func main() {
} }
func getGormDB() *gorm.DB { func getGormDB() *gorm.DB {
db, _ := gorm.Open("sqlite", "roee.db") db, _ := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{})
migErr := db.AutoMigrate(&MizuEntry{})
if migErr != nil {
panic("Cannot run migration")
}
return db return db
} }
func saveHarToDb(entry har.Entry) { func saveHarToDb(entry har.Entry) {
entryData := entry a, _ := json.Marshal(entry)
mizuEntry := MizuEntry{ mizuEntry := MizuEntry{
EntryId: NewObjectID(), EntryId: NewObjectID().Hex(),
Entry: entryData, // simple way to store it and not convert to bytes
Url: entryData.Request.URL, Entry: string(a),
Method: entryData.Request.Method, Url: (&entry).Request.URL,
Status: entryData.Response.Status, Method: (&entry).Request.Method,
Status: (&entry).Response.Status,
Source: "", Source: "",
Service: "MyService", Service: "MyService",
} }
if err := mizuEntry.Create(getGormDB()); err != nil { if err := mizuEntry.Create(getGormDB()); err != nil {
fmt.Print(err)
panic("cannot create") panic("cannot create")
} }
} }

View File

@ -1,8 +1,7 @@
package main package main
import ( import (
"github.com/jinzhu/gorm" "gorm.io/gorm"
"github.com/google/martian/har"
) )
@ -10,11 +9,11 @@ import (
// gen:qs // gen:qs
type MizuEntry struct { type MizuEntry struct {
gorm.Model gorm.Model
// The Entry itself // The Entry itself (as string)
Entry har.Entry `json:"entry,omitempty"` Entry string `json:"entry,omitempty"`
//TODO: here we will add fields we need to query for //TODO: here we will add fields we need to query for
EntryId ObjectID `json:"entryId"` EntryId string `json:"entryId"`
Url string `json:"url"` Url string `json:"url"`
Method string `json:"method"` Method string `json:"method"`
Status int `json:"status"` Status int `json:"status"`