import pandas as pd import numpy as np import crud import schemas from db import get_database from db.ckdb import get_ck_db from models.user_label import UserClusterDef async def save(db, data_in, act_user, game): return await crud.user_label.save(db, data_in, act_user, game) async def read(db, data_in): return await crud.user_label.read(db, data_in) async def get_list(db, game): return await crud.user_label.get_list(db, game) async def get_detail(db, label_id): return await crud.user_label.get(db, label_id) async def delete(db, label_id): await crud.user_label.delete_id(db, label_id) return True async def json2sql(game, date_in): user_cluster_def = UserClusterDef(game, date_in) await user_cluster_def.init() return user_cluster_def.to_sql() async def get_cluster_user(game, cluster_name, page, limit): user_cluster_def = UserClusterDef(game, cluster_name, page=page, limit=limit) await user_cluster_def.init() sql = user_cluster_def.cluster_user_list() ckdb = get_ck_db() df = await ckdb.query_dataframe(sql) df.fillna(0, inplace=True) return { 'columns': df.columns.tolist(), 'values': df.values.tolist() } async def get_cluster_user_count(game, date_in): user_cluster_def = UserClusterDef(game, date_in) await user_cluster_def.init() sql = user_cluster_def.cluster_user_count() ckdb = get_ck_db() df = await ckdb.query_dataframe(sql) return {'num': int(df.loc[0, 'values'])} async def copy_to(to_game, ids, act_name): db = get_database() docs = await crud.user_label.find_ids(db, *ids) for item in docs: data = schemas.UserLabelSave(**item) await crud.user_label.save(db, data, act_name, to_game) return True