WIP: Start adding projects
Signed-off-by: Nikolai Rodionov <allanger@badhouseplants.net>
This commit is contained in:
@@ -41,6 +41,8 @@ type AccountData struct {
|
||||
Password string
|
||||
Email string
|
||||
UUID string
|
||||
Name string
|
||||
Surname string
|
||||
}
|
||||
|
||||
// Create a new account
|
||||
@@ -59,6 +61,8 @@ func (c *AccountController) Create(ctx context.Context, data *AccountData) (stri
|
||||
UUID: data.UUID,
|
||||
Email: data.Email,
|
||||
PasswordHash: passwordHash,
|
||||
Name: data.Name,
|
||||
Surname: data.Surname,
|
||||
}
|
||||
|
||||
if err := repository.CreateAccount(ctx, c.DB, queryData); err != nil {
|
||||
|
||||
@@ -70,6 +70,8 @@ func TestIntegrationAccountCreate_Success(t *testing.T) {
|
||||
accountData := &controllers.AccountData{
|
||||
Password: "qwertyu9",
|
||||
Email: newTestUniqueEmail("accounts"),
|
||||
Surname: "Doe",
|
||||
Name: "John",
|
||||
}
|
||||
id, err := ctrl.Create(t.Context(), accountData)
|
||||
assert.NoError(t, err)
|
||||
@@ -82,6 +84,8 @@ func TestIntegrationAccountCreate_ExistingAccountErr(t *testing.T) {
|
||||
accountData := &controllers.AccountData{
|
||||
Password: "qwertyu9",
|
||||
Email: email,
|
||||
Surname: "Doe",
|
||||
Name: "John",
|
||||
}
|
||||
id, err := ctrl.Create(t.Context(), accountData)
|
||||
assert.NoError(t, err)
|
||||
|
||||
27
internal/controllers/projects.go
Normal file
27
internal/controllers/projects.go
Normal file
@@ -0,0 +1,27 @@
|
||||
package controllers
|
||||
|
||||
import "context"
|
||||
|
||||
type ProjectsController struct{}
|
||||
|
||||
type ProjectData struct{}
|
||||
|
||||
// Create a new project
|
||||
func (ctrl *ProjectsController) Create(ctx context.Context, data *ProjectData) (id string, err error) {
|
||||
return "", nil
|
||||
}
|
||||
|
||||
// Update an existing project
|
||||
func (ctrl *ProjectsController) Update(ctx context.Context, data *ProjectData) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Get an existing project by ID
|
||||
func (ctrl *ProjectsController) Get(ctx context.Context, projectID string) (data *ProjectData, err error) {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// List projects available for a user
|
||||
func (ctrl *ProjectsController) List(ctx context.Context) (data []*ProjectData, err error) {
|
||||
return nil, nil
|
||||
}
|
||||
@@ -18,13 +18,15 @@ type AccountData struct {
|
||||
UUID string
|
||||
Email string
|
||||
PasswordHash string
|
||||
Name string
|
||||
Surname string
|
||||
}
|
||||
|
||||
// CreateAccount adds a new account to a database
|
||||
func CreateAccount(ctx context.Context, db *sql.DB, account *AccountData) error {
|
||||
query := "INSERT INTO accounts (uuid, email, password_hash) VALUES ($1, $2, $3)"
|
||||
query := "INSERT INTO accounts (uuid, email, password_hash, name, surname) VALUES ($1, $2, $3, $4, $5)"
|
||||
|
||||
if _, err := db.ExecContext(ctx, query, account.UUID, account.Email, account.PasswordHash); err != nil {
|
||||
if _, err := db.ExecContext(ctx, query, account.UUID, account.Email, account.PasswordHash, account.Name, account.Surname); err != nil {
|
||||
var pgErr *pgconn.PgError
|
||||
if errors.As(err, &pgErr) {
|
||||
if pgErr.Code == pgerrcode.UniqueViolation {
|
||||
|
||||
40
internal/repository/projects.go
Normal file
40
internal/repository/projects.go
Normal file
@@ -0,0 +1,40 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
"time"
|
||||
)
|
||||
|
||||
type ProjectData struct {
|
||||
UUID string
|
||||
Name string
|
||||
Slug string
|
||||
Description string
|
||||
OwnerID string
|
||||
CreatedAt string
|
||||
ArchivedAt time.Time
|
||||
Blocked bool
|
||||
UpdatedAt time.Time
|
||||
UpdatedBy string
|
||||
}
|
||||
|
||||
// CreateProject adds a new projects to the database
|
||||
func CreateProject(ctx context.Context, db *sql.DB, data *ProjectData) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetProjectByID returns a project from the database
|
||||
func GetProjectByID(ctx context.Context, db *sql.DB, projectID string) (data *ProjectData, err error) {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// UpdateProject change editable project data
|
||||
func UpdateProject(ctx context.Context, db *sql.DB, data *ProjectData) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// ListProjects get all projects that are available for the user from the database
|
||||
func ListProjects(ctx context.Context, db *sql.DB) ([]*ProjectData, error) {
|
||||
return nil, nil
|
||||
}
|
||||
Reference in New Issue
Block a user