err=s.Runtime.Db.Select(&p,"SELECT a.id, a.refid, a.orgid, a.documentid, a.userid, a.contenttype, a.pagetype, a.level, a.sequence, a.title, a.body, a.revisions, a.blockid, a.created, a.revised FROM page a WHERE a.orgid=? AND a.documentid=? ORDER BY a.sequence",ctx.OrgID,documentID)
iferr!=nil{
err=errors.Wrap(err,"execute get pages")
return
}
return
}
// GetPagesWhereIn returns a slice, in presentation sequence, containing those page records for a given documentID
// where their refid is in the comma-separated list passed as inPages.
sql:="SELECT a.id, a.refid, a.orgid, a.documentid, a.userid, a.contenttype, a.pagetype, a.level, a.sequence, a.title, a.body, a.blockid, a.revisions, a.created, a.revised FROM page a WHERE a.orgid=? AND a.documentid=? AND a.refid IN (?"+strings.Repeat(",?",len(tempValues)-1)+") ORDER BY sequence"
err=s.Runtime.Db.Select(&pages,"SELECT id, refid, orgid, documentid, userid, contenttype, pagetype, sequence, level, title, revisions, blockid, created, revised FROM page WHERE orgid=? AND documentid=? ORDER BY sequence",ctx.OrgID,documentID)
iferr!=nil{
err=errors.Wrap(err,fmt.Sprintf("Unable to execute select pages for org %s and document %s",ctx.OrgID,documentID))
stmt,err=ctx.Transaction.Preparex("INSERT INTO revision (refid, orgid, documentid, ownerid, pageid, userid, contenttype, pagetype, title, body, rawbody, config, created, revised) SELECT ? as refid, a.orgid, a.documentid, a.userid as ownerid, a.refid as pageid, ? as userid, a.contenttype, a.pagetype, a.title, a.body, b.rawbody, b.config, ? as created, ? as revised FROM page a, pagemeta b WHERE a.refid=? AND a.refid=b.pageid")
stmt2,err=ctx.Transaction.PrepareNamed("UPDATE page SET documentid=:documentid, level=:level, title=:title, body=:body, revisions=:revisions, sequence=:sequence, revised=:revised WHERE orgid=:orgid AND refid=:refid")
deferstreamutil.Close(stmt2)
iferr!=nil{
err=errors.Wrap(err,"prepare page insert")
return
}
_,err=stmt2.Exec(&page)
iferr!=nil{
err=errors.Wrap(err,"execute page insert")
return
}
// Update revisions counter
if!skipRevision{
stmt3,err:=ctx.Transaction.Preparex("UPDATE page SET revisions=revisions+1 WHERE orgid=? AND refid=?")
stmt,err=ctx.Transaction.PrepareNamed("UPDATE pagemeta SET userid=:userid, documentid=:documentid, rawbody=:rawbody, config=:config, externalsource=:externalsource, revised=:revised WHERE orgid=:orgid AND pageid=:pageid")
deferstreamutil.Close(stmt)
iferr!=nil{
err=errors.Wrap(err,"prepare page meta update")
return
}
_,err=stmt.Exec(&meta)
iferr!=nil{
err=errors.Wrap(err,"execute page meta update")
return
}
return
}
// UpdateSequence changes the presentation sequence of the pageID page in the document.
// It then propagates that change into the search table and audits that it has occurred.
stmt,err:=s.Runtime.Db.Preparex("SELECT id, pageid, orgid, userid, documentid, rawbody, coalesce(config,JSON_UNQUOTE('{}')) as config, externalsource, created, revised FROM pagemeta WHERE orgid=? AND pageid=?")
deferstreamutil.Close(stmt)
iferr!=nil{
err=errors.Wrap(err,"prepare get page meta")
return
}
err=stmt.Get(&meta,ctx.OrgID,pageID)
iferr!=nil{
err=errors.Wrap(err,"execute get page meta")
return
}
return
}
// GetDocumentPageMeta returns the meta information associated with a document.
err=s.Runtime.Db.Select(&meta,"SELECT id, pageid, orgid, userid, documentid, rawbody, coalesce(config,JSON_UNQUOTE('{}')) as config, externalsource, created, revised FROM pagemeta WHERE orgid=? AND documentid=?"+filter,ctx.OrgID,documentID)
iferr!=nil{
err=errors.Wrap(err,"get document page meta")
return
}
return
}
/********************
*PageRevisions
********************/
// GetPageRevision returns the revisionID page revision record.
err=s.Runtime.Db.Select(&revisions,"SELECT a.id, a.refid, a.orgid, a.documentid, a.ownerid, a.pageid, a.userid, a.contenttype, a.pagetype, a.title, /*a.body, a.rawbody, a.config,*/ a.created, a.revised, coalesce(b.email,'') as email, coalesce(b.firstname,'') as firstname, coalesce(b.lastname,'') as lastname, coalesce(b.initials,'') as initials FROM revision a LEFT JOIN user b ON a.userid=b.refid WHERE a.orgid=? AND a.pageid=? AND a.pagetype='section' ORDER BY a.id DESC",ctx.OrgID,pageID)
iferr!=nil{
err=errors.Wrap(err,"get page revisions")
return
}
return
}
// GetDocumentRevisions returns a slice of page revision records for a given document, in the order they were created.
// Then audits that the get-page-revisions action has occurred.
err=s.Runtime.Db.Select(&revisions,"SELECT a.id, a.refid, a.orgid, a.documentid, a.ownerid, a.pageid, a.userid, a.contenttype, a.pagetype, a.title, /*a.body, a.rawbody, a.config,*/ a.created, a.revised, coalesce(b.email,'') as email, coalesce(b.firstname,'') as firstname, coalesce(b.lastname,'') as lastname, coalesce(b.initials,'') as initials, coalesce(p.revisions, 0) as revisions FROM revision a LEFT JOIN user b ON a.userid=b.refid LEFT JOIN page p ON a.pageid=p.refid WHERE a.orgid=? AND a.documentid=? AND a.pagetype='section' ORDER BY a.id DESC",ctx.OrgID,documentID)
iferr!=nil{
err=errors.Wrap(err,"get document revisions")
return
}
iflen(revisions)==0{
revisions=[]page.Revision{}
}
return
}
// DeletePageRevisions deletes all of the page revision records for a given pageID.