feat: move language storage to array from postgres
This commit is contained in:
parent
a8ba5677d3
commit
02a7a49ac3
4 changed files with 23 additions and 93 deletions
|
@ -1,12 +1,13 @@
|
|||
package models
|
||||
|
||||
import "time"
|
||||
|
||||
type Language struct {
|
||||
Id *int32 `db:"id"`
|
||||
Name *string `db:"name"`
|
||||
BuildFileHash *string `db:"build_file_hash"`
|
||||
ExecuteFileHash *string `db:"execute_file_hash"`
|
||||
CreatedAt *time.Time `db:"created_at"`
|
||||
UpdatedAt *time.Time `db:"updated_at"`
|
||||
Name string
|
||||
CompileCmd []string //source: src;result:executable
|
||||
RunCmd []string //source: executable
|
||||
}
|
||||
|
||||
var languages = [...]Language {
|
||||
{Name : "gcc std=c90",
|
||||
CompileCmd : []string{"gcc", "src","-std=c90","-o","executable"},
|
||||
RunCmd : []string{"executable"}},
|
||||
}
|
||||
|
|
|
@ -6,10 +6,7 @@ import (
|
|||
)
|
||||
|
||||
type LanguageStorage interface {
|
||||
CreateLanguage(ctx context.Context, language *models.Language) (int32, error)
|
||||
ReadLanguageById(ctx context.Context, id int32) (*models.Language, error)
|
||||
UpdateLanguage(ctx context.Context, language *models.Language) error
|
||||
DeleteLanguage(ctx context.Context, id int32) error
|
||||
}
|
||||
|
||||
type LanguageService struct {
|
||||
|
@ -24,26 +21,8 @@ func NewLanguageService(
|
|||
}
|
||||
}
|
||||
|
||||
func (service *LanguageService) CreateLanguage(ctx context.Context, language *models.Language) (int32, error) {
|
||||
//userId := ctx.Value("user_id").(int32)
|
||||
panic("access control is not implemented yet")
|
||||
return service.languageStorage.CreateLanguage(ctx, language)
|
||||
}
|
||||
|
||||
func (service *LanguageService) ReadLanguageById(ctx context.Context, id int32) (*models.Language, error) {
|
||||
//userId := ctx.Value("user_id").(int32)
|
||||
panic("access control is not implemented yet")
|
||||
return service.languageStorage.ReadLanguageById(ctx, id)
|
||||
}
|
||||
|
||||
func (service *LanguageService) UpdateLanguage(ctx context.Context, language *models.Language) error {
|
||||
//userId := ctx.Value("user_id").(int32)
|
||||
panic("access control is not implemented yet")
|
||||
return service.languageStorage.UpdateLanguage(ctx, language)
|
||||
}
|
||||
|
||||
func (service *LanguageService) DeleteLanguage(ctx context.Context, id int32) error {
|
||||
//userId := ctx.Value("user_id").(int32)
|
||||
panic("access control is not implemented yet")
|
||||
return service.languageStorage.DeleteLanguage(ctx, id)
|
||||
}
|
||||
|
|
|
@ -19,36 +19,6 @@ func NewLanguageStorage(db *sqlx.DB, logger *zap.Logger) *LanguageStorage {
|
|||
}
|
||||
}
|
||||
|
||||
func (storage *LanguageStorage) CreateLanguage(ctx context.Context, language *models.Language) (int32, error) {
|
||||
query := storage.db.Rebind(`
|
||||
INSERT INTO languages
|
||||
(name,build_file_hash,execute_file_hash)
|
||||
VALUES (?, ?, ?)
|
||||
RETURNING id
|
||||
`)
|
||||
|
||||
rows, err := storage.db.QueryxContext(
|
||||
ctx,
|
||||
query,
|
||||
language.Name,
|
||||
"", //FIXME
|
||||
"",
|
||||
)
|
||||
if err != nil {
|
||||
return 0, handlePgErr(err)
|
||||
}
|
||||
|
||||
defer rows.Close()
|
||||
var id int32
|
||||
err = rows.StructScan(&id)
|
||||
if err != nil {
|
||||
return 0, handlePgErr(err)
|
||||
}
|
||||
|
||||
return id, nil
|
||||
|
||||
}
|
||||
|
||||
func (storage *LanguageStorage) ReadLanguageById(ctx context.Context, id int32) (*models.Language, error) {
|
||||
var language models.Language
|
||||
query := storage.db.Rebind("SELECT * from languages WHERE id=? LIMIT 1")
|
||||
|
@ -58,23 +28,3 @@ func (storage *LanguageStorage) ReadLanguageById(ctx context.Context, id int32)
|
|||
}
|
||||
return &language, nil
|
||||
}
|
||||
|
||||
func (storage *LanguageStorage) UpdateLanguage(ctx context.Context, id int32, language models.Language) error {
|
||||
query := storage.db.Rebind("UPDATE languages SET name=?") //FIXME add build file and execute file loading
|
||||
_, err := storage.db.ExecContext(ctx, query, language.Name)
|
||||
if err != nil {
|
||||
return handlePgErr(err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (storage *LanguageStorage) DeleteLanguage(ctx context.Context, id int32) error {
|
||||
query := storage.db.Rebind("DELETE FROM languages WHERE id=?")
|
||||
_, err := storage.db.ExecContext(ctx, query, id)
|
||||
if err != nil {
|
||||
return handlePgErr(err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue