+ if mysqlErr, ok := err.(*mysql.MySQLError); ok {
+ if mysqlErr.Number != mySQLErrDuplicateKey {
+ t.Rollback()
+ log.Error("Couldn't add follower in DB: %v\n", err)
+ return
+ }
+ } else {
+ t.Rollback()
+ log.Error("Couldn't add follower in DB: %v\n", err)
+ return
+ }
+ }
+
+ err = t.Commit()
+ if err != nil {
+ t.Rollback()
+ log.Error("Rolling back after Commit(): %v\n", err)
+ return
+ }
+ } else if isUnfollow {
+ // Remove follower locally
+ _, err = app.db.Exec("DELETE FROM remotefollows WHERE collection_id = ? AND remote_user_id = (SELECT id FROM remoteusers WHERE actor_id = ?)", c.ID, to.String())
+ if err != nil {
+ log.Error("Couldn't remove follower from DB: %v\n", err)
+ }
+ }
+ }()
+
+ return nil
+}
+
+func makeActivityPost(p *activitystreams.Person, url string, m interface{}) error {