コード例 #1
0
ファイル: dao.py プロジェクト: clagomess/microforum
def get_seguidor_dao(param):
    sql = """
    SELECT
        tbu.seq_usuario,
        tbu.cod_usuario,
        tbu.nom_usuario,
        tbi.nom_imagem,
        tbi.des_diretorio
    FROM tb_seguidor tbs
        JOIN tb_usuario tbu
    """

    if param.get('tipo') == 'seguindo':
        sql += """
        -- seguindo
        ON tbu.seq_usuario = tbs.seq_usuario_seguido
        """
    if param.get('tipo') == 'seguidores':
        sql += """
        -- seguidores
        ON tbu.seq_usuario = tbs.seq_usuario_seguidor
        """

    sql += """
    LEFT JOIN tb_imagem tbi
        ON tbi.seq_imagem = tbu.seq_imagem
    WHERE
    """

    if param.get('tipo') == 'seguindo':
        sql += """
        -- seguindo
        tbs.seq_usuario_seguidor = %(seq_usuario)s
        """

    if param.get('tipo') == 'seguidores':
        sql += """
        -- seguidores
        tbs.seq_usuario_seguido = %(seq_usuario)s
        """

    sql += """
    ORDER BY tbs.dat_seguidor DESC
    OFFSET 0
    LIMIT 12
    """

    bind_param = {
        'seq_usuario': param.get('seq_usuario')
    }

    if len(bind_param):
        cursor = connection.cursor()
        cursor.execute(sql, bind_param)
        to_return = dictfetchall(cursor)
    else:
        to_return = []

    return to_return
コード例 #2
0
def get_seguidor_dao(param):
    sql = """
    SELECT
        tbu.seq_usuario,
        tbu.cod_usuario,
        tbu.nom_usuario,
        tbi.nom_imagem,
        tbi.des_diretorio
    FROM tb_seguidor tbs
        JOIN tb_usuario tbu
    """

    if param.get('tipo') == 'seguindo':
        sql += """
        -- seguindo
        ON tbu.seq_usuario = tbs.seq_usuario_seguido
        """
    if param.get('tipo') == 'seguidores':
        sql += """
        -- seguidores
        ON tbu.seq_usuario = tbs.seq_usuario_seguidor
        """

    sql += """
    LEFT JOIN tb_imagem tbi
        ON tbi.seq_imagem = tbu.seq_imagem
    WHERE
    """

    if param.get('tipo') == 'seguindo':
        sql += """
        -- seguindo
        tbs.seq_usuario_seguidor = %(seq_usuario)s
        """

    if param.get('tipo') == 'seguidores':
        sql += """
        -- seguidores
        tbs.seq_usuario_seguido = %(seq_usuario)s
        """

    sql += """
    ORDER BY tbs.dat_seguidor DESC
    OFFSET 0
    LIMIT 12
    """

    bind_param = {'seq_usuario': param.get('seq_usuario')}

    if len(bind_param):
        cursor = connection.cursor()
        cursor.execute(sql, bind_param)
        to_return = dictfetchall(cursor)
    else:
        to_return = []

    return to_return
コード例 #3
0
ファイル: dao.py プロジェクト: clagomess/microforum
def get_usuario_dao(param):
    sql = """
    SELECT
      tbu.seq_usuario,
      tbu.cod_usuario,
      tbu.nom_usuario,
      tbu.num_seguidor,
      tbu.num_seguindo,
      tbi.nom_imagem,
      tbi.des_diretorio,
      tbs.dat_seguidor AS dat_seguindo -- vinculo com auth
    FROM tb_usuario tbu
    LEFT JOIN tb_imagem tbi
      ON tbi.seq_imagem = tbu.seq_imagem
    LEFT JOIN tb_seguidor tbs
      ON tbs.seq_usuario_seguido = tbu.seq_usuario
      AND tbs.seq_usuario_seguidor = %(seq_usuario_auth)s
    WHERE tbu.sit_ativo = 1
    """

    bind_param = {
        'seq_usuario_auth': param.get('seq_usuario_auth')
    }

    bind_sql = []

    if param.get('seq_usuario'):
        bind_param['seq_usuario'] = param.get('seq_usuario')
        bind_sql.append("AND tbu.seq_usuario = %(seq_usuario)s")

    if param.get('cod_usuario'):
        bind_param['cod_usuario'] = param.get('cod_usuario')
        bind_sql.append("AND tbu.cod_usuario = %(cod_usuario)s")

    sql += "\n".join(tuple(bind_sql))

    if len(bind_param):
        cursor = connection.cursor()
        cursor.execute(sql, bind_param)
        to_return = dictfetchall(cursor)

        if len(to_return):
            to_return = to_return[0]
    else:
        to_return = {}

    return to_return
