Files
darkstorm-server/internal/blog/portfolio.go
T
2024-10-24 00:00:08 -05:00

47 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"`
Order int `json:"order" bson:"order"`
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(ctx context.Context, languageFilter string) ([]PortfolioProject, error) {
filter := bson.M{}
if languageFilter != "" {
filter["language.language"] = languageFilter
}
res, err := b.portfolioCol.Find(ctx, filter, options.Find().SetSort(bson.M{"order": 1}))
if err != nil {
return nil, err
}
var out []PortfolioProject
err = res.All(ctx, &out)
return out, err
}
func (b *BlogApp) reqPortfolio(w http.ResponseWriter, r *http.Request) {
folio, err := b.Projects(r.Context(), r.URL.Query().Get("lang"))
if err != nil {
backend.ReturnError(w, http.StatusInternalServerError, "internal", "Server Error")
return
}
json.NewEncoder(w).Encode(folio)
}