commit
35ca8cc5ed
3
main.go
3
main.go
@ -6,6 +6,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
fmt.Println("Hola mundo")
|
fmt.Println("Starting wikingo...")
|
||||||
|
|
||||||
server.Serve()
|
server.Serve()
|
||||||
}
|
}
|
||||||
|
@ -1,42 +1,9 @@
|
|||||||
package model
|
package model
|
||||||
|
|
||||||
import (
|
// Store interface
|
||||||
"fmt"
|
type Store interface {
|
||||||
"gorm.io/driver/sqlite"
|
Open() error
|
||||||
"gorm.io/gorm"
|
AddPage()
|
||||||
)
|
GetPage() Page
|
||||||
|
GetAllPages() ([]Page, error)
|
||||||
type Store struct {
|
|
||||||
db *gorm.DB
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *Store) Open() error {
|
|
||||||
var err error
|
|
||||||
|
|
||||||
s.db, err = gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
fmt.Printf("%s\n", s.db.Name())
|
|
||||||
|
|
||||||
// Migrate the Schema
|
|
||||||
s.db.AutoMigrate(&Page{})
|
|
||||||
|
|
||||||
// Create
|
|
||||||
s.addPage()
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *Store) GetPage() Page {
|
|
||||||
var page Page
|
|
||||||
s.db.First(&page)
|
|
||||||
return page
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *Store) addPage() {
|
|
||||||
s.db.Create(&Page{Code: "D55", Price: 200})
|
|
||||||
fmt.Println("Page created")
|
|
||||||
}
|
|
||||||
|
|
||||||
func getUser() {
|
|
||||||
}
|
}
|
||||||
|
27
model/store_file.go
Normal file
27
model/store_file.go
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
)
|
||||||
|
|
||||||
|
type StoreFile struct {
|
||||||
|
db string
|
||||||
|
s Store
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *StoreFile) Open() error {
|
||||||
|
fmt.Printf("File: Store Open")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *StoreFile) AddPage() {
|
||||||
|
fmt.Println("File: Page created")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *StoreFile) GetPage() {
|
||||||
|
fmt.Println("File: Get Page")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *StoreFile) GetAllPages() {
|
||||||
|
fmt.Println("File: Get All Pages")
|
||||||
|
}
|
47
model/store_gorm.go
Normal file
47
model/store_gorm.go
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"gorm.io/driver/sqlite"
|
||||||
|
"gorm.io/gorm"
|
||||||
|
)
|
||||||
|
|
||||||
|
type StoreGorm struct {
|
||||||
|
db *gorm.DB
|
||||||
|
store Store
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *StoreGorm) Open() error {
|
||||||
|
var err error
|
||||||
|
|
||||||
|
s.db, err = gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
fmt.Printf("%s\n", s.db.Name())
|
||||||
|
|
||||||
|
// Migrate the Schema
|
||||||
|
s.db.AutoMigrate(&Page{})
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *StoreGorm) AddPage() {
|
||||||
|
s.db.Create(&Page{Code: "D55", Price: 200})
|
||||||
|
fmt.Println("Page created")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *StoreGorm) GetPage() Page {
|
||||||
|
var page Page
|
||||||
|
s.db.First(&page)
|
||||||
|
return page
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *StoreGorm) GetAllPages() ([]Page, error) {
|
||||||
|
var pages []Page
|
||||||
|
tx := s.db.Find(&pages)
|
||||||
|
if tx.Error != nil {
|
||||||
|
return []Page{}, tx.Error
|
||||||
|
}
|
||||||
|
return pages, nil
|
||||||
|
}
|
26
model/store_lab.go
Normal file
26
model/store_lab.go
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
)
|
||||||
|
|
||||||
|
type StoreLab struct {
|
||||||
|
db string
|
||||||
|
s Store
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *StoreLab) Open() {
|
||||||
|
fmt.Printf("Lab: Store Open")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *StoreLab) AddPage() {
|
||||||
|
fmt.Println("Lab: Page created")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *StoreLab) GetPage() {
|
||||||
|
fmt.Println("Lab: Get Page")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *StoreLab) GetAllPages() {
|
||||||
|
fmt.Println("Lab: Get All Pages")
|
||||||
|
}
|
29
server/app.go
Normal file
29
server/app.go
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
package server
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"github.com/labstack/echo/v4"
|
||||||
|
"log"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
func WikiHome(c echo.Context) error {
|
||||||
|
res := store.GetPage()
|
||||||
|
fmt.Println(res)
|
||||||
|
return c.String(http.StatusOK, "WikiHome")
|
||||||
|
}
|
||||||
|
|
||||||
|
func WikiAbout(c echo.Context) error {
|
||||||
|
id := c.Param("id")
|
||||||
|
return c.String(http.StatusOK, "About the wiki. id:"+id)
|
||||||
|
}
|
||||||
|
|
||||||
|
func WikiListPages(c echo.Context) error {
|
||||||
|
fmt.Println("WikiListPages")
|
||||||
|
res, err := store.GetAllPages()
|
||||||
|
if err != nil {
|
||||||
|
log.Panicln(err)
|
||||||
|
}
|
||||||
|
fmt.Println(res)
|
||||||
|
return c.String(http.StatusOK, "WikiListPages")
|
||||||
|
}
|
@ -1,36 +1,35 @@
|
|||||||
package server
|
package server
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"github.com/labstack/echo/v4"
|
"github.com/labstack/echo/v4"
|
||||||
"github.com/oscarmlage/wikingo/model"
|
"github.com/oscarmlage/wikingo/model"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var store *model.Store
|
var (
|
||||||
|
store model.Store
|
||||||
|
)
|
||||||
|
|
||||||
func Serve() {
|
func Serve() {
|
||||||
store = &model.Store{}
|
|
||||||
|
// Store instance
|
||||||
|
// Depending on config we should open one store or other
|
||||||
|
// (Gorm, File, Git...)
|
||||||
|
store = new(model.StoreGorm)
|
||||||
err := store.Open()
|
err := store.Open()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Panicln(err)
|
log.Panicln(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Echo instance
|
||||||
e := echo.New()
|
e := echo.New()
|
||||||
|
|
||||||
|
// Routes
|
||||||
e.GET("/", WikiHome)
|
e.GET("/", WikiHome)
|
||||||
|
e.GET("/list", WikiListPages)
|
||||||
e.GET("/about", WikiAbout)
|
e.GET("/about", WikiAbout)
|
||||||
e.GET("/about/:id", WikiAbout)
|
e.GET("/about/:id", WikiAbout)
|
||||||
|
|
||||||
|
// Logger
|
||||||
e.Logger.Fatal(e.Start(":2323"))
|
e.Logger.Fatal(e.Start(":2323"))
|
||||||
}
|
}
|
||||||
|
|
||||||
func WikiHome(c echo.Context) error {
|
|
||||||
res := store.GetPage()
|
|
||||||
fmt.Println(res)
|
|
||||||
return c.String(http.StatusOK, "WikiHome")
|
|
||||||
}
|
|
||||||
|
|
||||||
func WikiAbout(c echo.Context) error {
|
|
||||||
id := c.Param("id")
|
|
||||||
return c.String(http.StatusOK, "About the wiki. id:"+id)
|
|
||||||
}
|
|
||||||
|
1
views/base.html
Normal file
1
views/base.html
Normal file
@ -0,0 +1 @@
|
|||||||
|
<h1>Wikingo</h1>
|
Loading…
Reference in New Issue
Block a user