コード例 #4
0
def get_usuario_dao(param):
    sql = """
    SELECT
      tbu.seq_usuario,
      tbu.cod_usuario,
      tbu.nom_usuario,
      tbu.num_seguidor,
      tbu.num_seguindo,
      tbi.nom_imagem,
      tbi.des_diretorio,
      tbs.dat_seguidor AS dat_seguindo -- vinculo com auth
    FROM tb_usuario tbu
    LEFT JOIN tb_imagem tbi
      ON tbi.seq_imagem = tbu.seq_imagem
    LEFT JOIN tb_seguidor tbs
      ON tbs.seq_usuario_seguido = tbu.seq_usuario
      AND tbs.seq_usuario_seguidor = %(seq_usuario_auth)s
    WHERE tbu.sit_ativo = 1
    """

    bind_param = {'seq_usuario_auth': param.get('seq_usuario_auth')}

    bind_sql = []

    if param.get('seq_usuario'):
        bind_param['seq_usuario'] = param.get('seq_usuario')
        bind_sql.append("AND tbu.seq_usuario = %(seq_usuario)s")

    if param.get('cod_usuario'):
        bind_param['cod_usuario'] = param.get('cod_usuario')
        bind_sql.append("AND tbu.cod_usuario = %(cod_usuario)s")

    sql += "\n".join(tuple(bind_sql))

    if len(bind_param):
        cursor = connection.cursor()
        cursor.execute(sql, bind_param)
        to_return = dictfetchall(cursor)

        if len(to_return):
            to_return = to_return[0]
    else:
        to_return = {}

    return to_return
コード例 #5
0
def get_post_dao(param):
    """
    param {
        tipo: 'amigo', 'rede', 'filho'+seq_post_pai
        #ou campos definidos#
        seq_post_pai, seq_post, seq_usuario

        dat_post: > ?
        limit: (default 10)
        offset: (default 0)
    }
    """
    sql = """
    SELECT
      tpp.seq_post,
      tpp.seq_post_pai,
      tpp.cod_post,
      tpp.des_post,
      tpp.dat_post,
      tpp.num_like,
      tpp.num_post_filho,
      tbip.des_diretorio AS des_diretorio_post,
      tbip.nom_imagem AS nom_imagem_post,
      tbu.seq_usuario,
      tbu.cod_usuario,
      tbu.nom_usuario,
      tbiu.des_diretorio AS des_diretorio_usuario,
      tbiu.nom_imagem AS nom_imagem_usuario
    FROM tb_post AS tpp
    JOIN tb_usuario AS tbu
      ON tbu.seq_usuario = tpp.seq_usuario
    LEFT JOIN tb_imagem AS tbip
      ON tbip.seq_imagem = tpp.seq_imagem
    LEFT JOIN tb_imagem AS tbiu
      ON tbiu.seq_imagem = tbu.seq_imagem
    """

    bind_param = {}
    bind_sql = []

    if param.get('tipo') == 'amigo':
        bind_param['seq_usuario'] = param.get('seq_usuario')
        bind_sql.append("""
        JOIN tb_seguidor tbs
          ON tbs.seq_usuario_seguidor = %(seq_usuario)s
          AND tbs.seq_usuario_seguido = tbu.seq_usuario
        """)

    if param.get('tipo') == 'filho':
        bind_sql.append("""
        JOIN (
            SELECT
              row_number() OVER(PARTITION BY seq_post_pai ORDER BY dat_post DESC) AS rownum,
              seq_post
            FROM tb_post
            WHERE seq_post_pai IN(%s)
        ) vtb
            ON vtb.seq_post = tpp.seq_post
            AND vtb.rownum <= 3
        """ % ", ".join(str(seq) for seq in param.get('seq_post_pai')))

    bind_sql.append("\nWHERE 1=1\n")

    if param.get('seq_post_pai') and not param.get('tipo'):
        bind_param['seq_post_pai'] = param.get('seq_post_pai')
        bind_sql.append("AND tpp.seq_post_pai = %(seq_post_pai)s")
    else:
        if param.get('tipo') != 'filho':
            bind_sql.append("AND tpp.seq_post_pai IS NULL")

    if param.get('seq_post'):
        bind_param['seq_post'] = param.get('seq_post')
        bind_sql.append("AND tpp.seq_post = %(seq_post)s")

    if param.get('cod_post'):
        bind_param['cod_post'] = param.get('cod_post')
        bind_sql.append("AND tpp.cod_post = %(cod_post)s")

    if param.get('seq_usuario') and not param.get('tipo'):
        bind_param['seq_usuario'] = param.get('seq_usuario')
        bind_sql.append("AND tbu.seq_usuario = %(seq_usuario)s")

    if param.get('dat_post'):
        bind_param['dat_post'] = param.get('dat_post')
        bind_sql.append("AND tpp.dat_post > %(dat_post)s")

    if param.get('seq_pais'):
        bind_param['seq_pais'] = param.get('seq_pais')
        bind_sql.append("AND tbu.seq_pais = %(seq_pais)s")

    if param.get('tipo') == 'amigo':
        bind_param['seq_usuario'] = param.get('seq_usuario')
        bind_sql.append("AND tbu.seq_usuario <> %(seq_usuario)s")

    if 'limit' not in param:
        param['limit'] = 10

    if 'offset' not in param:
        param['offset'] = 0

    bind_param['offset'] = param.get('offset')
    bind_param['limit'] = param.get('limit')

    bind_sql.append("""
    ORDER BY tpp.dat_post DESC
    OFFSET %(offset)s
    LIMIT %(limit)s
    """)

    sql += "\n".join(tuple(bind_sql))

    cursor = connection.cursor()
    cursor.execute(sql, bind_param)

    return dictfetchall(cursor)