Files
darkstorm-server/internal/blog/portfolio.go
T
2024-07-31 01:41:14 -05:00

46 lines
1.3 KiB
Go

package blog
import (
"context"
"encoding/json"
"net/http"
"github.com/CalebQ42/darkstorm-server/internal/backend"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo/options"
)
type PortfolioProject struct {
Title string `json:"_id" bson:"_id"`
Repository string `json:"repository" bson:"repository"`
Description string `json:"description" bson:"description"`
Technologies []string `json:"technologies" bson:"technologies"`
Languages []struct {
Language string `json:"language" bson:"language"`
Dates string `json:"dates" bson:"dates"`
} `json:"language" bson:"language"`
}
func (b *BlogApp) Projects(languageFilter string) ([]PortfolioProject, error) {
filter := bson.M{}
if languageFilter != "" {
filter["language.language"] = languageFilter
}
res, err := b.portfolioCol.Find(context.Background(), filter, options.Find().SetSort(bson.M{"_id": 1}))
if err != nil {
return nil, err
}
var out []PortfolioProject
err = res.All(context.Background(), &out)
return out, err
}
func (b *BlogApp) reqPortfolio(w http.ResponseWriter, r *http.Request) {
folio, err := b.Projects(r.URL.Query().Get("lang"))
if err != nil {
backend.ReturnError(w, http.StatusInternalServerError, "internal", "Server Error")
return
}
json.NewEncoder(w).Encode(folio)
}