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