Skip to content

Instantly share code, notes, and snippets.

@kanzitelli
Created September 11, 2019 14:41
Show Gist options
  • Save kanzitelli/33f5a6694438b25d821b1011d4bda553 to your computer and use it in GitHub Desktop.
Save kanzitelli/33f5a6694438b25d821b1011d4bda553 to your computer and use it in GitHub Desktop.
DB/NewsSource.go & DB/NewsTypes.go. #1
package db
import (
"go.mongodb.org/mongo-driver/bson"
)
const (
newsSourcesCollection = "news_sources"
)
// FillNewsSources <function>
// is used to fill news sources in DB
func (s Service) fillNewsSources() error {
c := s.Collection(newsSourcesCollection)
ctx, cncl := s.CTX(5)
defer cncl()
// we cast it to array of interfaces because mongo driver asks so
var newsSources []interface{} // []models.NewsSource
newsSources = append(
newsSources,
models.SecretMagNewsSource,
models.TheVillageNewsSource,
models.TheoryAndPracticeNewsSource,
)
_, err := c.InsertMany(
ctx,
newsSources,
s.InsertManyOptionsOrdered(),
)
return err
}
// NewsSourcesGet <function>
// is used to get news sources
func (s Service) NewsSourcesGet() ([]models.NewsSource, error) {
c := s.Collection(newsSourcesCollection)
ctx, cncl := s.CTX(5)
defer cncl()
var newsSources []models.NewsSource
cur, err := c.Find(ctx, bson.D{})
if err != nil {
return []models.NewsSource{}, err
}
for cur.Next(ctx) {
var n models.NewsSource
err = cur.Decode(&n)
if err != nil {
return []models.NewsSource{}, err
}
newsSources = append(newsSources, n)
}
if err = cur.Err(); err != nil {
return []models.NewsSource{}, err
}
cur.Close(ctx)
return newsSources, nil
}
package db
import (
"go.mongodb.org/mongo-driver/bson"
)
const (
newsTypesCollection = "news_types"
)
// FillNewsTypes <function>
// is used to fill news types in DB
func (s Service) fillNewsTypes() error {
c := s.Collection(newsTypesCollection)
ctx, cncl := s.CTX(5)
defer cncl()
// we cast it to array of interfaces because mongo driver asks so
var newsTypes []interface{} // []models.NewsType
newsTypes = append(
newsTypes,
models.TypeNews,
models.TypeBusiness,
models.TypePost,
models.TypeStyle,
)
_, err := c.InsertMany(
ctx,
newsTypes,
s.InsertManyOptionsOrdered(),
)
return err
}
// NewsTypesGet <function>
// is used to get news types
func (s Service) NewsTypesGet() ([]models.NewsType, error) {
c := s.Collection(newsTypesCollection)
ctx, cncl := s.CTX(5)
defer cncl()
var newsTypes []models.NewsType
cur, err := c.Find(ctx, bson.D{})
if err != nil {
return []models.NewsType{}, err
}
for cur.Next(ctx) {
var n models.NewsType
err = cur.Decode(&n)
if err != nil {
return []models.NewsType{}, err
}
newsTypes = append(newsTypes, n)
}
if err = cur.Err(); err != nil {
return []models.NewsType{}, err
}
cur.Close(ctx)
return newsTypes, nil
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment