Skip to content

Commit

Permalink
Update and delete in database
Browse files Browse the repository at this point in the history
  • Loading branch information
cjslep committed Jun 7, 2019
1 parent e96acff commit 2d1b871
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 17 deletions.
64 changes: 51 additions & 13 deletions database.go
Expand Up @@ -47,10 +47,12 @@ type database struct {
outboxForInbox *sql.Stmt
exists *sql.Stmt
get *sql.Stmt
fedCreate *sql.Stmt
localCreate *sql.Stmt
update *sql.Stmt
deleteStmt *sql.Stmt
fedCreate *sql.Stmt
localUpdate *sql.Stmt
fedUpdate *sql.Stmt
localDelete *sql.Stmt
fedDelete *sql.Stmt
getOutbox *sql.Stmt
followers *sql.Stmt
following *sql.Stmt
Expand Down Expand Up @@ -144,11 +146,19 @@ func newDatabase(c *config, a Application, debug bool) (db *database, err error)
if err != nil {
return
}
db.update, err = db.db.Prepare(sqlgen.Update())
db.localUpdate, err = db.db.Prepare(sqlgen.LocalUpdate())
if err != nil {
return
}
db.fedUpdate, err = db.db.Prepare(sqlgen.FedUpdate())
if err != nil {
return
}
db.deleteStmt, err = db.db.Prepare(sqlgen.Delete())
db.localDelete, err = db.db.Prepare(sqlgen.LocalDelete())
if err != nil {
return
}
db.fedDelete, err = db.db.Prepare(sqlgen.FedDelete())
if err != nil {
return
}
Expand Down Expand Up @@ -239,8 +249,10 @@ func (d *database) Close() error {
d.get.Close()
d.localCreate.Close()
d.fedCreate.Close()
d.update.Close()
d.deleteStmt.Close()
d.localUpdate.Close()
d.fedUpdate.Close()
d.localDelete.Close()
d.fedDelete.Close()
d.getOutbox.Close()
d.followers.Close()
d.following.Close()
Expand Down Expand Up @@ -558,14 +570,40 @@ func (d *database) Create(c context.Context, asType vocab.Type) (err error) {
}
}

func (d *database) Update(c context.Context, asType vocab.Type) error {
// TODO
return nil
func (d *database) Update(c context.Context, asType vocab.Type) (err error) {
var b []byte
b, err = serialize(asType)
if err != nil {
return
}
var id *url.URL
id, err = pub.GetId(asType)
if err != nil {
return
}
var owns bool
if owns, err = d.Owns(c, id); err != nil {
return
} else if owns {
_, err = d.localUpdate.ExecContext(c, string(b))
return
} else {
_, err = d.fedUpdate.ExecContext(c, string(b))
return
}
}

func (d *database) Delete(c context.Context, id *url.URL) error {
// TODO
return nil
func (d *database) Delete(c context.Context, id *url.URL) (err error) {
var owns bool
if owns, err = d.Owns(c, id); err != nil {
return
} else if owns {
_, err = d.localDelete.ExecContext(c, id.String())
return
} else {
_, err = d.fedDelete.ExecContext(c, id.String())
return
}
}

func (d *database) GetOutbox(c context.Context, outboxIRI *url.URL) (outbox vocab.ActivityStreamsOrderedCollectionPage, err error) {
Expand Down
20 changes: 16 additions & 4 deletions db_postgres.go
Expand Up @@ -39,8 +39,10 @@ type sqlGenerator interface {
Get() string
LocalCreate() string
FedCreate() string
Update() string
Delete() string
LocalUpdate() string
FedUpdate() string
LocalDelete() string
FedDelete() string
GetOutbox() string
SetOutboxUpdate() string
SetOutboxInsert() string
Expand Down Expand Up @@ -320,12 +322,22 @@ func (p *pgV0) FedCreate() string {
return ""
}

func (p *pgV0) Update() string {
func (p *pgV0) LocalUpdate() string {
// TODO
return ""
}

func (p *pgV0) Delete() string {
func (p *pgV0) FedUpdate() string {
// TODO
return ""
}

func (p *pgV0) LocalDelete() string {
// TODO
return ""
}

func (p *pgV0) FedDelete() string {
// TODO
return ""
}
Expand Down

0 comments on commit 2d1b871

Please sign in to comment.