parent
57d892e35c
commit
05788e5fbb
@ -0,0 +1,101 @@ |
||||
package api |
||||
|
||||
import ( |
||||
"log" |
||||
"github.com/gofiber/fiber/v2" |
||||
|
||||
_ "github.com/mattn/go-sqlite3" |
||||
sq "github.com/Masterminds/squirrel" |
||||
"github.com/gofiber/fiber/v2/middleware/session" |
||||
|
||||
"zedshaw.games/webapp/data" |
||||
) |
||||
|
||||
var STORE *session.Store |
||||
|
||||
func GetApiStream(c *fiber.Ctx) error { |
||||
sess, err := STORE.Get(c) |
||||
sess.Set("fuck", "off") |
||||
|
||||
sql, args, err := sq.Select("*").From("stream").ToSql() |
||||
err = data.SelectJson[data.Stream](c, err, sql, args...) |
||||
|
||||
return IfErrNil(err, c) |
||||
} |
||||
|
||||
func GetApiStreamId(c *fiber.Ctx) error { |
||||
sql, args, err := sq.Select("*"). |
||||
From("stream").Where("id=?", c.Params("id")).ToSql() |
||||
|
||||
err = data.GetJson[data.Stream](c, err, sql, args...) |
||||
return IfErrNil(err, c) |
||||
} |
||||
|
||||
func GetApiStreamIdLinks(c *fiber.Ctx) error { |
||||
sql, args, err := sq.Select("*"). |
||||
From("stream_link"). |
||||
Where("stream_id=?", c.Params("id")).ToSql() |
||||
|
||||
err = data.SelectJson[data.Link](c, err, sql, args...) |
||||
|
||||
return IfErrNil(err, c) |
||||
} |
||||
|
||||
func PostApiLogin(c *fiber.Ctx) error { |
||||
var result data.User |
||||
|
||||
login, err := ReceivePost[data.Login](c) |
||||
if(err != nil) { return IfErrNil(err, c) } |
||||
|
||||
sql, args, err := sq.Select("username, password"). |
||||
From("user").Where("username=?", login.Username).ToSql() |
||||
|
||||
if err != nil { return IfErrNil(err, c) } |
||||
|
||||
err = data.DB.Get(&result, sql, args...) |
||||
if err != nil { return IfErrNil(err, c) } |
||||
|
||||
if login.Username == result.Username && login.Password == result.Password { |
||||
return c.Redirect("/") |
||||
} else { |
||||
return c.Redirect("/login/") |
||||
} |
||||
} |
||||
|
||||
func PostApiLink(c *fiber.Ctx) error { |
||||
var sql string |
||||
var args []interface{} |
||||
|
||||
link, err := ReceivePost[data.Link](c) |
||||
if err != nil { goto fail } |
||||
|
||||
sql, args, err = sq.Insert("stream_blah").Columns("stream_id", "url", "description").Values(link.StreamId, link.Url, link.Description).ToSql() |
||||
|
||||
err = data.Insert(err, sql, args...) |
||||
return c.Redirect("/live/") |
||||
|
||||
fail: |
||||
return IfErrNil(err, c) |
||||
} |
||||
|
||||
|
||||
func Setup(app *fiber.App) { |
||||
STORE = session.New() |
||||
|
||||
app.Get("/api/stream/", GetApiStream) |
||||
app.Get("/api/stream/:id", GetApiStreamId) |
||||
app.Get("/api/stream/:id/links", GetApiStreamIdLinks) |
||||
app.Post("/api/login", PostApiLogin) |
||||
app.Post("/api/link", PostApiLink) |
||||
|
||||
app.Get("/test/:name/", func (c *fiber.Ctx) error { |
||||
return c.Render(c.Params("name"), fiber.Map{ |
||||
"Title": "Hello, World!", |
||||
}) |
||||
}) |
||||
|
||||
} |
||||
|
||||
func Shutdown() { |
||||
log.Println("Shutting down controllers...") |
||||
} |
@ -0,0 +1,9 @@ |
||||
-- +goose Up |
||||
-- +goose StatementBegin |
||||
CREATE TABLE user (id INTEGER PRIMARY KEY, username TEXT UNIQUE NOT NULL, email TEXT UNIQUE, password TEXT NOT NULL); |
||||
-- +goose StatementEnd |
||||
|
||||
-- +goose Down |
||||
-- +goose StatementBegin |
||||
DROP TABLE user; |
||||
-- +goose StatementEnd |
Loading…
Reference in new issue