1e9eeb25d1
Added order for portfolio projects
47 lines
1.3 KiB
Go
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(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{"order": 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)
|
|
}
|