package syncer import ( "encoding/json" "time" ) const ( SYNC_ACTION_INSERT = "Insert" SYNC_ACTION_UPDATE = "Update" SYNC_ACTION_DELETE = "Delete" // ClientPriceUpdate TYPE_CLIENT_PRICE_UPDATE = "ClientPriceUpdate" ) type Model struct { ID uint64 `json:"id" gorm:"primary_key"` Type string `json:"type" gorm:"not null"` CreatedAt time.Time `json:"create_at"` UpdatedAt time.Time `json:"update_at"` } func (m Model) GetId() uint64 { return m.ID } func (m Model) GetType() string { return m.Type } type SyncLog struct { Model DataType string `json:"data_type"` // data type Data string `json:"data" sql:"type:varchar(5000)"` // data in json string Action string `json:"action"` // [Insert,Update,Delete] Synced bool `json:"synced"` } // Client data type ClientPriceUpdate struct { Model CompanyId uint64 `json:"company_id"` // only used by FOS StationId uint64 `json:"station_id"` // only used by FOS PriceUpdateId uint64 `json:"price_update_id"` GradeId uint64 `json:"grade_id"` GradeText string `json:"grade_text"` GradePrice uint64 `json:"grade_price"` NewGradePrice uint64 `json:"new_grade_price"` RecCreatedAt string `json:"rec_create_at"` RecUpdatedAt string `json:"rec_update_at"` } // Custom unmarshal for date time of the record func (s *ClientPriceUpdate) UnmarshalJSON(data []byte) error { var aux ClientPriceUpdate if err := json.Unmarshal(data, &aux); err != nil { return err } createdAt, e := time.Parse("2006-01-02 15:04:05.999999999-07:00", aux.RecCreatedAt) if e != nil { return e } updatedAt, e := time.Parse("2006-01-02 15:04:05.999999999-07:00", aux.RecUpdatedAt) if e != nil { return e } s.CreatedAt = createdAt s.UpdatedAt = updatedAt return nil }