HW12 изменил структуру проекта на более привычную

pull/13/head
Andrey Ivanov 2020-09-01 15:52:51 +03:00 committed by Andrey Ivanov
parent 5c07ac5193
commit 195c5ec84a
10 changed files with 66 additions and 68 deletions

View File

@ -1,11 +1,11 @@
[logger] [Logger]
file = "./calendar.log" File = "./calendar.log"
level = "INFO" Level = "INFO"
[storage] [Storage]
in_memory = false inMemory = false
sql_host = "localhost" SQLHost = "localhost"
sql_port = "5432" SQLPort = "5432"
sql_dbase = "calendar" SQLDbase = "calendar"
sql_user = "calendar" SQLUser = "calendar"
sql_pass = "12345678" SQLPass = "12345678"

View File

@ -1,9 +1,10 @@
package config package config
import ( import (
"github.com/BurntSushi/toml"
"io/ioutil" "io/ioutil"
"os" "os"
"github.com/BurntSushi/toml"
) )
type Config struct { type Config struct {
@ -13,16 +14,16 @@ type Config struct {
MuteStdout bool MuteStdout bool
} }
Storage struct { Storage struct {
In_memory bool InMemory bool
Sql_host string SQLHost string
Sql_port string SQLPort string
Sql_dbase string SQLDbase string
Sql_user string SQLUser string
Sql_pass string SQLPass string
} }
} }
// Confita может быти и хороша, но она не возвращает ошибки, если не может распарсить файл в структуру. Мне не нравится такая "молчаливость" // Confita может быти и хороша, но она не возвращает ошибки, если не может распарсить файл в структуру. Мне не нравится такая "молчаливость".
func NewConfig(configFile string) (Config, error) { func NewConfig(configFile string) (Config, error) {
f, err := os.Open(configFile) f, err := os.Open(configFile)
if err != nil { if err != nil {

View File

@ -32,8 +32,8 @@ V`)
} }
defer os.Remove(goodfile.Name()) defer os.Remove(goodfile.Name())
goodfile.WriteString(`[storage] goodfile.WriteString(`[storage]
in_memory = true inMemory = true
sql_host = "localhost"`) SQLHost = "localhost"`)
goodfile.Sync() goodfile.Sync()
t.Run("No such file", func(t *testing.T) { t.Run("No such file", func(t *testing.T) {
@ -50,8 +50,8 @@ sql_host = "localhost"`)
t.Run("TOML reading", func(t *testing.T) { t.Run("TOML reading", func(t *testing.T) {
c, e := NewConfig(goodfile.Name()) c, e := NewConfig(goodfile.Name())
require.Equal(t, true, c.Storage.In_memory) require.Equal(t, true, c.Storage.InMemory)
require.Equal(t, "localhost", c.Storage.Sql_host) require.Equal(t, "localhost", c.Storage.SQLHost)
require.NoError(t, e) require.NoError(t, e)
}) })

View File

@ -2,19 +2,20 @@ package logger
import ( import (
"errors" "errors"
amitralog "github.com/amitrai48/logger"
"github.com/tiburon-777/HW_OTUS/hw12_13_14_15_calendar/src/config"
"log" "log"
"os" "os"
"strings" "strings"
amitralog "github.com/amitrai48/logger"
"github.com/tiburon-777/HW_OTUS/hw12_13_14_15_calendar/src/config"
) )
type Logger interface { type Logger interface {
Debug(msg string) Debugf(format string, args ...interface{})
Info(msg string) Infof(format string, args ...interface{})
Warn(msg string) Warnf(format string, args ...interface{})
Error(msg string) Errorf(format string, args ...interface{})
Fatal(msg string) Fatalf(format string, args ...interface{})
} }
type Log struct { type Log struct {
@ -22,7 +23,6 @@ type Log struct {
} }
func New(conf config.Config) (Log, error) { func New(conf config.Config) (Log, error) {
if conf.Logger.File == "" || !validLevel(conf.Logger.Level) { if conf.Logger.File == "" || !validLevel(conf.Logger.Level) {
return Log{}, errors.New("invalid logger config") return Log{}, errors.New("invalid logger config")
} }
@ -44,23 +44,23 @@ func New(conf config.Config) (Log, error) {
return Log{Logger: l}, nil return Log{Logger: l}, nil
} }
func (l Log) Debug(format string, args ...interface{}) { func (l Log) Debugf(format string, args ...interface{}) {
l.Logger.Debugf(format, args) l.Logger.Debugf(format, args)
} }
func (l *Log) Info(format string, args ...interface{}) { func (l *Log) Infof(format string, args ...interface{}) {
l.Logger.Infof(format, args) l.Logger.Infof(format, args)
} }
func (l *Log) Warn(format string, args ...interface{}) { func (l *Log) Warnf(format string, args ...interface{}) {
l.Logger.Warnf(format, args) l.Logger.Warnf(format, args)
} }
func (l *Log) Error(format string, args ...interface{}) { func (l *Log) Errorf(format string, args ...interface{}) {
l.Logger.Errorf(format, args) l.Logger.Errorf(format, args)
} }
func (l *Log) Fatal(format string, args ...interface{}) { func (l *Log) Fatalf(format string, args ...interface{}) {
l.Logger.Fatalf(format, args) l.Logger.Fatalf(format, args)
os.Exit(2) os.Exit(2)
} }

View File

@ -28,8 +28,8 @@ func TestLoggerLogic(t *testing.T) {
} }
t.Run("Messages arround the level", func(t *testing.T) { t.Run("Messages arround the level", func(t *testing.T) {
log.Debug("debug message") log.Debugf("debug message")
log.Error("error message") log.Errorf("error message")
res, err := ioutil.ReadAll(tmpfile) res, err := ioutil.ReadAll(tmpfile)
if err != nil { if err != nil {

View File

@ -2,14 +2,15 @@ package main
import ( import (
"flag" "flag"
oslog "log"
"os"
"os/signal"
"github.com/tiburon-777/HW_OTUS/hw12_13_14_15_calendar/src/app" "github.com/tiburon-777/HW_OTUS/hw12_13_14_15_calendar/src/app"
"github.com/tiburon-777/HW_OTUS/hw12_13_14_15_calendar/src/config" "github.com/tiburon-777/HW_OTUS/hw12_13_14_15_calendar/src/config"
"github.com/tiburon-777/HW_OTUS/hw12_13_14_15_calendar/src/logger" "github.com/tiburon-777/HW_OTUS/hw12_13_14_15_calendar/src/logger"
internalhttp "github.com/tiburon-777/HW_OTUS/hw12_13_14_15_calendar/src/server/http" internalhttp "github.com/tiburon-777/HW_OTUS/hw12_13_14_15_calendar/src/server/http"
store "github.com/tiburon-777/HW_OTUS/hw12_13_14_15_calendar/src/storage" store "github.com/tiburon-777/HW_OTUS/hw12_13_14_15_calendar/src/storage"
oslog "log"
"os"
"os/signal"
) )
var configFile string var configFile string
@ -47,12 +48,12 @@ func main() {
signal.Stop(signals) signal.Stop(signals)
if err := server.Stop(); err != nil { if err := server.Stop(); err != nil {
log.Error("failed to stop http server: " + err.Error()) log.Errorf("failed to stop http server: " + err.Error())
} }
}() }()
if err := server.Start(); err != nil { if err := server.Start(); err != nil {
log.Error("failed to start http server: " + err.Error()) log.Errorf("failed to start http server: " + err.Error())
os.Exit(1) os.Exit(1)
} }
} }

View File

@ -1,11 +1,7 @@
package internalhttp package internalhttp
import ( //func loggingMiddleware(next http.Handler) http.Handler {
"net/http" // return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
)
func loggingMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
// TODO // TODO
}) // })
} //}

View File

@ -2,34 +2,33 @@ package memorystorage
import ( import (
"github.com/tiburon-777/HW_OTUS/hw12_13_14_15_calendar/src/storage/event" "github.com/tiburon-777/HW_OTUS/hw12_13_14_15_calendar/src/storage/event"
"sync"
) )
type Storage struct { type Storage struct {
events []event.Event //events []event.Event
mu sync.RWMutex //mu sync.RWMutex
} }
func New() *Storage { func New() *Storage {
return &Storage{} return &Storage{}
} }
func (s Storage) Save(event event.Event) error { func (s *Storage) Save(event event.Event) error {
return nil return nil
} }
func (s Storage) Update(event event.Event) error { func (s *Storage) Update(event event.Event) error {
return nil return nil
} }
func (s Storage) Delete(event event.Event) error { func (s *Storage) Delete(event event.Event) error {
return nil return nil
} }
func (s Storage) List() []event.Event { func (s *Storage) List() []event.Event {
return []event.Event{} return []event.Event{}
} }
func (s Storage) Get(id string) (event.Event, bool) { func (s *Storage) Get(id string) (event.Event, bool) {
return event.Event{}, false return event.Event{}, false
} }

View File

@ -2,8 +2,9 @@ package sqlstorage
import ( import (
"context" "context"
"github.com/tiburon-777/HW_OTUS/hw12_13_14_15_calendar/src/storage/event"
"sync" "sync"
"github.com/tiburon-777/HW_OTUS/hw12_13_14_15_calendar/src/storage/event"
) )
type Storage struct { type Storage struct {
@ -25,7 +26,7 @@ func (s *Storage) Close(ctx context.Context) error {
return nil return nil
} }
func (s Storage) Save(e event.Event) error { func (s *Storage) Save(e event.Event) error {
if _, ok := s.Get(e.ID); !ok { if _, ok := s.Get(e.ID); !ok {
s.Mu.Lock() s.Mu.Lock()
s.Events = append(s.Events, e) s.Events = append(s.Events, e)
@ -34,18 +35,18 @@ func (s Storage) Save(e event.Event) error {
return nil return nil
} }
func (s Storage) Update(event event.Event) error { func (s *Storage) Update(event event.Event) error {
return nil return nil
} }
func (s Storage) Delete(event event.Event) error { func (s *Storage) Delete(event event.Event) error {
return nil return nil
} }
func (s Storage) List() []event.Event { func (s *Storage) List() []event.Event {
return []event.Event{} return []event.Event{}
} }
func (s Storage) Get(id string) (event.Event, bool) { func (s *Storage) Get(id string) (event.Event, bool) {
return event.Event{}, false return event.Event{}, false
} }

View File

@ -7,7 +7,7 @@ import (
sqlstorage "github.com/tiburon-777/HW_OTUS/hw12_13_14_15_calendar/src/storage/sql" sqlstorage "github.com/tiburon-777/HW_OTUS/hw12_13_14_15_calendar/src/storage/sql"
) )
type StoreInterface interface { type Interface interface {
Save(event event.Event) error Save(event event.Event) error
Update(event event.Event) error Update(event event.Event) error
Delete(event event.Event) error Delete(event event.Event) error
@ -15,8 +15,8 @@ type StoreInterface interface {
Get(id string) (event.Event, bool) Get(id string) (event.Event, bool)
} }
func NewStore(config config.Config) StoreInterface { func NewStore(config config.Config) Interface {
if config.Storage.In_memory { if config.Storage.InMemory {
st := memorystorage.New() st := memorystorage.New()
return st return st
} }