diff --git a/collections.go b/collections.go index 27f740a..12acb07 100644 --- a/collections.go +++ b/collections.go @@ -396,25 +396,12 @@ func newCollection(app *App, w http.ResponseWriter, r *http.Request) error { return impart.HTTPError{http.StatusPreconditionFailed, "Collection alias isn't valid."} } - coll, err := app.db.CreateCollection(c.Alias, c.Title, userID) + coll, err := app.db.CreateCollection(app.cfg, c.Alias, c.Title, userID) if err != nil { // TODO: handle this return err } - // Set visibility to configured default - vis := defaultVisibility(app.cfg) - if vis != CollUnlisted { - visInt := int(vis) - err = app.db.UpdateCollection(&SubmittedCollection{ - OwnerID: uint64(userID), - Visibility: &visInt, - }, coll.Alias) - if err != nil { - log.Error("Unable to set default visibility: %s", err) - } - } - res := &CollectionObj{Collection: *coll} if reqJSON { diff --git a/database.go b/database.go index 1212130..ea562b3 100644 --- a/database.go +++ b/database.go @@ -83,8 +83,8 @@ type writestore interface { GetOwnedPost(id string, ownerID int64) (*PublicPost, error) GetPostProperty(id string, collectionID int64, property string) (interface{}, error) - CreateCollectionFromToken(string, string, string) (*Collection, error) - CreateCollection(string, string, int64) (*Collection, error) + CreateCollectionFromToken(*config.Config, string, string, string) (*Collection, error) + CreateCollection(*config.Config, string, string, int64) (*Collection, error) GetCollectionBy(condition string, value interface{}) (*Collection, error) GetCollection(alias string) (*Collection, error) GetCollectionForPad(alias string) (*Collection, error) @@ -103,7 +103,7 @@ type writestore interface { CanCollect(cpr *ClaimPostRequest, userID int64) bool AttemptClaim(p *ClaimPostRequest, query string, params []interface{}, slugIdx int) (sql.Result, error) DispersePosts(userID int64, postIDs []string) (*[]ClaimPostResult, error) - ClaimPosts(userID int64, collAlias string, posts *[]ClaimPostRequest) (*[]ClaimPostResult, error) + ClaimPosts(cfg *config.Config, userID int64, collAlias string, posts *[]ClaimPostRequest) (*[]ClaimPostResult, error) GetPostsCount(c *CollectionObj, includeFuture bool) GetPosts(c *Collection, page int, includeFuture, forceRecentFirst, includePinned bool) (*[]PublicPost, error) @@ -239,13 +239,13 @@ func (db *datastore) UpdateEncryptedUserEmail(userID int64, encEmail []byte) err return nil } -func (db *datastore) CreateCollectionFromToken(alias, title, accessToken string) (*Collection, error) { +func (db *datastore) CreateCollectionFromToken(cfg *config.Config, alias, title, accessToken string) (*Collection, error) { userID := db.GetUserID(accessToken) if userID == -1 { return nil, ErrBadAccessToken } - return db.CreateCollection(alias, title, userID) + return db.CreateCollection(cfg, alias, title, userID) } func (db *datastore) GetUserCollectionCount(userID int64) (uint64, error) { @@ -262,13 +262,13 @@ func (db *datastore) GetUserCollectionCount(userID int64) (uint64, error) { return collCount, nil } -func (db *datastore) CreateCollection(alias, title string, userID int64) (*Collection, error) { +func (db *datastore) CreateCollection(cfg *config.Config, alias, title string, userID int64) (*Collection, error) { if db.PostIDExists(alias) { return nil, impart.HTTPError{http.StatusConflict, "Invalid collection name."} } // All good, so create new collection - res, err := db.Exec("INSERT INTO collections (alias, title, description, privacy, owner_id, view_count) VALUES (?, ?, ?, ?, ?, ?)", alias, title, "", CollUnlisted, userID, 0) + res, err := db.Exec("INSERT INTO collections (alias, title, description, privacy, owner_id, view_count) VALUES (?, ?, ?, ?, ?, ?)", alias, title, "", defaultVisibility(cfg), userID, 0) if err != nil { if db.isDuplicateKeyErr(err) { return nil, impart.HTTPError{http.StatusConflict, "Collection already exists."} @@ -1325,7 +1325,7 @@ func (db *datastore) DispersePosts(userID int64, postIDs []string) (*[]ClaimPost return &res, nil } -func (db *datastore) ClaimPosts(userID int64, collAlias string, posts *[]ClaimPostRequest) (*[]ClaimPostResult, error) { +func (db *datastore) ClaimPosts(cfg *config.Config, userID int64, collAlias string, posts *[]ClaimPostRequest) (*[]ClaimPostResult, error) { postClaimReqs := map[string]bool{} res := []ClaimPostResult{} postCollAlias := collAlias @@ -1382,7 +1382,7 @@ func (db *datastore) ClaimPosts(userID int64, collAlias string, posts *[]ClaimPo // This is a new collection // TODO: consider removing this. This seriously complicates this // method and adds another (unnecessary?) logic path. - coll, err = db.CreateCollection(postCollAlias, "", userID) + coll, err = db.CreateCollection(cfg, postCollAlias, "", userID) if err != nil { if err, ok := err.(impart.HTTPError); ok { r.Code = err.Status diff --git a/posts.go b/posts.go index 07902ce..6e4f49e 100644 --- a/posts.go +++ b/posts.go @@ -869,7 +869,7 @@ func addPost(app *App, w http.ResponseWriter, r *http.Request) error { collAlias := vars["alias"] // Update all given posts - res, err := app.db.ClaimPosts(ownerID, collAlias, claims) + res, err := app.db.ClaimPosts(app.cfg, ownerID, collAlias, claims) if err != nil { return err }