clean: first clean archi sandbox implementation

This commit is contained in:
Florian Sylvain
2023-08-05 14:37:53 +02:00
parent 4187f0b2e2
commit 5b4b5a8622
13 changed files with 302 additions and 1 deletions
@@ -0,0 +1,48 @@
package gateways
import (
"GohCMS2/db"
. "GohCMS2/domain/article"
. "GohCMS2/domain/gateways"
"context"
)
type ArticleRepository struct {
client *db.PrismaClient
}
func NewArticleRepository() *ArticleRepository {
a := ArticleRepository{
client: db.NewClient(),
}
return &a
}
func (a *ArticleRepository) Get(id int) Article {
a.client.Connect()
defer a.client.Disconnect()
article, err := a.client.Article.FindUnique(db.Article.ID.Equals(id)).Exec(context.Background())
if err != nil {
panic(err)
}
return FromDb(article.ID, article.Title, article.Body, article.CreatedAt.String(), article.UpdatedAt.String())
}
func (a *ArticleRepository) Create(article Article) Article {
a.client.Connect()
defer a.client.Disconnect()
articleDb, err := a.client.Article.CreateOne(
db.Article.Title.Set(article.Title),
db.Article.Body.Set(article.Body),
).Exec(context.Background())
if err != nil {
panic(err)
}
return FromDb(articleDb.ID, articleDb.Title, articleDb.Body, articleDb.CreatedAt.String(), articleDb.UpdatedAt.String())
}
var _ IArticleRepository = &ArticleRepository{}