package db import ( "github.com/dannyvankooten/ana/models" "log" "time" "math/rand" // "fmt" // "github.com/Pallinder/go-randomdata" ) var browserNames = []string { "Chrome", "Chrome", "Firefox", "Safari", "Safari", "Internet Explorer", } var months = []time.Month { time.January, time.February, time.March, time.April, time.May, time.June, time.July, time.August, time.September, time.October, time.November, time.December, } var browserLanguages = []string { "en-US", "en-US", "nl-NL", "fr-FR", "de-DE", "es-ES", } var screenResolutions = []string { "2560x1440", "1920x1080", "1920x1080", "360x640", } func seedPages() []models.Page { var pages = make([]models.Page, 0) homepage := models.Page{ Hostname: "wordpress.dev", Path: "/", Title: "Homepage", } homepage.Save(Conn) contactPage := models.Page{ Hostname: "wordpress.dev", Path: "/contact/", Title: "Contact", } contactPage.Save(Conn) aboutPage := models.Page{ Hostname: "wordpress.dev", Path: "/about/", Title: "About Me", } aboutPage.Save(Conn) portfolioPage := models.Page{ Hostname: "wordpress.dev", Path: "/portfolio/", Title: "Portfolio", } portfolioPage.Save(Conn) pages = append(pages, homepage) pages = append(pages, homepage) pages = append(pages, contactPage) pages = append(pages, aboutPage) pages = append(pages, portfolioPage) return pages } func Seed(n int) { // pages := seedPages() // prepare statement for inserting data stmt, err := Conn.Prepare(`INSERT INTO pageviews( page_id, visitor_id, referrer_keyword, referrer_url, timestamp ) VALUES( ?, ?, ? ?, ? )`) if err != nil { log.Fatal(err) } defer stmt.Close() // // insert X random hits // log.Printf("Inserting %d visits", n) // for i := 0; i < n; i++ { // // // print a dot as progress indicator // fmt.Print(".") // // // generate random timestamp // date := randomDateBeforeNow(); // timestamp := fmt.Sprintf("%s %d:%d:%d", date.Format("2006-01-02"), randInt(10, 24), randInt(10, 60), randInt(10, 60)) // // visit := models.Visit{ // IpAddress: randomdata.IpV4Address(), // BrowserName: randSliceElement(browserNames), // BrowserVersion: "54.0.2840.100", // BrowserLanguage: randSliceElement(browserLanguages), // ScreenResolution: randSliceElement(screenResolutions), // Country: randomdata.Country(randomdata.TwoCharCountry), // ReferrerUrl: "", // Timestamp: timestamp, // } // // // insert between 1-4 pageviews for this visitor // for j := 0; j < randInt(1, 4); j++ { // page := pages[randInt(0, len(pages))] // visit.PageID = page.ID // // _, err = stmt.Exec( // visit.PageID, // visit.BrowserLanguage, // visit.BrowserName, // visit.BrowserVersion, // visit.Country, // visit.IpAddress, // visit.ReferrerUrl, // visit.ScreenResolution, // visit.Timestamp, // ) // if err != nil { // log.Fatal(err) // } // } //} } func randomDate() time.Time { now := time.Now() month := months[randInt(0, len(months))] t := time.Date(now.Year(), month, randInt(1,31), randInt(0,23), randInt(0,59), randInt(0,59), 0, time.UTC) return t } func randomDateBeforeNow() time.Time { now := time.Now() date := randomDate() for( date.After(now) ) { date = randomDate() } return date } func randSliceElement(slice []string) string { return slice[randInt(0, len(slice))] } func randInt(min int, max int) int { return min + rand.Intn(max-min) }