plakateapp

Check-in [e3811d1410]
Login

Check-in [e3811d1410]

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Coderedundanz
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | master | trunk
Files: files | file ages | folders
SHA3-256: e3811d1410cd9c00982d7d3cd030e8187f6cd7da51b07260342dc1b8f67a9c36
User & Date: git@tuxproject.de 2019-04-04 17:14:31
Context
2019-04-04
17:39
Typo 🙄 check-in: 5e55bbe515 user: git@tuxproject.de tags: master, trunk
17:14
Coderedundanz check-in: e3811d1410 user: git@tuxproject.de tags: master, trunk
16:04
README passt jetzt check-in: ede61b8575 user: git@tuxproject.de tags: master, trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to src/plakateapp.go.

1
2
3
4
5
6
7
8

9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

24
25
26
27
28
29

30
31
32
33
34
35
36
37
38
39












40
41
42
43
44
45
46
package main

import (
    "encoding/json"
    "fmt"
    "html/template"
    "log"
    "net/http"


    // Bibliotheken aus GitHub:
    _ "github.com/mattn/go-sqlite3"
    "github.com/jmoiron/sqlx"
    "github.com/gorilla/mux"
)

type Plakat struct {
    // Mapping DB <-> Go-Datentypen:
    ID          int     `db:"id"`
    Latitude    float32 `db:"lat"`
    Longitude   float32 `db:"lon"`
}

func CheckError(err error) {

    if err != nil {
        panic(err)
    }
}

func FetchPlakate() []Plakat {

    db, err := sqlx.Open("sqlite3", "./plakate.db")
    CheckError(err)
    defer db.Close()
    
    // Liste erzeugen:
    plakate := []Plakat{}
    db.Select(&plakate, "SELECT * FROM plakate")
    
    return plakate
}












    
// ----------------------------------------
   
func HomeHandler(w http.ResponseWriter, r *http.Request) {
    // Startseite aufrufen:
    tmpl := template.Must(template.ParseFiles("templates/index.htm"))
    tmpl.Execute(w, "")








>















>






>










>
>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package main

import (
    "encoding/json"
    "fmt"
    "html/template"
    "log"
    "net/http"
    "strconv"

    // Bibliotheken aus GitHub:
    _ "github.com/mattn/go-sqlite3"
    "github.com/jmoiron/sqlx"
    "github.com/gorilla/mux"
)

type Plakat struct {
    // Mapping DB <-> Go-Datentypen:
    ID          int     `db:"id"`
    Latitude    float32 `db:"lat"`
    Longitude   float32 `db:"lon"`
}

func CheckError(err error) {
    // Bei Fehlern schreiend im Kreis rennen:
    if err != nil {
        panic(err)
    }
}

func FetchPlakate() []Plakat {
    // Liste von Plakaten aus der DB in ein Plakat-Array schieben:
    db, err := sqlx.Open("sqlite3", "./plakate.db")
    CheckError(err)
    defer db.Close()
    
    // Liste erzeugen:
    plakate := []Plakat{}
    db.Select(&plakate, "SELECT * FROM plakate")
    
    return plakate
}

func DeletePlakat(id string) {
    // Datenbank aufrufen:
    db, err := sqlx.Open("sqlite3", "./plakate.db")
    CheckError(err)
    defer db.Close()
    
    // Löschen, falls möglich:
    stmt, err := db.Prepare("delete from plakate where id = ?")
    _, err = stmt.Exec(strconv.Atoi(id))
    CheckError(err)
}
    
// ----------------------------------------
   
func HomeHandler(w http.ResponseWriter, r *http.Request) {
    // Startseite aufrufen:
    tmpl := template.Must(template.ParseFiles("templates/index.htm"))
    tmpl.Execute(w, "")
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105

106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
    
    // Datenbank aufrufen:
    db, err := sqlx.Open("sqlite3", "./plakate.db")
    CheckError(err)
    defer db.Close()
    
    stmt, err := db.Prepare("insert into plakate (lat, lon) values (?, ?)")
    CheckError(err)
    _, err = stmt.Exec(lat, lon)
    CheckError(err)
    
    fmt.Fprintf(w, "Plakat erfolgreich eingetragen!")
}

func DelHandler(w http.ResponseWriter, r *http.Request) {
    // Plakat mit vars["id"] löschen:
    vars := mux.Vars(r)

    // Datenbank aufrufen:
    db, err := sqlx.Open("sqlite3", "./plakate.db")
    CheckError(err)
    defer db.Close()
    
    // Löschen, falls möglich:
    stmt, err := db.Prepare("delete from plakate where id = ?")
    CheckError(err)
    _, err = stmt.Exec(vars["id"])
    CheckError(err)
    
    // Falls kein Fehler aufgetreten ist, umleiten auf /manageplakate:
    http.Redirect(w, r, "/manageplakate", http.StatusMovedPermanently)
}

func DelPostHandler(w http.ResponseWriter, r *http.Request) {

    data := r.FormValue("id")

    // Datenbank aufrufen:
    db, err := sqlx.Open("sqlite3", "./plakate.db")
    CheckError(err)
    defer db.Close()
    
    // Löschen, falls möglich:
    stmt, err := db.Prepare("delete from plakate where id = ?")
    CheckError(err)
    _, err = stmt.Exec(data)
    CheckError(err)
    
    // Falls kein Fehler aufgetreten ist, umleiten auf /manageplakate:
    http.Redirect(w, r, "/manageplakate", http.StatusMovedPermanently)
}

func main() {
    // Routing:







<







|

<
<
<
<
<
<
<
<
<
|
<






>

|
<
<
<
<
<
<
<
<
<
<







87
88
89
90
91
92
93

94
95
96
97
98
99
100
101
102









103

104
105
106
107
108
109
110
111
112










113
114
115
116
117
118
119
    
    // Datenbank aufrufen:
    db, err := sqlx.Open("sqlite3", "./plakate.db")
    CheckError(err)
    defer db.Close()
    
    stmt, err := db.Prepare("insert into plakate (lat, lon) values (?, ?)")

    _, err = stmt.Exec(lat, lon)
    CheckError(err)
    
    fmt.Fprintf(w, "Plakat erfolgreich eingetragen!")
}

func DelHandler(w http.ResponseWriter, r *http.Request) {
    // Plakat mit URL-Parameter "id" löschen:
    vars := mux.Vars(r)









    DeletePlakat(vars["id"])

    
    // Falls kein Fehler aufgetreten ist, umleiten auf /manageplakate:
    http.Redirect(w, r, "/manageplakate", http.StatusMovedPermanently)
}

func DelPostHandler(w http.ResponseWriter, r *http.Request) {
    // Plakat mit POST-Parameter "id" löschen:
    data := r.FormValue("id")
    DeletePlakat(data)










    
    // Falls kein Fehler aufgetreten ist, umleiten auf /manageplakate:
    http.Redirect(w, r, "/manageplakate", http.StatusMovedPermanently)
}

func main() {
    // Routing: