parent
da6da800a0
commit
47e7b69af7
@ -0,0 +1,28 @@ |
||||
package features_shopping |
||||
|
||||
import ( |
||||
"github.com/gofiber/fiber/v2" |
||||
"MY/webapp/data" |
||||
_ "github.com/mattn/go-sqlite3" |
||||
sq "github.com/Masterminds/squirrel" |
||||
"fmt" |
||||
) |
||||
|
||||
func GetApiProducts(c *fiber.Ctx) error { |
||||
sql, args, err := sq.Select("*").From("Product").ToSql() |
||||
|
||||
fmt.Println("SQL:", sql, args, err) |
||||
|
||||
return data.SelectJson[data.Product](c, err, sql, args...) |
||||
} |
||||
|
||||
|
||||
func GetApiCart(c *fiber.Ctx) error { |
||||
|
||||
return c.JSON(fiber.Map{}) |
||||
} |
||||
|
||||
func SetupApi(app *fiber.App) { |
||||
app.Get("/api/shopping/products", GetApiProducts) |
||||
app.Get("/api/shopping/cart", GetApiCart) |
||||
} |
||||
@ -0,0 +1,9 @@ |
||||
package features_shopping |
||||
|
||||
import ( |
||||
// "MY/webapp/data"
|
||||
// _ "github.com/mattn/go-sqlite3"
|
||||
// sq "github.com/Masterminds/squirrel"
|
||||
) |
||||
|
||||
|
||||
@ -0,0 +1,10 @@ |
||||
package features_shopping |
||||
|
||||
import ( |
||||
"github.com/gofiber/fiber/v2" |
||||
) |
||||
|
||||
func Setup(app *fiber.App) { |
||||
SetupApi(app) |
||||
SetupViews(app) |
||||
} |
||||
@ -0,0 +1,11 @@ |
||||
package features_shopping |
||||
|
||||
import ( |
||||
"github.com/gofiber/fiber/v2" |
||||
. "MY/webapp/common" |
||||
) |
||||
|
||||
func SetupViews(app *fiber.App) { |
||||
err := ConfigViews(app, "views/shopping") |
||||
if err != nil { panic(err) } |
||||
} |
||||
@ -0,0 +1,14 @@ |
||||
package tests |
||||
|
||||
import ( |
||||
"testing" |
||||
"github.com/stretchr/testify/require" |
||||
) |
||||
|
||||
func TestLogin(t *testing.T) { |
||||
assert.Equal(true, false) |
||||
} |
||||
|
||||
func TestMain(m *testing.M) { |
||||
m.Run() |
||||
} |
||||
@ -0,0 +1,21 @@ |
||||
<h1>Checkout</h1> |
||||
|
||||
<bar class="bg-gray-800"> |
||||
<aside>I'm baby pork belly blackbird spyplane vape, bodega boys farm-to-table taxidermy JOMO chia copper mug intelligentsia distillery.</aside> |
||||
|
||||
<bar class="justify-between" style="padding:30px"> |
||||
<div class="text-2xl">Price: $100.00</div> |
||||
<a href="/shopping/remove/1"><button type="button">X</button></a> |
||||
</bar> |
||||
</bar> |
||||
|
||||
<table> |
||||
<tr><th>Subtotal:</th><td>$100.00</td></tr> |
||||
<tr><th>Total:</th><td>$50.00</td></tr> |
||||
</table> |
||||
|
||||
<bar> |
||||
<a href="/shopping/"><button type="button">Continue Shopping</button></a> |
||||
<a href="/paypal/"><button type="button">Pay with Paypal</button></a> |
||||
<a href="/paypal/"><button type="button">Pay with Credit Card</button></a> |
||||
</bar> |
||||
@ -0,0 +1,24 @@ |
||||
<script> |
||||
let Data = new PaginateTable("/api/shopping/products") |
||||
</script> |
||||
|
||||
<h1>Products</h1> |
||||
|
||||
<p>I have these products for you:</p> |
||||
|
||||
<block x-data="Data"> |
||||
<template x-for="item in contents"> |
||||
<bar class="bg-gray-800"> |
||||
<shape x-text="item.Slug"></shape> |
||||
<div> |
||||
<h4 x-text="item.Title"></h4> |
||||
<aside x-text="item.Description"></aside> |
||||
|
||||
<bar class="justify-between" style="padding:30px"> |
||||
<div class="text-2xl">Price: <span x-text="item.Price"></span></div> |
||||
<a href="/shopping/checkout"><button type="button">Buy</button></a> |
||||
</bar> |
||||
</div> |
||||
</bar> |
||||
</template> |
||||
</block> |
||||
Loading…
Reference in new issue