Folders handlers

This commit is contained in:
2022-12-13 17:07:32 +03:00
parent be36ed3593
commit 0bd63b53c5
6 changed files with 260 additions and 11 deletions

View File

@ -9,6 +9,7 @@ import (
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
type MongodbStorage struct {
@ -116,6 +117,21 @@ func (m MongodbStorage) GetRandomBookmarks(count int, filter *bson.D) ([]*Bookma
return bookmarks, err
}
func (m MongodbStorage) GetLastBookmarks(count int, filter *bson.D) ([]*Bookmark, error) {
passedFilter := getFilter(filter)
ctx := context.TODO()
store := NewStore[Bookmark](&m, "bookmarks")
bookmarks := []*Bookmark{}
opts := options.Find().SetSort(bson.D{{Key: "created", Value: -1}}).SetLimit(int64(count))
cur, err := store.Coll.Find(ctx, passedFilter, opts)
if err != nil {
log.Println("Cant find last bookmakrs: ", err)
return bookmarks, err
}
cur.All(ctx, &bookmarks)
return bookmarks, err
}
func (m MongodbStorage) GetUserBookmarks(user *User, filter *bson.D) ([]*Bookmark, error) {
passedFilter := getFilter(filter)
f := bson.D{{Key: "userid", Value: user.Id}}
@ -125,6 +141,36 @@ func (m MongodbStorage) GetUserBookmarks(user *User, filter *bson.D) ([]*Bookmar
return store.GetMany(ctx, &f)
}
func (m MongodbStorage) CreateFolder(folder *Folder) (primitive.ObjectID, error) {
store := NewStore[Folder](&m, "folders")
return store.InsertOne(context.TODO(), folder)
}
func (m MongodbStorage) GetFolderByID(id primitive.ObjectID) (*Folder, error) {
store := NewStore[Folder](&m, "folders")
return store.GetById(context.TODO(), id)
}
func (m MongodbStorage) GetFolder(filter *bson.D) (*Folder, error) {
store := NewStore[Folder](&m, "folders")
return store.GetOne(context.TODO(), filter)
}
func (m MongodbStorage) GetFolders(filter *bson.D) ([]*Folder, error) {
store := NewStore[Folder](&m, "folders")
return store.GetMany(context.TODO(), filter)
}
func (m MongodbStorage) GetChildrenFolders(id primitive.ObjectID) ([]*Folder, error) {
store := NewStore[Folder](&m, "folders")
return store.GetMany(context.TODO(), &bson.D{{Key: "parentid", Value: id}})
}
func (m MongodbStorage) GetChildrenBookmarks(id primitive.ObjectID) ([]*Bookmark, error) {
store := NewStore[Bookmark](&m, "bookmarks")
return store.GetMany(context.TODO(), &bson.D{{Key: "folderid", Value: id}})
}
func (m MongodbStorage) Collection(col string) *mongo.Collection {
return m.Db.Database("nash").Collection(col)
}

View File

@ -9,11 +9,12 @@ import (
)
type User struct {
Id primitive.ObjectID `bson:"_id" json:"id,omitempty"`
Username string
Password []byte `json:"-"`
IsAdmin bool
LastLogin time.Time
Id primitive.ObjectID `bson:"_id" json:"id,omitempty"`
Username string
Password []byte `json:"-"`
IsAdmin bool
LastLogin time.Time
RootFolderId primitive.ObjectID
}
type Session struct {
@ -36,7 +37,9 @@ type Folder struct {
Id primitive.ObjectID `bson:"_id" json:"id,omitempty"`
Name string
ParentID primitive.ObjectID
UserID primitive.ObjectID
Icon []byte
Created time.Time
}
type Bookmark struct {
@ -46,8 +49,8 @@ type Bookmark struct {
UserID primitive.ObjectID
FolderID primitive.ObjectID
Tags []string
// Icon []byte
Created time.Time
Icon []byte
Created time.Time
}
type Note struct {