Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
57e5162
Merge branch 'master' of github.com:go-vela/server
jbrockopp Feb 23, 2022
b6b840c
Merge branch 'master' of github.com:go-vela/server
jbrockopp Mar 10, 2022
858c818
Merge branch 'master' of github.com:go-vela/server
jbrockopp Mar 16, 2022
ceddb11
Merge branch 'master' of github.com:go-vela/server
jbrockopp Mar 28, 2022
331b2a2
Merge branch 'master' of github.com:go-vela/server
jbrockopp Apr 11, 2022
c4ec5fb
Merge branches 'master' and 'master' of github.com:go-vela/server
jbrockopp Apr 18, 2022
30c1151
Merge branch 'master' of github.com:go-vela/server
jbrockopp Apr 20, 2022
0ddc31c
Merge branch 'master' of github.com:go-vela/server
jbrockopp Apr 27, 2022
890f9fa
Merge branch 'master' of github.com:go-vela/server
jbrockopp May 9, 2022
cf4ca0e
Merge branch 'master' of github.com:go-vela/server
jbrockopp May 20, 2022
175e5c5
Merge branch 'master' of github.com:go-vela/server
jbrockopp May 31, 2022
1728dce
Merge branch 'master' of github.com:go-vela/server
jbrockopp Jun 12, 2022
88d3974
Merge branch 'master' of github.com:go-vela/server
jbrockopp Jun 22, 2022
de5ac75
feat(database): add user engine
jbrockopp Jun 22, 2022
8f2fce6
chore(database): remove old user logic
jbrockopp Jun 22, 2022
736a0e9
refactor(database): restructure DDL functions
jbrockopp Jun 22, 2022
c28ca23
chore: updates for database user engine
jbrockopp Jun 22, 2022
a4d8bbc
Merge branch 'master' of github.com:go-vela/server
jbrockopp Jun 26, 2022
c719ab0
Merge branch 'refactor/database/user' of github.com:go-vela/server in…
jbrockopp Jun 26, 2022
a147ce8
feat(database): add repo engine
jbrockopp Jun 27, 2022
b7e267f
Merge branch 'master' of github.com:go-vela/server into refactor/data…
jbrockopp Aug 20, 2022
ff5b8e1
chore: save work
jbrockopp Aug 27, 2022
ef70014
Merge branch 'master' of github.com:go-vela/server
jbrockopp Aug 27, 2022
ca230da
Merge branch 'master' of github.com:go-vela/server into refactor/data…
jbrockopp Aug 27, 2022
ab2f213
fix: Scan() -> Take()
jbrockopp Aug 27, 2022
68cf328
fix: sort by for listing repos
jbrockopp Sep 10, 2022
55862b2
Merge branch 'master' into refactor/database/repo
jbrockopp Sep 10, 2022
443c5d0
Merge branches 'master' and 'master' of github.com:go-vela/server
jbrockopp Sep 11, 2022
a47cf36
Merge branch 'refactor/database/repo' of github.com:go-vela/server in…
jbrockopp Sep 11, 2022
8e628be
feat(database): add worker engine
jbrockopp Sep 11, 2022
a827790
chore(database): remove old worker logic
jbrockopp Sep 11, 2022
a960f5d
chore: updates for database worker engine
jbrockopp Sep 11, 2022
3b7918f
Merge branch 'main' into refactor/database/worker
jbrockopp Sep 30, 2022
535b2bb
Merge branch 'refactor/database/worker' of github.com:go-vela/server …
jbrockopp Sep 30, 2022
acad4fd
fix: issues from merge conflict
jbrockopp Sep 30, 2022
72bc1f1
Merge branch 'main' into refactor/database/worker
jbrockopp Sep 30, 2022
3745fdf
Merge branch 'refactor/database/worker' of github.com:go-vela/server …
jbrockopp Sep 30, 2022
6fcc762
chore: address linter feedback
jbrockopp Sep 30, 2022
57206f9
chore: address linter feedback v2
jbrockopp Sep 30, 2022
af3cf83
Merge branch 'main' into refactor/database/worker
jbrockopp Oct 5, 2022
6cf8508
Merge branch 'main' into refactor/database/worker
jbrockopp Oct 7, 2022
b5254d7
Merge branch 'refactor/database/worker' of github.com:go-vela/server …
jbrockopp Oct 7, 2022
0648d24
Merge branch 'main' into refactor/database/worker
jbrockopp Oct 7, 2022
4ac392a
Merge branch 'refactor/database/worker' of github.com:go-vela/server …
jbrockopp Oct 7, 2022
a7994ec
Merge branch 'main' into refactor/database/worker
jbrockopp Oct 7, 2022
7c2b5b7
Merge branch 'refactor/database/worker' of github.com:go-vela/server …
jbrockopp Oct 7, 2022
c4d188d
Merge branch 'refactor/database/worker' of github.com:go-vela/server …
jbrockopp Oct 7, 2022
1171ce1
feat(database): add hook engine
jbrockopp Oct 7, 2022
286e06e
chore: remove Limit(1) with Take()
jbrockopp Oct 7, 2022
a28899c
Merge branch 'refactor/database/worker' of github.com:go-vela/server …
jbrockopp Oct 7, 2022
d9d2749
chore(database): remove old hook logic
jbrockopp Oct 7, 2022
6086c0a
chore: updates for database hook engine
jbrockopp Oct 7, 2022
7991f03
refactor(database/worker): name of index
jbrockopp Oct 8, 2022
5b90666
Merge branch 'refactor/database/worker' of github.com:go-vela/server …
jbrockopp Oct 8, 2022
5bec8fa
Merge branch 'main' of github.com:go-vela/server into refactor/databa…
jbrockopp Dec 21, 2022
c79fef5
chore: address linter feedback
jbrockopp Dec 21, 2022
7444050
fix: unintended changes
jbrockopp Dec 21, 2022
6b87304
chore: update tests for unintended changes
jbrockopp Dec 21, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
refactor(database): restructure DDL functions
  • Loading branch information
