Skip to content

Instantly share code, notes, and snippets.

@calvinmetcalf
Last active September 5, 2020 18:01
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save calvinmetcalf/4520837 to your computer and use it in GitHub Desktop.
class PouchCore
constructor: (@remoteUrl,@onChange)->
if @remoteUrl.slice(0,4)=="http" #did we get a real url?
parts = @remoteUrl.split("/") #split the url bu by the slashes
@_dbName = parts.pop() #assign the last part as the db name
while @_dbName == "" #unless it is an empty string
@_dbName = parts.pop()#repeat until you find one
Pouch @_dbName, (e, db) => #making the local db
unless e #error would imply we are on an old browser
@db = db
@db.changes(
continuous : true
include_docs : true
onChange : @onChange
)
#we replicate
@db.replicate.to @remoteUrl, {continuous: true} #yeah nobody noticed the missing coma
@db.replicate.from @remoteUrl, {continuous: true}
@
else #there was an error lets try again but just with the remote one
Pouch @remoteUrl, (e, db) =>
unless e
@db
@db.changes(
continuous : true
include_docs : true
onChange : @onChange
)
@
else
return "yeah something went wrong"
add: (doc, cb = ()-> true) ->
unless "_id" of doc
@db.post doc, cb
else if "_id" of doc and doc._id.slice(0,8) != "_design/"
@db.put doc, cb
else if doc.length
@db.bulkDocs doc, cb
get: (id, cb = ()-> true) ->
@db.get id, cb
remove: (id, cb = ()-> true) ->
@get id, (err, doc) =>
@db.remove doc, cb unless err
cb("err") if err
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment