From d67a0d05fd1461d5aee1a5eeceae57f8e7affeab Mon Sep 17 00:00:00 2001 From: Travis Howse Date: Sun, 23 Feb 2025 21:57:06 +1000 Subject: [PATCH 01/16] Vue stuff, api, plumbing. --- api-docs.yml | 8 ++++++++ db/Repository.go | 1 + db/sql/migrations/v0.0.0.sql | 1 + db/sql/repository.go | 8 +++++--- services/project/backup_test.go | 1 + web/src/components/RepositoryForm.vue | 19 +++++++++++++++++++ web/src/lang/en.js | 1 + web/src/views/project/Repositories.vue | 13 +++++++++++-- 8 files changed, 47 insertions(+), 5 deletions(-) diff --git a/api-docs.yml b/api-docs.yml index ebbe46156..acd35e6a9 100644 --- a/api-docs.yml +++ b/api-docs.yml @@ -231,6 +231,8 @@ definitions: type: string ssh_key: type: string + path: + type: string keys: type: array items: @@ -672,6 +674,9 @@ definitions: example: master ssh_key_id: type: integer + path: + type: string + example: deployment/ansible Repository: type: object properties: @@ -690,6 +695,9 @@ definitions: example: master ssh_key_id: type: integer + path: + type: string + example: deployment/ansible Task: type: object diff --git a/db/Repository.go b/db/Repository.go index 114d9fb8b..1f9fbc523 100644 --- a/db/Repository.go +++ b/db/Repository.go @@ -31,6 +31,7 @@ type Repository struct { SSHKeyID int `db:"ssh_key_id" json:"ssh_key_id" binding:"required" backup:"-"` SSHKey AccessKey `db:"-" json:"-" backup:"-"` + Path string `db:"path" json:"path" backup:"-"` } func (r Repository) ClearCache() error { diff --git a/db/sql/migrations/v0.0.0.sql b/db/sql/migrations/v0.0.0.sql index ed69212bf..723fe1433 100644 --- a/db/sql/migrations/v0.0.0.sql +++ b/db/sql/migrations/v0.0.0.sql @@ -43,6 +43,7 @@ create table `project__repository` ( `project_id` int not null, `git_url` text not null, `ssh_key_id` int not null, + `path` varchar(255) not null, foreign key (`project_id`) references project(`id`) on delete cascade, foreign key (`ssh_key_id`) references access_key(`id`) diff --git a/db/sql/repository.go b/db/sql/repository.go index 1c2ed5247..236327147 100644 --- a/db/sql/repository.go +++ b/db/sql/repository.go @@ -63,11 +63,12 @@ func (d *SqlDb) UpdateRepository(repository db.Repository) error { } _, err = d.exec( - "update project__repository set name=?, git_url=?, git_branch=?, ssh_key_id=? where id=?", + "update project__repository set name=?, git_url=?, git_branch=?, ssh_key_id=?, path=? where id=?", repository.Name, repository.GitURL, repository.GitBranch, repository.SSHKeyID, + repository.Path, repository.ID) return err @@ -82,12 +83,13 @@ func (d *SqlDb) CreateRepository(repository db.Repository) (newRepo db.Repositor insertID, err := d.insert( "id", - "insert into project__repository(project_id, git_url, git_branch, ssh_key_id, name) values (?, ?, ?, ?, ?)", + "insert into project__repository(project_id, git_url, git_branch, ssh_key_id, name, path) values (?, ?, ?, ?, ?)", repository.ProjectID, repository.GitURL, repository.GitBranch, repository.SSHKeyID, - repository.Name) + repository.Name, + repository.Path) if err != nil { return diff --git a/services/project/backup_test.go b/services/project/backup_test.go index c33ecadb8..b5d4fd0fa 100644 --- a/services/project/backup_test.go +++ b/services/project/backup_test.go @@ -37,6 +37,7 @@ func TestBackupProject(t *testing.T) { Name: "Test", GitURL: "git@example.com:test/test", GitBranch: "master", + Path: "deployment/ansible", }) assert.NoError(t, err) diff --git a/web/src/components/RepositoryForm.vue b/web/src/components/RepositoryForm.vue index a5a11c068..907843f80 100644 --- a/web/src/components/RepositoryForm.vue +++ b/web/src/components/RepositoryForm.vue @@ -93,6 +93,15 @@ + + + diff --git a/web/src/lang/en.js b/web/src/lang/en.js index 10585c417..5cc05f353 100644 --- a/web/src/lang/en.js +++ b/web/src/lang/en.js @@ -306,4 +306,5 @@ export default { status_success: 'Success', status_failed: 'Failed', status_stopped: 'Stopped', + invalidPath: 'Invalid path', }; diff --git a/web/src/views/project/Repositories.vue b/web/src/views/project/Repositories.vue index e5a63f243..7412f9b21 100644 --- a/web/src/views/project/Repositories.vue +++ b/web/src/views/project/Repositories.vue @@ -63,6 +63,10 @@ {{ keys.find((k) => k.id === item.ssh_key_id).name }} + +