From 6453be599d0792582d196df2dd7958bd9613f19f Mon Sep 17 00:00:00 2001 From: Caleb Gardner Date: Tue, 25 Apr 2023 11:05:35 -0500 Subject: [PATCH] Added resume site --- internal/darkstormtech/app.go | 65 +++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/internal/darkstormtech/app.go b/internal/darkstormtech/app.go index 224d449..a86ccf9 100644 --- a/internal/darkstormtech/app.go +++ b/internal/darkstormtech/app.go @@ -38,6 +38,8 @@ func (d *DarkstormTech) Extension(req *stupid.Request) bool { } if req.Path[1] == "files" { return d.handleFiles(req) + } else if req.Path[1] == "resume" { + return d.handleResume(req) } res := d.DB.Collection("pages").FindOne(context.TODO(), bson.M{"_id": strings.Join(req.Path[1:], "/")}, options.FindOne().SetProjection(bson.M{"_id": 0, "content": 1})) if res.Err() == mongo.ErrNoDocuments { @@ -93,3 +95,66 @@ func (d *DarkstormTech) handleFiles(req *stupid.Request) bool { } return true } + +type project struct { + ID string `bson:"_id"` + Repository string + Description string + Language []struct { + Language string + Dates string + } +} + +func selectedString(selected bool) string { + if !selected { + return "" + } + return " selected" +} + +func (d *DarkstormTech) handleResume(req *stupid.Request) bool { + filter := bson.M{} + lang := "" + if l, ok := req.Query["lang"]; ok && len(l) == 1 && l[0] != "" { + lang = l[0] + filter = bson.M{"language.language": l[0]} + } + projects := make([]project, 0) + res, err := d.DB.Collection("projects").Find(context.TODO(), filter) + if err != nil { + log.Println("Error while getting projects:", err) + req.Resp.WriteHeader(http.StatusInternalServerError) + return true + } + err = res.All(context.TODO(), &projects) + if err != nil { + log.Println("Error while decoding projects:", err) + req.Resp.WriteHeader(http.StatusInternalServerError) + return true + } + out := "

Language Filter:

" + for _, p := range projects { + out += "

" + p.ID + "

" + out += "

" + p.Repository + "

" + for _, l := range p.Language { + lang := l.Language + if lang == "Dart" { + lang = "Dart (Flutter)" + } + out += "

" + lang + ": " + l.Dates + "

" + } + out += "

" + p.Description + "

" + } + _, err = req.Resp.Write([]byte(out)) + if err != nil { + log.Println("Error while writing output:", err) + req.Resp.WriteHeader(http.StatusInternalServerError) + } + return true +}