func assetReady(conn *db.MConn, path, bucket string, doc db.M) *db.Asset { var asset db.Asset if !strings.HasPrefix(path, "/") { path = "/" + path } conn.GetOne(db.ASSET, db.M{ "path": path, "bucket": bucket, }, &asset) if asset.Status != db.PENDING { log.WithField("asset", asset).Debugln("asset has an invalid state") return nil } err := conn.FindAndUpdate(db.ASSET, db.M{ "path": path, "bucket": bucket, "status": db.PENDING, }, doc, &asset) if err != nil { panic(err) } return &asset }
func getAsset(conn *db.MConn, _id string) *db.Asset { var asset db.Asset err := conn.GetOne(db.ASSET, db.M{"_id": bson.ObjectIdHex(_id)}, &asset) if err != nil { panic(err) } return &asset }
func createAsset(conn *db.MConn, args *assetArgs) *db.Asset { assetId := bson.NewObjectId() if args.Collection == "" { args.Collection = DefaultCollection } asset := db.Asset{ Id: assetId, CreatedOn: db.EpochNow(), Name: args.Name, Bucket: config.Settings.S3.Bucket, FileType: args.fileType, MimeType: args.MimeType, Status: db.PENDING, Collection: args.Collection, Path: getUploadURL(assetId.Hex(), args.Collection, args.Name), } conn.Insert(db.ASSET, &asset) return &asset }
func updateAsset(conn *db.MConn, _id string, doc db.M) { err := conn.Update(db.ASSET, db.M{"_id": bson.ObjectIdHex(_id)}, doc) if err != nil { panic(err) } }