package main

import (
	"database/sql"
	"log"

	"github.com/coopernurse/gorp"
	_ "github.com/lib/pq"
)

func populateLocations(locationsMap *gorp.DbMap) {
	tuftsResQuad := initLocation("Tufts Res Quad", 42.408565, -71.121765)
	hodgkinsPark := initLocation("Hodgkins Park", 42.399566, -71.124595)
	danehyPark := initLocation("Danehy Park", 42.388306, -71.137507)
	ledermanPark := initLocation("Lederman Park", 42.363649, -71.071774)

	err := locationsMap.Insert(tuftsResQuad, hodgkinsPark,
		danehyPark, ledermanPark)

	if err != nil {
		log.Fatal(err)
	}
}

func initDB() *gorp.DbMap {
	db, err := sql.Open("postgres", "postgres://yourPostgresDatabaseLogin")

	if err != nil {
		log.Fatal(err)
	}

	dbMap := &gorp.DbMap{Db: db, Dialect: gorp.PostgresDialect{}}

	locationsTable :=
		dbMap.AddTableWithName(Location{}, "locations").SetKeys(true, "Id")

	locationsTable.ColMap("Name").SetNotNull(true).SetUnique(true)
	locationsTable.ColMap("Lat").SetNotNull(true)
	locationsTable.ColMap("Lng").SetNotNull(true)

	err = dbMap.DropTablesIfExists()
	if err != nil {
		log.Fatal(err)
	}

	err = dbMap.CreateTablesIfNotExists()
	if err != nil {
		log.Fatal(err)
	}

	populateLocations(dbMap)

	return dbMap
}