Language Stack fertig gestellt und dokumentiert
This commit is contained in:
@@ -4,11 +4,13 @@ import (
|
||||
"database/sql"
|
||||
"net/http"
|
||||
"scpq-editor-server/models"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type LanguagesRepository struct {
|
||||
dbHandler *sql.DB
|
||||
dbHandler *sql.DB
|
||||
}
|
||||
|
||||
func NewLanguagesRepository(dbHandler *sql.DB) *LanguagesRepository {
|
||||
return &LanguagesRepository{
|
||||
dbHandler: dbHandler,
|
||||
@@ -16,23 +18,23 @@ func NewLanguagesRepository(dbHandler *sql.DB) *LanguagesRepository {
|
||||
}
|
||||
|
||||
func (rr LanguagesRepository) CreateLanguage(language *models.Language) (*models.Language, *models.ResponseError) {
|
||||
query:=`INSERT INTO languages(locale, language) VALUES($1,$2) RETURNING id`
|
||||
query := `INSERT INTO languages(locale, language) VALUES($1,$2) RETURNING id`
|
||||
rows, err := rr.dbHandler.Query(query, language.Locale, language.Language)
|
||||
if err != nil {
|
||||
return nil, &models.ResponseError{
|
||||
Message: err.Error(),
|
||||
Status: http.StatusInternalServerError,
|
||||
return nil, &models.ResponseError{
|
||||
Message: err.Error(),
|
||||
Status: http.StatusInternalServerError,
|
||||
}
|
||||
}
|
||||
|
||||
defer rows.Close()
|
||||
var languageId int
|
||||
var idstr string
|
||||
for rows.Next() {
|
||||
err := rows.Scan(languageId)
|
||||
err := rows.Scan(&idstr)
|
||||
if err != nil {
|
||||
return nil, &models.ResponseError{
|
||||
Message: err.Error(),
|
||||
Status: http.StatusInternalServerError,
|
||||
return nil, &models.ResponseError{
|
||||
Message: err.Error(),
|
||||
Status: http.StatusInternalServerError,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -42,59 +44,145 @@ func (rr LanguagesRepository) CreateLanguage(language *models.Language) (*models
|
||||
Status: http.StatusInternalServerError,
|
||||
}
|
||||
}
|
||||
languageId, err := strconv.Atoi(idstr)
|
||||
if err != nil {
|
||||
return nil, &models.ResponseError{
|
||||
Message: "language id not int",
|
||||
Status: http.StatusInternalServerError,
|
||||
}
|
||||
}
|
||||
|
||||
return &models.Language{
|
||||
ID: languageId,
|
||||
Locale: language.Locale,
|
||||
Language: language.Language,
|
||||
ID: languageId,
|
||||
Locale: language.Locale,
|
||||
Language: language.Language,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (rr LanguagesRepository) UpdateLanguage(language *models.Language) *models.ResponseError {
|
||||
return &models.ResponseError{
|
||||
Message: "UpdateLanguage not yet implementet",
|
||||
Status: http.StatusInternalServerError,
|
||||
query := `UPDATE languages SET locale=$1, language=$2 WHERE id=$3`
|
||||
res, err := rr.dbHandler.Exec(query, language.Locale, language.Language, language.ID)
|
||||
if err != nil {
|
||||
return &models.ResponseError{
|
||||
Message: err.Error(),
|
||||
Status: http.StatusInternalServerError,
|
||||
}
|
||||
}
|
||||
|
||||
rowsAffeced, err := res.RowsAffected()
|
||||
if err != nil {
|
||||
return &models.ResponseError{
|
||||
Message: err.Error(),
|
||||
Status: http.StatusInternalServerError,
|
||||
}
|
||||
}
|
||||
if rowsAffeced == 0 {
|
||||
return &models.ResponseError{
|
||||
Message: "No language found with the given id",
|
||||
Status: http.StatusNotFound,
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (rr LanguagesRepository) DeleteLanguage(languageId int) *models.ResponseError {
|
||||
return &models.ResponseError{
|
||||
Message: "UpdateLanguage not yet implementet",
|
||||
Status: http.StatusInternalServerError,
|
||||
query := `DELETE FROM languages WHERE id=$1`
|
||||
res, err := rr.dbHandler.Exec(query, languageId)
|
||||
if err != nil {
|
||||
return &models.ResponseError{
|
||||
Message: err.Error(),
|
||||
Status: http.StatusInternalServerError,
|
||||
}
|
||||
}
|
||||
|
||||
rowsAffeced, err := res.RowsAffected()
|
||||
if err != nil {
|
||||
return &models.ResponseError{
|
||||
Message: err.Error(),
|
||||
Status: http.StatusInternalServerError,
|
||||
}
|
||||
}
|
||||
if rowsAffeced == 0 {
|
||||
return &models.ResponseError{
|
||||
Message: "No language found with the given id",
|
||||
Status: http.StatusNotFound,
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (rr LanguagesRepository) GetLanguage(languageId int) (*models.Language, *models.ResponseError) {
|
||||
return nil, &models.ResponseError{
|
||||
Message: "UpdateLanguage not yet implementet",
|
||||
Status: http.StatusInternalServerError,
|
||||
query := `SELECT id, locale, language FROM languages WHERE id=$1`
|
||||
rows, err := rr.dbHandler.Query(query, languageId)
|
||||
if err != nil {
|
||||
return nil, &models.ResponseError{
|
||||
Message: err.Error(),
|
||||
Status: http.StatusInternalServerError,
|
||||
}
|
||||
}
|
||||
|
||||
defer rows.Close()
|
||||
var idstr, locale, language string
|
||||
for rows.Next() {
|
||||
err := rows.Scan(&idstr, &locale, &language)
|
||||
if err != nil {
|
||||
return nil, &models.ResponseError{
|
||||
Message: err.Error(),
|
||||
Status: http.StatusInternalServerError,
|
||||
}
|
||||
}
|
||||
}
|
||||
if rows.Err() != nil {
|
||||
return nil, &models.ResponseError{
|
||||
Message: err.Error(),
|
||||
Status: http.StatusInternalServerError,
|
||||
}
|
||||
}
|
||||
if err != nil {
|
||||
return nil, &models.ResponseError{
|
||||
Message: "language id not int",
|
||||
Status: http.StatusInternalServerError,
|
||||
}
|
||||
}
|
||||
|
||||
return &models.Language{
|
||||
ID: languageId,
|
||||
Locale: locale,
|
||||
Language: language,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (rr LanguagesRepository) GetAllLanguages()([]*models.Language, *models.ResponseError) {
|
||||
query:="SELECT * FROM languages"
|
||||
func (rr LanguagesRepository) GetAllLanguages() ([]*models.Language, *models.ResponseError) {
|
||||
query := "SELECT id, locale, language FROM languages"
|
||||
rows, err := rr.dbHandler.Query(query)
|
||||
if err != nil {
|
||||
return nil, &models.ResponseError{
|
||||
Message: err.Error(),
|
||||
Status: http.StatusInternalServerError,
|
||||
return nil, &models.ResponseError{
|
||||
Message: err.Error(),
|
||||
Status: http.StatusInternalServerError,
|
||||
}
|
||||
}
|
||||
|
||||
defer rows.Close()
|
||||
languages := make([]*models.Language, 0)
|
||||
var id int
|
||||
var locale, language string
|
||||
var idstr, locale, language string
|
||||
for rows.Next() {
|
||||
err := rows.Scan(id, locale, language)
|
||||
err := rows.Scan(&idstr, &locale, &language)
|
||||
if err != nil {
|
||||
return nil, &models.ResponseError{
|
||||
Message: err.Error(),
|
||||
Status: http.StatusInternalServerError,
|
||||
return nil, &models.ResponseError{
|
||||
Message: err.Error(),
|
||||
Status: http.StatusInternalServerError,
|
||||
}
|
||||
}
|
||||
language := &models.Language {
|
||||
ID: id,
|
||||
Locale: locale,
|
||||
Language: language,
|
||||
id, err := strconv.Atoi(idstr)
|
||||
if err != nil {
|
||||
return nil, &models.ResponseError{
|
||||
Message: "language id not int",
|
||||
Status: http.StatusInternalServerError,
|
||||
}
|
||||
}
|
||||
language := &models.Language{
|
||||
ID: id,
|
||||
Locale: locale,
|
||||
Language: language,
|
||||
}
|
||||
languages = append(languages, language)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user