@@ -15,6 +15,7 @@ import (
1515 "io/ioutil"
1616 "os"
1717 "strconv"
18+ "strings"
1819 "time"
1920)
2021
@@ -130,13 +131,13 @@ func CreateNodeUpload(u *user.User, params map[string]string, files FormFiles) (
130131 return
131132 }
132133
133- err = node .Update (params , files )
134+ // update saves node
135+ err = node .Update (params , files , true )
134136 if err != nil {
137+ err = fmt .Errorf ("(node.Update) %s" , err .Error ())
135138 node .Rmdir ()
136- return
137139 }
138140
139- err = node .Save ()
140141 return
141142}
142143
@@ -219,9 +220,9 @@ func CreateNodesFromArchive(u *user.User, params map[string]string, files FormFi
219220
220221 // save nodes, only return those that were created / saved
221222 for _ , n := range tempNodes {
222- if err = n .Save (); err != nil {
223+ if serr : = n .Save (); serr != nil {
223224 n .Rmdir ()
224- return nil , err
225+ continue
225226 }
226227 nodes = append (nodes , n )
227228 }
@@ -264,6 +265,13 @@ func (node *Node) DynamicIndex(name string) (idx index.Index, err error) {
264265}
265266
266267func (node * Node ) Delete () (err error ) {
268+ // lock node
269+ err = LockMgr .LockNode (node .Id )
270+ if err != nil {
271+ return
272+ }
273+ defer LockMgr .RemoveNode (node .Id )
274+
267275 // check to make sure this node isn't referenced by a vnode
268276 virtualNodes := Nodes {}
269277 if _ , err = dbFind (bson.M {"file.virtual_parts" : node .Id }, & virtualNodes , "" , nil ); err != nil {
@@ -306,7 +314,8 @@ func (node *Node) Delete() (err error) {
306314 if err = dbDelete (bson.M {"id" : node .Id }); err != nil {
307315 return err
308316 }
309- return node .Rmdir ()
317+ err = node .Rmdir ()
318+ return
310319}
311320
312321func (node * Node ) DeleteIndex (indextype string ) (err error ) {
@@ -319,22 +328,8 @@ func (node *Node) DeleteIndex(indextype string) (err error) {
319328 return
320329}
321330
322- func (node * Node ) SetIndexInfo (indextype string , idxinfo IdxInfo ) ( err error ) {
331+ func (node * Node ) SetIndexInfo (indextype string , idxinfo IdxInfo ) {
323332 node .Indexes [indextype ] = idxinfo
324- err = node .Save ()
325- return
326- }
327-
328- func (node * Node ) SetFileFormat (format string ) (err error ) {
329- node .File .Format = format
330- err = node .Save ()
331- return
332- }
333-
334- func (node * Node ) SetPriority (priority int ) (err error ) {
335- node .Priority = priority
336- err = node .Save ()
337- return
338333}
339334
340335func (node * Node ) SetExpiration (expire string ) (err error ) {
@@ -356,21 +351,6 @@ func (node *Node) SetExpiration(expire string) (err error) {
356351 }
357352
358353 node .Expiration = currTime .Add (expireTime )
359- err = node .Save ()
360- return
361- }
362-
363- func (node * Node ) RemoveExpiration () (err error ) {
364- // reset to empty time
365- node .Expiration = time.Time {}
366- err = node .Save ()
367- return
368- }
369-
370- func (node * Node ) ClearRevisions () (err error ) {
371- // empty the revisions array
372- node .Revisions = []Node {}
373- err = node .Save ()
374354 return
375355}
376356
@@ -384,7 +364,6 @@ func (node *Node) SetAttributes(attr FormFile) (err error) {
384364 if err != nil {
385365 return
386366 }
387- err = node .Save ()
388367 return
389368}
390369
@@ -393,6 +372,26 @@ func (node *Node) SetAttributesFromString(attributes string) (err error) {
393372 if err != nil {
394373 return
395374 }
396- err = node .Save ()
397375 return
398376}
377+
378+ func (node * Node ) UpdateDataTags (types string ) {
379+ tagslist := strings .Split (types , "," )
380+ for _ , newtag := range tagslist {
381+ if contains (node .Tags , newtag ) {
382+ continue
383+ }
384+ node .Tags = append (node .Tags , newtag )
385+ }
386+ }
387+
388+ func (node * Node ) UpdateLinkages (ltype string , ids string , operation string ) {
389+ var link linkage
390+ link .Type = ltype
391+ idList := strings .Split (ids , "," )
392+ for _ , id := range idList {
393+ link .Ids = append (link .Ids , id )
394+ }
395+ link .Operation = operation
396+ node .Linkages = append (node .Linkages , link )
397+ }
0 commit comments