|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- 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)
- }
|