Skip to content

Commit

Permalink
feat(ui): language switcher
Browse files Browse the repository at this point in the history
  • Loading branch information
fiftin committed Sep 17, 2023
1 parent 41c60b9 commit 985f3f3
Show file tree
Hide file tree
Showing 6 changed files with 301 additions and 79 deletions.
131 changes: 126 additions & 5 deletions api/projects/projects.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,112 @@ func GetProjects(w http.ResponseWriter, r *http.Request) {
helpers.WriteJSON(w, http.StatusOK, projects)
}

func createDemoProject(projectID int, store db.Store) (err error) {
var noneKey db.AccessKey
var demoRepo db.Repository
var emptyEnv db.Environment

var buildInv db.Inventory
var devInv db.Inventory
var prodInv db.Inventory

noneKey, err = store.CreateAccessKey(db.AccessKey{
Name: "None",
})

if err != nil {
return
}

demoRepo, err = store.CreateRepository(db.Repository{
Name: "Demo Project",
ProjectID: projectID,
GitURL: "https://github.com/semaphoreui/demo-project.git",
GitBranch: "main",
SSHKeyID: noneKey.ID,
})

if err != nil {
return
}

emptyEnv, err = store.CreateEnvironment(db.Environment{
Name: "Empty",
ProjectID: projectID,
JSON: "{}",
})

if err != nil {
return
}

buildInv, err = store.CreateInventory(db.Inventory{
Name: "Build",
ProjectID: projectID,
Inventory: "[builder]\nlocalhost",
Type: "static",
})

if err != nil {
return
}

devInv, err = store.CreateInventory(db.Inventory{
ProjectID: projectID,
})

if err != nil {
return
}

prodInv, err = store.CreateInventory(db.Inventory{
ProjectID: projectID,
})

if err != nil {
return
}

_, err = store.CreateTemplate(db.Template{
Name: "Build",
Playbook: "build.yml",
ProjectID: projectID,
InventoryID: buildInv.ID,
EnvironmentID: &emptyEnv.ID,
RepositoryID: demoRepo.ID,
})

if err != nil {
return
}

_, err = store.CreateTemplate(db.Template{
Name: "Deploy to Dev",
Playbook: "deploy.yml",
ProjectID: projectID,
InventoryID: devInv.ID,
EnvironmentID: &emptyEnv.ID,
RepositoryID: demoRepo.ID,
})

if err != nil {
return
}

_, err = store.CreateTemplate(db.Template{
Name: "Deploy to Production",
Playbook: "deploy.yml",
ProjectID: projectID,
InventoryID: prodInv.ID,
EnvironmentID: &emptyEnv.ID,
RepositoryID: demoRepo.ID,
})

return
}

// AddProject adds a new project to the database
func AddProject(w http.ResponseWriter, r *http.Request) {
var body db.Project

user := context.Get(r, "user").(*db.User)

Expand All @@ -36,25 +139,43 @@ func AddProject(w http.ResponseWriter, r *http.Request) {
return
}

if !helpers.Bind(w, r, &body) {
var bodyWithDemo struct {
db.Project
Demo bool `json:"demo"`
}

if !helpers.Bind(w, r, &bodyWithDemo) {
return
}

body, err := helpers.Store(r).CreateProject(body)
body := bodyWithDemo.Project

store := helpers.Store(r)

body, err := store.CreateProject(body)
if err != nil {
helpers.WriteError(w, err)
return
}

_, err = helpers.Store(r).CreateProjectUser(db.ProjectUser{ProjectID: body.ID, UserID: user.ID, Role: db.ProjectOwner})
_, err = store.CreateProjectUser(db.ProjectUser{ProjectID: body.ID, UserID: user.ID, Role: db.ProjectOwner})
if err != nil {
helpers.WriteError(w, err)
return
}

if bodyWithDemo.Demo {
err = createDemoProject(body.ID, store)

if err != nil {
helpers.WriteError(w, err)
return
}
}

desc := "Project Created"
oType := db.EventProject
_, err = helpers.Store(r).CreateEvent(db.Event{
_, err = store.CreateEvent(db.Event{
UserID: &user.ID,
ProjectID: &body.ID,
Description: &desc,
Expand Down
Loading

0 comments on commit 985f3f3

Please sign in to comment.