Folders handlers
This commit is contained in:
@ -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)
|
||||
}
|
||||
|
@ -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 {
|
||||
|
Reference in New Issue
Block a user