|
@@ -0,0 +1,163 @@
|
|
|
+class CloudObject{
|
|
|
+ id
|
|
|
+ className
|
|
|
+ data = {}
|
|
|
+ constructor(className){
|
|
|
+ this.className = className
|
|
|
+ }
|
|
|
+ toPointer(){
|
|
|
+ return {"__type":"Pointer","className":this.className,"objectId":this.id}
|
|
|
+ }
|
|
|
+ set(json){
|
|
|
+ Object.keys(json).forEach(key=>{
|
|
|
+ if(["objectId","id","createdAt","updatedAt","ACL"].indexOf(key)>-1){
|
|
|
+ return
|
|
|
+ }
|
|
|
+ this.data[key] = json[key]
|
|
|
+ })
|
|
|
+ }
|
|
|
+ get(key){
|
|
|
+ return this.data[key] || null
|
|
|
+ }
|
|
|
+ async save(){
|
|
|
+ let method = "POST"
|
|
|
+ let url = "http://dev.fmode.cn:1337/parse/classes/" + this.className
|
|
|
+ // 更新
|
|
|
+ if(this.id){
|
|
|
+ url += "/"+this.id
|
|
|
+ method = "PUT"
|
|
|
+ }
|
|
|
+ let body = JSON.stringify(this.data)
|
|
|
+ let response = await fetch(url, {
|
|
|
+ "headers": {
|
|
|
+ "content-type": "application/json;charset=UTF-8",
|
|
|
+ "x-parse-application-id": "dev"
|
|
|
+ },
|
|
|
+ "body": body,
|
|
|
+ "method": method,
|
|
|
+ "mode": "cors",
|
|
|
+ "credentials": "omit"
|
|
|
+ });
|
|
|
+ let result = await response?.json();
|
|
|
+ if(result?.error){
|
|
|
+ console.error(result?.error)
|
|
|
+ }
|
|
|
+ if(result?.objectId){this.id = result?.objectId}
|
|
|
+ return this
|
|
|
+ }
|
|
|
+ async destory(){
|
|
|
+ if(!this.id) return
|
|
|
+ let response = await fetch("http://dev.fmode.cn:1337/parse/classes/Doctor/"+this.id, {
|
|
|
+ "headers": {
|
|
|
+ "x-parse-application-id": "dev"
|
|
|
+ },
|
|
|
+ "body": null,
|
|
|
+ "method": "DELETE",
|
|
|
+ "mode": "cors",
|
|
|
+ "credentials": "omit"
|
|
|
+ });
|
|
|
+ let result = await response?.json();
|
|
|
+ if(result){
|
|
|
+ this.id = null
|
|
|
+ }
|
|
|
+ return true
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+class CloudQuery{
|
|
|
+ className
|
|
|
+ constructor(className){
|
|
|
+ this.className = className
|
|
|
+ }
|
|
|
+
|
|
|
+ whereOptions = {}
|
|
|
+ greaterThan(key,value){
|
|
|
+ if(!this.whereOptions[key]) this.whereOptions[key] = {}
|
|
|
+ this.whereOptions[key]["$gt"] = value
|
|
|
+ }
|
|
|
+ greaterThanAndEqualTo(key,value){
|
|
|
+ if(!this.whereOptions[key]) this.whereOptions[key] = {}
|
|
|
+ this.whereOptions[key]["$gte"] = value
|
|
|
+ }
|
|
|
+ lessThan(key,value){
|
|
|
+ if(!this.whereOptions[key]) this.whereOptions[key] = {}
|
|
|
+ this.whereOptions[key]["$lt"] = value
|
|
|
+ }
|
|
|
+ lessThanAndEqualTo(key,value){
|
|
|
+ if(!this.whereOptions[key]) this.whereOptions[key] = {}
|
|
|
+ this.whereOptions[key]["$lte"] = value
|
|
|
+ }
|
|
|
+ equalTo(key,value){
|
|
|
+ this.whereOptions[key] = value
|
|
|
+ }
|
|
|
+
|
|
|
+ async get(id){
|
|
|
+ let url = "http://dev.fmode.cn:1337/parse/classes/"+this.className+"/"+id+"?"
|
|
|
+
|
|
|
+ let response = await fetch(url, {
|
|
|
+ "headers": {
|
|
|
+ "if-none-match": "W/\"1f0-ghxH2EwTk6Blz0g89ivf2adBDKY\"",
|
|
|
+ "x-parse-application-id": "dev"
|
|
|
+ },
|
|
|
+ "body": null,
|
|
|
+ "method": "GET",
|
|
|
+ "mode": "cors",
|
|
|
+ "credentials": "omit"
|
|
|
+ });
|
|
|
+ let json = await response?.json();
|
|
|
+ return json || {}
|
|
|
+ }
|
|
|
+ async find(){
|
|
|
+ let url = "http://dev.fmode.cn:1337/parse/classes/"+this.className+"?"
|
|
|
+
|
|
|
+ if(Object.keys(this.whereOptions)?.length){
|
|
|
+ let whereStr = JSON.stringify(this.whereOptions)
|
|
|
+ url += `where=${whereStr}`
|
|
|
+ }
|
|
|
+
|
|
|
+ let response = await fetch(url, {
|
|
|
+ "headers": {
|
|
|
+ "if-none-match": "W/\"1f0-ghxH2EwTk6Blz0g89ivf2adBDKY\"",
|
|
|
+ "x-parse-application-id": "dev"
|
|
|
+ },
|
|
|
+ "body": null,
|
|
|
+ "method": "GET",
|
|
|
+ "mode": "cors",
|
|
|
+ "credentials": "omit"
|
|
|
+ });
|
|
|
+ let json = await response?.json();
|
|
|
+ return json?.results || []
|
|
|
+ }
|
|
|
+ async first(){
|
|
|
+ let url = "http://dev.fmode.cn:1337/parse/classes/"+this.className+"?"
|
|
|
+
|
|
|
+ if(Object.keys(this.whereOptions)?.length){
|
|
|
+ let whereStr = JSON.stringify(this.whereOptions)
|
|
|
+ url += `where=${whereStr}`
|
|
|
+ }
|
|
|
+
|
|
|
+ let response = await fetch(url, {
|
|
|
+ "headers": {
|
|
|
+ "if-none-match": "W/\"1f0-ghxH2EwTk6Blz0g89ivf2adBDKY\"",
|
|
|
+ "x-parse-application-id": "dev"
|
|
|
+ },
|
|
|
+ "body": null,
|
|
|
+ "method": "GET",
|
|
|
+ "mode": "cors",
|
|
|
+ "credentials": "omit"
|
|
|
+ });
|
|
|
+ let json = await response?.json();
|
|
|
+ let exists = json?.results?.[0] || null
|
|
|
+ if(exists){
|
|
|
+ let existsObject = new CloudObject(this.className)
|
|
|
+ existsObject.set(exists)
|
|
|
+ existsObject.id = exists.objectId
|
|
|
+ existsObject.createdAt = exists.createdAt
|
|
|
+ existsObject.updatedAt = exists.updatedAt
|
|
|
+ return existsObject
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+module.exports.CloudObject = CloudObject
|
|
|
+module.exports.CloudQuery = CloudQuery
|