WIP: Start adding projects

Signed-off-by: Nikolai Rodionov <allanger@badhouseplants.net>
This commit is contained in:
2026-05-18 22:15:28 +02:00
committed by Nikolai Rodionov
parent 34d44cf1de
commit f04f5b923f
13 changed files with 153 additions and 2 deletions

View File

@@ -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 {

View File

@@ -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)

View 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
}

View File

@@ -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 {

View 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
}