jbrockopp committed Jun 22, 2022
commit 736a0e973355383e17f1885d66351e9a1f38adde
4 changes: 2 additions & 2 deletions database/pipeline/index.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ ON pipelines (repo_id);
`
)

// CreateIndexes creates the indexes for the pipelines table in the database.
func (e *engine) CreateIndexes() error {
// CreatePipelineIndexes creates the indexes for the pipelines table in the database.
func (e *engine) CreatePipelineIndexes() error {
e.logger.Tracef("creating indexes for pipelines table in the database")

// create the repo_id column index for the pipelines table
Expand Down
8 changes: 4 additions & 4 deletions database/pipeline/index_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import (
"github.com/DATA-DOG/go-sqlmock"
)

func TestPipeline_Engine_CreateIndexes(t *testing.T) {
func TestPipeline_Engine_CreatePipelineIndexes(t *testing.T) {
// setup types
_postgres, _mock := testPostgres(t)
defer func() { _sql, _ := _postgres.client.DB(); _sql.Close() }()
Expand Down Expand Up @@ -41,18 +41,18 @@ func TestPipeline_Engine_CreateIndexes(t *testing.T) {
// run tests
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
err := test.database.CreateIndexes()
err := test.database.CreatePipelineIndexes()

if test.failure {
if err == nil {
t.Errorf("CreateIndexes for %s should have returned err", test.name)
t.Errorf("CreatePipelineIndexes for %s should have returned err", test.name)
}

return
}

if err != nil {
t.Errorf("CreateIndexes for %s returned err: %v", test.name, err)
t.Errorf("CreatePipelineIndexes for %s returned err: %v", test.name, err)
}
})
}
Expand Down
4 changes: 2 additions & 2 deletions database/pipeline/pipeline.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,13 +67,13 @@ func New(opts ...EngineOpt) (*engine, error) {
}

// create the pipelines table
err := e.CreateTable(e.client.Config.Dialector.Name())
err := e.CreatePipelineTable(e.client.Config.Dialector.Name())
if err != nil {
return nil, fmt.Errorf("unable to create %s table: %w", constants.TablePipeline, err)
}

// create the indexes for the pipelines table
err = e.CreateIndexes()
err = e.CreatePipelineIndexes()
if err != nil {
return nil, fmt.Errorf("unable to create indexes for %s table: %w", constants.TablePipeline, err)
}
Expand Down
8 changes: 4 additions & 4 deletions database/pipeline/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@ type PipelineService interface {
//
// https://en.wikipedia.org/wiki/Data_definition_language

// CreateIndexes creates the indexes for the pipelines table.
CreateIndexes() error
// CreateTable defines a function that creates the pipelines table.
CreateTable(string) error
// CreatePipelineIndexes defines a function that creates the indexes for the pipelines table.
CreatePipelineIndexes() error
// CreatePipelineTable defines a function that creates the pipelines table.
CreatePipelineTable(string) error

// Pipeline Data Manipulation Language Functions
//
Expand Down
4 changes: 2 additions & 2 deletions database/pipeline/table.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,8 @@ pipelines (
`
)

