|
- package main
-
- import (
- "database/sql"
- "log"
- "net/http"
- "text/template"
-
- _ "github.com/go-sql-driver/mysql"
- )
-
- type Employee struct {
- Id int
- Name string
- City string
- }
-
- var tmpl = template.Must(template.ParseGlob("form/*.tmpl"))
-
- func dbConn() (db *sql.DB) {
- dbDriver := Config.DB.Driver
- dbUser := Config.DB.User
- dbPass := Config.DB.Pass
- dbName := Config.DB.Schema
- db, err := sql.Open(dbDriver, dbUser+":"+dbPass+"@/"+dbName)
- if err != nil {
- panic(err.Error())
- }
- return db
- }
-
- func Index(w http.ResponseWriter, r *http.Request) {
- db := dbConn()
- selDB, err := db.Query("SELECT * FROM Employee ORDER BY id DESC")
- if err != nil {
- panic(err.Error())
- }
- emp := Employee{}
- res := []Employee{}
- for selDB.Next() {
- var id int
- var name, city string
- err = selDB.Scan(&id, &name, &city)
- if err != nil {
- panic(err.Error())
- }
- emp.Id = id
- emp.Name = name
- emp.City = city
- res = append(res, emp)
- }
- tmpl.ExecuteTemplate(w, "Index", res)
- defer db.Close()
- }
-
- func Show(w http.ResponseWriter, r *http.Request) {
- db := dbConn()
- nId := r.URL.Query().Get("id")
- selDB, err := db.Query("SELECT * FROM Employee WHERE id=?", nId)
- if err != nil {
- panic(err.Error())
- }
- emp := Employee{}
- for selDB.Next() {
- var id int
- var name, city string
- err = selDB.Scan(&id, &name, &city)
- if err != nil {
- panic(err.Error())
- }
- emp.Id = id
- emp.Name = name
- emp.City = city
- }
- tmpl.ExecuteTemplate(w, "Show", emp)
- defer db.Close()
- }
-
- func New(w http.ResponseWriter, r *http.Request) {
- tmpl.ExecuteTemplate(w, "New", nil)
- }
-
- func Edit(w http.ResponseWriter, r *http.Request) {
- db := dbConn()
- nId := r.URL.Query().Get("id")
- selDB, err := db.Query("SELECT * FROM Employee WHERE id=?", nId)
- if err != nil {
- panic(err.Error())
- }
- emp := Employee{}
- for selDB.Next() {
- var id int
- var name, city string
- err = selDB.Scan(&id, &name, &city)
- if err != nil {
- panic(err.Error())
- }
- emp.Id = id
- emp.Name = name
- emp.City = city
- }
- tmpl.ExecuteTemplate(w, "Edit", emp)
- defer db.Close()
- }
-
- func Insert(w http.ResponseWriter, r *http.Request) {
- db := dbConn()
- if r.Method == "POST" {
- name := r.FormValue("name")
- city := r.FormValue("city")
- insForm, err := db.Prepare("INSERT INTO Employee(name, city) VALUES(?,?)")
- if err != nil {
- panic(err.Error())
- }
- insForm.Exec(name, city)
- log.Println("INSERT: Name: " + name + " | City: " + city)
- }
- defer db.Close()
- http.Redirect(w, r, "/", 301)
- }
-
- func Update(w http.ResponseWriter, r *http.Request) {
- db := dbConn()
- if r.Method == "POST" {
- name := r.FormValue("name")
- city := r.FormValue("city")
- id := r.FormValue("uid")
- insForm, err := db.Prepare("UPDATE Employee SET name=?, city=? WHERE id=?")
- if err != nil {
- panic(err.Error())
- }
- insForm.Exec(name, city, id)
- log.Println("UPDATE: Name: " + name + " | City: " + city)
- }
- defer db.Close()
- http.Redirect(w, r, "/", 301)
- }
-
- func Delete(w http.ResponseWriter, r *http.Request) {
- db := dbConn()
- emp := r.URL.Query().Get("id")
- delForm, err := db.Prepare("DELETE FROM Employee WHERE id=?")
- if err != nil {
- panic(err.Error())
- }
- delForm.Exec(emp)
- log.Println("DELETE")
- defer db.Close()
- http.Redirect(w, r, "/", 301)
- }
|