def addJSONLinksByUser(data, userId): #FIXME: change insertion algorithm for sql queries that inserting data #as zip, json or ... #curTime = time.time() query = {"linksQuery":StringHolder("INSERT INTO link (id, user_id, url, url_hash, title, description, type_name, modified_at) VALUES\n"), "updateLinkSubQuery":{"id":StringHolder(""), "title":StringHolder(""), "description":StringHolder(""), "type_name":StringHolder(""), "modified_at":StringHolder("")}, "tagsQuery":StringHolder("INSERT INTO tag (id, user_id, name) VALUES\n"), "mapsQuery":StringHolder("INSERT INTO link_tag_map (tag_id, link_id) VALUES\n"), "mdQuery":StringHolder("INSERT INTO meta_data (link_id, l_key, value) VALUES\n")} tags = [] savedTags = tagQM.getTagNames(userId) savedLinks = linkQM.getLinkUrlsAndIds(userId) parseData(userId, data, tags, query, savedLinks, savedTags) #print "calculating time: " + str(utils.timeDifference(curTime)) + " ms" #curTime = time.time() conn = db.connect() cursor = conn.cursor() if not query["linksQuery"].value.endswith("VALUES\n"): cursor.execute(query["linksQuery"].value[:-2]) if not query["mdQuery"].value.endswith("VALUES\n"): cursor.execute(query["mdQuery"].value[:-2]) if not query["tagsQuery"].value.endswith("VALUES\n"): cursor.execute(query["tagsQuery"].value[:-2]) #FIXME : check if link refer to another tag if not query["mapsQuery"].value.endswith("VALUES\n"): cursor.execute(query["mapsQuery"].value[:-2]) if query["updateLinkSubQuery"]["id"].value != "": cursor.execute(buildUpdateQuery(query["updateLinkSubQuery"])) conn.commit() cursor.close() #print "database request time: " + str(utils.timeDifference(curTime)) + " ms" return