def get_users(cls, queryParams): queryParams = json.loads(queryParams) if "f" in queryParams: # Give only selected columns f = queryParams["f"].split(',') del queryParams["f"] sql, args = data_adaptor.create_select("users", queryParams, f) res, data = data_adaptor.run_q(sql=sql, args=args, fetch=True) else: # Give all columns sql, args = data_adaptor.create_select("users", queryParams, "*") res, data = data_adaptor.run_q(sql=sql, args=args, fetch=True) if data is not None: # Compute links for each returned user for x in data: x["links"] = [{ "rel": "profile", "href": "/api/profile?userid=" + x["id"], "method": "GET" }, { "rel": "profile", "href": "/api/profile", "method": "POST" }] del x['auto_id'] if data is not None: result = data else: result = None return result
def retrieve_by_key(cls, key_fields, fields): t_name = cls.get_table_name() kcs = cls.get_primary_key_columns() tmp = dict(zip(kcs, key_fields)) sql, args = da.create_select(t_name, template=tmp, fields=fields) res, d = da.run_q(sql, args=args, fetch=True) return d
def get_users(cls, params, fields): sql, args = data_adaptor.create_select(table_name="users", template=params, fields=fields) res, data = data_adaptor.run_q(sql, args) if data is not None and len(data) > 0: return data else: return None
def get_profile_by_params_and_fields(cls, params=None, fields=None): sql, args = data_adaptor.create_select("ebdb.profile", params, fields) res, data = data_adaptor.run_q(sql=sql, args=args, fetch=True) if data is not None and len(data) > 0: result = data else: result = None return result
def get_user_by_email(cls, email): sql, args = data_adaptor.create_select(table_name="users", template={"email": email}, fields=["*"]) res, data = data_adaptor.run_q(sql=sql, args=args, fetch=True) if data is not None and len(data) > 0: result = data[0] else: result = None return result
def get_profile_by_id(cls, pid): sql, args = data_adaptor.create_select( table_name="profile", template={"profile_id": pid}, fields=[ "user_id", "profile_id", "element_type AS type", "element_subtype AS subtype", "element_value AS value" ]) res, data = data_adaptor.run_q(sql, args=args) return data
def update_profile(cls, param_profile, update_template, data): result = None conn = None cursor = None try: conn = data_adaptor._get_default_connection() cursor = conn.cursor() # a wrapper function helps to pass params def run_q(sql_, args_): return data_adaptor.run_q(sql_, args_, cur=cursor, conn=conn, commit=False) sql, args = data_adaptor.create_select( table_name="profile_entries", template=update_template) _, prev_data = run_q(sql, args) if prev_data is not None and len(prev_data) > 0: sql, args = data_adaptor.create_update( table_name="profile_entries", new_values=data, template=update_template) res, _ = run_q(sql, args) if res != 1: raise Exception('cannot update data!') else: # get new Etag new_data = prev_data[0] for k, v in data.items(): new_data[k] = v result = new_data['profile_entry_id'] conn.commit() else: raise Exception('cannot retrieve data') except Exception as e: # rollback conn.rollback() raise e finally: # closing database connection. if cursor: cursor.close() if conn: conn.close() return result
def get_user(cls, user_info): try: sql, args = data_adaptor.create_select(table_name="users",template=user_info) res, data = data_adaptor.run_q(sql, args) except pymysql.err.IntegrityError as ie: if ie.args[0] == 1062: raise (DataException(DataException.duplicate_key)) else: raise DataException() except Exception as e: raise DataException() return res
def get_by_email(cls, email, fields): try: sql, args = data_adaptor.create_select(table_name="users", template={"email":email}, fields=fields) res, data = data_adaptor.run_q(sql, args) except Exception as e: raise DataException() if data is not None and len(data) > 0: result = data[0] else: result = None return result
def query_by_parameters(cls, params, fields): try: sql, args = data_adaptor.create_select(table_name="users", template=params, fields=fields) res, data = data_adaptor.run_q(sql, args) except pymysql.err.IntegrityError as ie: if ie.args[0] == 1062: raise (DataException(DataException.duplicate_key)) else: raise DataException() except Exception as e: raise DataException() return data
def get_user_profile(cls, params, fields): sql, args = data_adaptor.create_select(table_name="profile_entries", template=params, fields=fields) res, data = data_adaptor.run_q(sql, args) if data is not None and len(data) > 0: result = data else: result = None return result
def get_by_query(cls, temp, cols): query = data_adaptor.create_select('baseball.users', template=temp, fields=cols) res, data = data_adaptor.run_q(sql=query[0], args=(query[1]), fetch=True) if data is not None and len(data) > 0: result = data[0] else: result = None return result
def validate_info(cls, user_info): try: sql, args = data_adaptor.create_select( table_name="users", template={"email": user_info}, fields=["password"]) res, data = data_adaptor.run_q(sql, args=args) if res != 1: res = None else: res = data[0].get("password") except Exception as exp: print("Error: validate_info\n", exp) raise DataException() return res
def resource_by_template(primary_key_value=None): try: # Parse the incoming request into an application specific format. context = log_and_extract_input() template = { 'email': primary_key_value } if primary_key_value else context.get('query_params', {}) fields = context.get('query_params', {}).pop('f', None) if fields: fields = fields.split(',') if request.method == 'GET': sql, args = DataAdaptor.create_select(table_name='users', template=template, fields=fields) res, data = DataAdaptor.run_q(sql, args) if res and len(data) > 0: result = json.dumps(data, default=str) rsp_data = result rsp_status = 200 rsp_txt = str(rsp_data) full_rsp = Response(rsp_txt, status=rsp_status, content_type="application/json") return full_rsp else: rsp_status = 404 rsp_txt = "Not Found" full_rsp = Response(rsp_txt, status=rsp_status, content_type="application/json") return full_rsp except Exception as e: print(e) rsp_txt = "Internal Error" rsp_status = 504 full_rsp = Response(rsp_txt, status=rsp_status, content_type="application/json") return full_rsp
def get_comments_of_post(cls, post_id): try: sql, args = data_adaptor.create_select( table_name="comments", fields="*", template={"to_post": post_id}) res, data = data_adaptor.run_q(sql=sql, args=args, fetch=True) if res == 0: result = json.dumps([]) else: result = json.dumps(data, indent=4, sort_keys=True, default=str) except Exception as exp: raise DataException() return result
def resource_by_template(primary_key_value=None): try: inputs = log_and_extract_input(demo) template = {"email":primary_key_value} if primary_key_value else inputs.get("query_params", {}) if "f" in template: fields = template["f"] template.pop("f") else: fields = None if fields: fields = fields.split(',') else: fields = ["*"] if request.method == "GET": sql, args = DataAdaptor.create_select(table_name="users", template=template, fields=fields) res, data = DataAdaptor.run_q(sql, args) if res and len(data) > 0: result = json.dumps(data, default=str) rsp_data = result rsp_status = 200 rsp_txt = str(rsp_data) full_rsp = Response(rsp_txt, status=rsp_status, content_type="application/json") full_rsp.headers["Access-Control-Allow-Origin"] = "*" return full_rsp else: rsp_status = 404 rsp_txt = "Not Found" full_rsp = Response(rsp_txt, status=rsp_status, content_type="application/json") full_rsp.headers["Access-Control-Allow-Origin"] = "*" return full_rsp except Exception as e: print(e) rsp_txt = "Internal Error" rsp_status = 504 full_rsp = Response(rsp_txt, status=rsp_status, content_type="application/json") full_rsp.headers["Access-Control-Allow-Origin"] = "*" return full_rsp
def delete_profile(cls, profile_id): result = None sql, args = data_adaptor.create_select( table_name="profile_entries", template={"profile_entry_id": profile_id}) _, prev_data = data_adaptor.run_q(sql, args) if prev_data is not None and len(prev_data) > 0: sql, args = data_adaptor.delete( table_name="profile_entries", template={"profile_entry_id": profile_id}) result, _ = data_adaptor.run_q(sql, args) if result != 1: result = None else: return result return "Completed"
def get_user_status(cls, email): sql, args = data_adaptor.create_select(table_name="users", template={"email": email}, fields=["status"]) res, data = data_adaptor.run_q(sql=sql, args=args, fetch=True) return data[0]['status'] if res == 1 else None
def retrieve(cls, template, fields=None, limit=None, offset=None, orderby=None): t_name = cls.get_table_name() sql, args = da.create_select(t_name, template=template, fields=fields) res, d = da.run_q(sql, args=args, fetch=True) return d