second commit
This commit is contained in:
parent
50062d668f
commit
1b90da8304
9 changed files with 168 additions and 0 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -0,0 +1,2 @@
|
|||
paddockpass
|
||||
test.db
|
71
api/main.go
Normal file
71
api/main.go
Normal file
|
@ -0,0 +1,71 @@
|
|||
package api
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Location struct {
|
||||
Country string `json:"country"`
|
||||
Latitude string `json:"lat"`
|
||||
Locatlity string `json:"locality"`
|
||||
Longitude string `json:"long"`
|
||||
}
|
||||
|
||||
type Circuit struct {
|
||||
CircuitID string `json:"circuitID"`
|
||||
URL string `json:"url"`
|
||||
Name string `json:"circuitName"`
|
||||
Location map[string]Location `json:"Location"`
|
||||
}
|
||||
|
||||
type Race struct {
|
||||
Season string `json:"season"`
|
||||
Round string `json:"round"`
|
||||
RaceName string `json:"raceName"`
|
||||
Circuit map[string]Circuit `json:"Circuit"`
|
||||
Date time.Time `json:"date"`
|
||||
Time time.Time `json:"time"`
|
||||
ULR string `json:"url"`
|
||||
}
|
||||
|
||||
type Races struct {
|
||||
Races map[string]Race `json:"Race"`
|
||||
Season string `json:"season"`
|
||||
}
|
||||
|
||||
type RaceTable struct {
|
||||
RaceTable map[string]Races `json:"Races"`
|
||||
}
|
||||
|
||||
type MRData struct {
|
||||
MRData map[string]RaceTable `json:"RaceTable"`
|
||||
}
|
||||
|
||||
// GetDataFromErgast download the data from the API.
|
||||
func GetDataFromErgast() {
|
||||
resp, err := http.Get("http://ergast.com/api/f1/2019.json")
|
||||
if err != nil {
|
||||
panic(err.Error())
|
||||
}
|
||||
|
||||
body, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
panic(err.Error())
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
var jsonData map[string]MRData
|
||||
// var jsonData map[string]RaceTable
|
||||
err = json.Unmarshal([]byte(body), &jsonData)
|
||||
if err != nil {
|
||||
panic(err.Error())
|
||||
}
|
||||
|
||||
for races := range jsonData {
|
||||
fmt.Println(races)
|
||||
}
|
||||
}
|
5
config/main.go
Normal file
5
config/main.go
Normal file
|
@ -0,0 +1,5 @@
|
|||
package config
|
||||
|
||||
const (
|
||||
apiURL = ""
|
||||
)
|
18
db/main.go
Normal file
18
db/main.go
Normal file
|
@ -0,0 +1,18 @@
|
|||
package db
|
||||
|
||||
import (
|
||||
"github.com/jinzhu/gorm"
|
||||
_ "github.com/jinzhu/gorm/dialects/sqlite"
|
||||
)
|
||||
|
||||
// InitDB load the database and the models
|
||||
func InitDB() {
|
||||
db, err := gorm.Open("sqlite3", "test.db")
|
||||
if err != nil {
|
||||
panic(err.Error())
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
db.AutoMigrate(&User{})
|
||||
|
||||
}
|
46
db/types.go
Normal file
46
db/types.go
Normal file
|
@ -0,0 +1,46 @@
|
|||
package db
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/jinzhu/gorm"
|
||||
)
|
||||
|
||||
// Race model describe race.
|
||||
type Race struct {
|
||||
gorm.Model
|
||||
Season string
|
||||
Round string
|
||||
RaceName string
|
||||
Circuit Circuit
|
||||
Date time.Time
|
||||
}
|
||||
|
||||
// Circuit model describe a circuit.
|
||||
type Circuit struct {
|
||||
gorm.Model
|
||||
Name string
|
||||
Location string
|
||||
}
|
||||
|
||||
// Races contains the list of all races for a season.
|
||||
type Races struct {
|
||||
gorm.Model
|
||||
Season string
|
||||
Races []Race
|
||||
}
|
||||
|
||||
// GORM DOC
|
||||
|
||||
// // Create
|
||||
// db.Create(&Product{Code: "L1212", Price: 1000})
|
||||
|
||||
// // Read
|
||||
// var product Product
|
||||
// db.First(&product, 1) // find product with id 1
|
||||
// db.First(&product, "code = ?", "L1212") // find product with code l1212
|
||||
|
||||
// // Update - update product's price to 2000
|
||||
// db.Model(&product).Update("Price", 2000)
|
||||
|
||||
// Delete - delete p
|
11
db/user.go
Normal file
11
db/user.go
Normal file
|
@ -0,0 +1,11 @@
|
|||
package db
|
||||
|
||||
import (
|
||||
"github.com/jinzhu/gorm"
|
||||
)
|
||||
|
||||
// User describe the user model
|
||||
type User struct {
|
||||
gorm.Model
|
||||
Username string
|
||||
}
|
15
main.go
Normal file
15
main.go
Normal file
|
@ -0,0 +1,15 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"framagit.org/pksl/paddockpass/api"
|
||||
"framagit.org/pksl/paddockpass/db"
|
||||
_ "github.com/go-sql-driver/mysql"
|
||||
)
|
||||
|
||||
func main() {
|
||||
fmt.Println("Hello there!")
|
||||
db.InitDB()
|
||||
api.GetDataFromErgast()
|
||||
}
|
BIN
paddockpass
BIN
paddockpass
Binary file not shown.
BIN
test.db
BIN
test.db
Binary file not shown.
Loading…
Reference in a new issue