// CreateTable creates the pipelines table in the database.
func (e *engine) CreateTable(driver string) error {
// CreatePipelineTable creates the pipelines table in the database.
func (e *engine) CreatePipelineTable(driver string) error {
e.logger.Tracef("creating pipelines table in the database")

// handle the driver provided to create the table
Expand Down
8 changes: 4 additions & 4 deletions database/pipeline/table_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import (
"github.com/DATA-DOG/go-sqlmock"
)

func TestPipeline_Engine_CreateTable(t *testing.T) {
func TestPipeline_Engine_CreatePipelineTable(t *testing.T) {
// setup types
_postgres, _mock := testPostgres(t)
defer func() { _sql, _ := _postgres.client.DB(); _sql.Close() }()
Expand Down Expand Up @@ -41,18 +41,18 @@ func TestPipeline_Engine_CreateTable(t *testing.T) {
// run tests
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
err := test.database.CreateTable(test.name)
err := test.database.CreatePipelineTable(test.name)

if test.failure {
if err == nil {
t.Errorf("CreateTable for %s should have returned err", test.name)
t.Errorf("CreatePipelineTable for %s should have returned err", test.name)
}

return
}

if err != nil {
t.Errorf("CreateTable for %s returned err: %v", test.name, err)
t.Errorf("CreatePipelineTable for %s returned err: %v", test.name, err)
}
})
}
Expand Down
34 changes: 21 additions & 13 deletions database/postgres/postgres.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"github.com/DATA-DOG/go-sqlmock"
"github.com/go-vela/server/database/pipeline"
"github.com/go-vela/server/database/postgres/ddl"
"github.com/go-vela/server/database/user"
"github.com/go-vela/types/constants"
"github.com/sirupsen/logrus"

Expand All @@ -37,11 +38,15 @@ type (
}

client struct {
config *config
config *config
// https://pkg.go.dev/gorm.io/gorm#DB
Postgres *gorm.DB
// https://pkg.go.dev/github.com/sirupsen/logrus#Entry
Logger *logrus.Entry
// https://pkg.go.dev/github.com/go-vela/server/database/pipeline#PipelineService
pipeline.PipelineService
// https://pkg.go.dev/github.com/go-vela/server/database/user#UserService
user.UserService
}
)

Expand Down Expand Up @@ -140,6 +145,8 @@ func NewTest() (*client, sqlmock.Sqlmock, error) {

_mock.ExpectExec(pipeline.CreatePostgresTable).WillReturnResult(sqlmock.NewResult(1, 1))
_mock.ExpectExec(pipeline.CreateRepoIDIndex).WillReturnResult(sqlmock.NewResult(1, 1))
_mock.ExpectExec(user.CreatePostgresTable).WillReturnResult(sqlmock.NewResult(1, 1))
_mock.ExpectExec(user.CreateUserRefreshIndex).WillReturnResult(sqlmock.NewResult(1, 1))

// create the new mock Postgres database client
//
Expand Down Expand Up @@ -262,12 +269,6 @@ func createTables(c *client) error {
return fmt.Errorf("unable to create %s table: %w", constants.TableStep, err)
}

// create the users table
err = c.Postgres.Exec(ddl.CreateUserTable).Error
if err != nil {
return fmt.Errorf("unable to create %s table: %w", constants.TableUser, err)
}

// create the workers table
err = c.Postgres.Exec(ddl.CreateWorkerTable).Error
if err != nil {
Expand Down Expand Up @@ -342,12 +343,6 @@ func createIndexes(c *client) error {
return fmt.Errorf("unable to create secrets_type_org index for the %s table: %w", constants.TableSecret, err)
}

// create the users_refresh index for the users table
err = c.Postgres.Exec(ddl.CreateUserRefreshIndex).Error
if err != nil {
return fmt.Errorf("unable to create users_refresh index for the %s table: %w", constants.TableUser, err)
}

// create the workers_hostname_address index for the workers table
err = c.Postgres.Exec(ddl.CreateWorkerHostnameAddressIndex).Error
if err != nil {
Expand All @@ -374,5 +369,18 @@ func createServices(c *client) error {
return err
}

// create the database agnostic user service
//
// https://pkg.go.dev/github.com/go-vela/server/database/user#New
c.UserService, err = user.New(
user.WithClient(c.Postgres),
user.WithEncryptionKey(c.config.EncryptionKey),
user.WithLogger(c.Logger),
user.WithSkipCreation(c.config.SkipCreation),
)
if err != nil {
return err
}

return nil
}
7 changes: 3 additions & 4 deletions database/postgres/postgres_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import (
"github.com/DATA-DOG/go-sqlmock"
"github.com/go-vela/server/database/pipeline"
"github.com/go-vela/server/database/postgres/ddl"
"github.com/go-vela/server/database/user"
)

func TestPostgres_New(t *testing.T) {
Expand Down Expand Up @@ -80,7 +81,6 @@ func TestPostgres_setupDatabase(t *testing.T) {
_mock.ExpectExec(ddl.CreateSecretTable).WillReturnResult(sqlmock.NewResult(1, 1))
_mock.ExpectExec(ddl.CreateServiceTable).WillReturnResult(sqlmock.NewResult(1, 1))
_mock.ExpectExec(ddl.CreateStepTable).WillReturnResult(sqlmock.NewResult(1, 1))
_mock.ExpectExec(ddl.CreateUserTable).WillReturnResult(sqlmock.NewResult(1, 1))
_mock.ExpectExec(ddl.CreateWorkerTable).WillReturnResult(sqlmock.NewResult(1, 1))

// ensure the mock expects the index queries
Expand All @@ -94,7 +94,6 @@ func TestPostgres_setupDatabase(t *testing.T) {
_mock.ExpectExec(ddl.CreateSecretTypeOrgRepo).WillReturnResult(sqlmock.NewResult(1, 1))
_mock.ExpectExec(ddl.CreateSecretTypeOrgTeam).WillReturnResult(sqlmock.NewResult(1, 1))
_mock.ExpectExec(ddl.CreateSecretTypeOrg).WillReturnResult(sqlmock.NewResult(1, 1))
_mock.ExpectExec(ddl.CreateUserRefreshIndex).WillReturnResult(sqlmock.NewResult(1, 1))
_mock.ExpectExec(ddl.CreateWorkerHostnameAddressIndex).WillReturnResult(sqlmock.NewResult(1, 1))
_mock.ExpectExec(pipeline.CreatePostgresTable).WillReturnResult(sqlmock.NewResult(1, 1))
_mock.ExpectExec(pipeline.CreateRepoIDIndex).WillReturnResult(sqlmock.NewResult(1, 1))
Expand Down Expand Up @@ -165,7 +164,6 @@ func TestPostgres_createTables(t *testing.T) {
_mock.ExpectExec(ddl.CreateSecretTable).WillReturnResult(sqlmock.NewResult(1, 1))
_mock.ExpectExec(ddl.CreateServiceTable).WillReturnResult(sqlmock.NewResult(1, 1))
_mock.ExpectExec(ddl.CreateStepTable).WillReturnResult(sqlmock.NewResult(1, 1))
_mock.ExpectExec(ddl.CreateUserTable).WillReturnResult(sqlmock.NewResult(1, 1))
_mock.ExpectExec(ddl.CreateWorkerTable).WillReturnResult(sqlmock.NewResult(1, 1))

tests := []struct {
Expand Down Expand Up @@ -215,7 +213,6 @@ func TestPostgres_createIndexes(t *testing.T) {
_mock.ExpectExec(ddl.CreateSecretTypeOrgRepo).WillReturnResult(sqlmock.NewResult(1, 1))
_mock.ExpectExec(ddl.CreateSecretTypeOrgTeam).WillReturnResult(sqlmock.NewResult(1, 1))
_mock.ExpectExec(ddl.CreateSecretTypeOrg).WillReturnResult(sqlmock.NewResult(1, 1))
_mock.ExpectExec(ddl.CreateUserRefreshIndex).WillReturnResult(sqlmock.NewResult(1, 1))
_mock.ExpectExec(ddl.CreateWorkerHostnameAddressIndex).WillReturnResult(sqlmock.NewResult(1, 1))

tests := []struct {
Expand Down Expand Up @@ -257,6 +254,8 @@ func TestPostgres_createServices(t *testing.T) {
// ensure the mock expects the index queries
_mock.ExpectExec(pipeline.CreatePostgresTable).WillReturnResult(sqlmock.NewResult(1, 1))
_mock.ExpectExec(pipeline.CreateRepoIDIndex).WillReturnResult(sqlmock.NewResult(1, 1))
_mock.ExpectExec(user.CreatePostgresTable).WillReturnResult(sqlmock.NewResult(1, 1))
_mock.ExpectExec(user.CreateUserRefreshIndex).WillReturnResult(sqlmock.NewResult(1, 1))

tests := []struct {
failure bool
Expand Down
32 changes: 5 additions & 27 deletions database/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ package database

import (
"github.com/go-vela/server/database/pipeline"
"github.com/go-vela/server/database/user"
"github.com/go-vela/types/library"
)

Expand Down Expand Up @@ -239,39 +240,16 @@ type Service interface {
// deletes a step by unique ID.
DeleteService(int64) error

// User Database Interface Functions

// GetUser defines a function that
// gets a user by unique ID.
GetUser(int64) (*library.User, error)
// GetUserName defines a function that
// gets a user by name.
GetUserName(string) (*library.User, error)
// GetUserList defines a function that
// gets a list of all users.
GetUserList() ([]*library.User, error)
// GetUserCount defines a function that
// gets the count of users.
GetUserCount() (int64, error)
// GetUserLiteList defines a function
// that gets a lite list of users.
GetUserLiteList(int, int) ([]*library.User, error)
// CreateUser defines a function that
// creates a new user.
CreateUser(*library.User) error
// UpdateUser defines a function that
// updates a user.
UpdateUser(*library.User) error
// DeleteUser defines a function that
// deletes a user by unique ID.
DeleteUser(int64) error
// UserService provides the interface for functionality
// related to users stored in the database.
user.UserService

// Worker Database Interface Functions

// GetWorker defines a function that
// gets a worker by hostname.
GetWorker(string) (*library.Worker, error)
// GetWorkerAddress defines a function that
// GetWorkerByAddress defines a function that
// gets a worker by address.
GetWorkerByAddress(string) (*library.Worker, error)
// GetWorkerList defines a function that
Expand Down
30 changes: 18 additions & 12 deletions database/sqlite/sqlite.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (

"github.com/go-vela/server/database/pipeline"
"github.com/go-vela/server/database/sqlite/ddl"
"github.com/go-vela/server/database/user"
"github.com/go-vela/types/constants"
"github.com/sirupsen/logrus"

Expand Down Expand Up @@ -37,10 +38,14 @@ type (

client struct {
config *config
// https://pkg.go.dev/gorm.io/gorm#DB
Sqlite *gorm.DB
// https://pkg.go.dev/github.com/sirupsen/logrus#Entry
Logger *logrus.Entry
// https://pkg.go.dev/github.com/go-vela/server/database/pipeline#PipelineService
pipeline.PipelineService
// https://pkg.go.dev/github.com/go-vela/server/database/user#UserService
user.UserService
}
)

Expand Down Expand Up @@ -258,12 +263,6 @@ func createTables(c *client) error {
return fmt.Errorf("unable to create %s table: %w", constants.TableStep, err)
}

// create the users table
err = c.Sqlite.Exec(ddl.CreateUserTable).Error
if err != nil {
return fmt.Errorf("unable to create %s table: %w", constants.TableUser, err)
}

// create the workers table
err = c.Sqlite.Exec(ddl.CreateWorkerTable).Error
if err != nil {
Expand Down Expand Up @@ -338,12 +337,6 @@ func createIndexes(c *client) error {
return fmt.Errorf("unable to create secrets_type_org index for the %s table: %w", constants.TableSecret, err)
}

// create the users_refresh index for the users table
err = c.Sqlite.Exec(ddl.CreateUserRefreshIndex).Error
if err != nil {
return fmt.Errorf("unable to create users_refresh index for the %s table: %w", constants.TableUser, err)
}

// create the workers_hostname_address index for the workers table
err = c.Sqlite.Exec(ddl.CreateWorkerHostnameAddressIndex).Error
if err != nil {
Expand All @@ -370,5 +363,18 @@ func createServices(c *client) error {
return err
}

// create the database agnostic user service
//
// https://pkg.go.dev/github.com/go-vela/server/database/user#New
c.UserService, err = user.New(
user.WithClient(c.Sqlite),
user.WithEncryptionKey(c.config.EncryptionKey),
user.WithLogger(c.Logger),
user.WithSkipCreation(c.config.SkipCreation),
)
if err != nil {
return err
}

return nil
}
Loading