package controller import ( "context" "fmt" "ticket-pimp/internal/domain" "ticket-pimp/internal/storage/db" "github.com/jackc/pgx/v5" "github.com/jackc/pgx/v5/pgtype" ) func (wc *WorkflowController) Get(ctx context.Context) (*domain.ApplicationConfig, error) { c, err := wc.q.GetConfig(ctx) return &domain.ApplicationConfig{ Key: c.TicketKey.String, ID: int(c.TicketID.Int32), }, err } func (wc *WorkflowController) NewKey(ctx context.Context) (*domain.ApplicationConfig, error) { c, err := wc.q.SetNewConfig(ctx) return &domain.ApplicationConfig{ Key: c.TicketKey.String, ID: int(c.TicketID.Int32), }, err } func (wc *WorkflowController) ProjectCreate(ctx context.Context, project domain.Project) (*domain.Project, error) { tx, err := wc.pool.Begin(ctx) if err != nil { return nil, err } defer tx.Rollback(ctx) qtx := wc.q.WithTx(tx) appconfig, err := qtx.SetNewConfig(ctx) if err != nil { return nil, err } project.ShortName = fmt.Sprintf( "%s-%d", appconfig.TicketKey.String, appconfig.TicketID.Int32, ) project.ID = string(appconfig.TicketID.Int32) projectRow, err := qtx.CreateTicket(ctx, db.CreateTicketParams{ Key: pgtype.Text{String: project.ShortName, Valid: true}, Channelid: pgtype.Text{String: project.ChannelID, Valid: true}, }) if err != nil { tx.Rollback(ctx) return nil, err } else { tx.Commit(ctx) fmt.Println(projectRow) } return &project, nil } func (wc *WorkflowController) GetProjectByChannelID(ctx context.Context, id string) (*domain.Project, error) { var proj domain.Project dbTicket, err := wc.q.GetTicketByChannelID(ctx, pgtype.Text{String: id, Valid: true}) if err != nil { if err == pgx.ErrNoRows { return nil, nil } return nil, err } else { proj = domain.Project{ ID: string(dbTicket.ID), ShortName: dbTicket.Key.String, Name: dbTicket.Key.String, ChannelID: dbTicket.Channelid.String, ProjectGit: dbTicket.ProjectGit.String, BuildGit: dbTicket.BuildGit.String, Cloud: dbTicket.Folder.String, } } return &proj, nil }