R/psql_carf_query.R

Defines functions psql_carf_query

Documented in psql_carf_query

#' PostgreSQL full-text search
#'
#' @param con connection
#' @param tbl table
#' @param assuntos Vetor de assuntos
#' @param contribuintes vetor de contribuintes
#' @param acordaos vetor de acórdãos
#' @param processos vetor de processos
#' @param start start date in the format "yyyy-mm-dd"
#' @param end end date in the format "yyyy-mm-dd"
#' @param query words to be searched. Separate by "&" (AND), "|" (OR),
#'     or "<->" (FOLLOWED BY) to search for more than one word.
#'
#' @return A data.frame with the cjpg decisions according to
#' @export
#'
#' @examples
#' \dontrun{
#' dplyr::copy_to(con, "julgados", df)
#' df <- psql_carf_query(con, "julgados", "IRPF")
#' }
psql_carf_query <- function(con, tbl, query = "",assuntos = NULL,contribuintes = NULL, acordaos = NULL, processos = NULL,start = "2019-01-01", end = NULL) {
  target <- "document_tokens"

  if (is.null(end)) end <- Sys.Date()

  start <- as.Date(start)

  if (!is.null(assuntos) & !is.null(contribuintes) & !is.null(acordaos) & !is.null(processos) & query != "" ){
    q <- glue::glue_sql("SELECT acordao, processo, contribuinte, data_sessao, ementa, relator,
    dispositivo, decisao, votacao, vencido1, vencido2, vencido3,
    assunto, subassunto1, subassunto2, subassunto3, inteiro_teor
                        FROM {`tbl`}
                        WHERE {`tbl`}.assunto IN ({assuntos*})
                        AND {`tbl`}.contribuinte IN ({contribuintes*})
                        AND {`tbl`}.data_sessao BETWEEN ({start}) AND ({end})
                        AND {`tbl`}.acordao IN ({acordaos*})
                        AND {`tbl`}.processo IN ({processos*})
                       AND {`tbl`}.{`target`} @@ websearch_to_tsquery({query})", .con = con)

  } else if (is.null(assuntos) & !is.null(contribuintes) & !is.null(acordaos) & !is.null(processos) & query != "" ){
    q <- glue::glue_sql("SELECT acordao, processo, contribuinte, data_sessao, ementa, relator,
    dispositivo, decisao, votacao, vencido1, vencido2, vencido3,
    assunto, subassunto1, subassunto2, subassunto3, inteiro_teor
                        FROM {`tbl`}
                        WHERE {`tbl`}.contribuinte IN ({contribuintes*})
                        AND {`tbl`}.data_sessao BETWEEN ({start}) AND ({end})
                        AND {`tbl`}.acordao IN ({acordaos*})
                        AND {`tbl`}.processo IN ({processos*})
                       AND {`tbl`}.{`target`} @@ websearch_to_tsquery({query})", .con = con)

  } else if (!is.null(assuntos) & is.null(contribuintes) & !is.null(acordaos) & !is.null(processos) & query != "" ){
    q <- glue::glue_sql("SELECT acordao, processo, contribuinte, data_sessao, ementa, relator,
    dispositivo, decisao, votacao, vencido1, vencido2, vencido3,
    assunto, subassunto1, subassunto2, subassunto3, inteiro_teor
                        FROM {`tbl`}
                        WHERE {`tbl`}.assunto IN ({assuntos*})
                        AND {`tbl`}.data_sessao BETWEEN ({start}) AND ({end})
                        AND {`tbl`}.acordao IN ({acordaos*})
                        AND {`tbl`}.processo IN ({processos*})
                       AND {`tbl`}.{`target`} @@ websearch_to_tsquery({query})", .con = con)

  } else if (!is.null(assuntos) & !is.null(contribuintes) & is.null(acordaos) & !is.null(processos) & query != "" ){

    q <- glue::glue_sql("SELECT acordao, processo, contribuinte, data_sessao, ementa, relator,
    dispositivo, decisao, votacao, vencido1, vencido2, vencido3,
    assunto, subassunto1, subassunto2, subassunto3, inteiro_teor
                        FROM {`tbl`}
                        WHERE {`tbl`}.assunto IN ({assuntos*})
                        AND {`tbl`}.contribuinte IN ({contribuintes*})
                        AND {`tbl`}.data_sessao BETWEEN ({start}) AND ({end})
                        AND {`tbl`}.processo IN ({processos*})
                       AND {`tbl`}.{`target`} @@ websearch_to_tsquery({query})", .con = con)

  } else if (!is.null(assuntos) & !is.null(contribuintes) & !is.null(acordaos) & is.null(processos) & query != "" ){
    q <- glue::glue_sql("SELECT acordao, processo, contribuinte, data_sessao, ementa, relator,
    dispositivo, decisao, votacao, vencido1, vencido2, vencido3,
    assunto, subassunto1, subassunto2, subassunto3, inteiro_teor
                        FROM {`tbl`}
                        WHERE {`tbl`}.assunto IN ({assuntos*})
                        AND {`tbl`}.contribuinte IN ({contribuintes*})
                        AND {`tbl`}.data_sessao BETWEEN ({start}) AND ({end})
                        AND {`tbl`}.acordao IN ({acordaos*})
                       AND {`tbl`}.{`target`} @@ websearch_to_tsquery({query})", .con = con)


  } else if (!is.null(assuntos) & !is.null(contribuintes) & !is.null(acordaos) & is.null(processos) & query == "" ) {
    q <- glue::glue_sql("SELECT acordao, processo, contribuinte, data_sessao, ementa, relator,
    dispositivo, decisao, votacao, vencido1, vencido2, vencido3,
    assunto, subassunto1, subassunto2, subassunto3, inteiro_teor
                        FROM {`tbl`}
                        WHERE {`tbl`}.assunto IN ({assuntos*})
                        AND {`tbl`}.contribuinte IN ({contribuintes*})
                        AND {`tbl`}.data_sessao BETWEEN ({start}) AND ({end})
                        AND {`tbl`}.acordao IN ({acordaos*})
                        AND {`tbl`}.processo IN ({processos*})", .con = con)

  } else

    q <- glue::glue_sql("SELECT acordao, processo, contribuinte, data_sessao, ementa, relator,
    dispositivo, decisao, votacao, vencido1, vencido2, vencido3,
    assunto, subassunto1, subassunto2, subassunto3, inteiro_teor
                        FROM {`tbl`}
                        WHERE {`tbl`}.{`target`} @@ websearch_to_tsquery({query})", .con = con)


  df <- DBI::dbGetQuery(con, q)
}
jjesusfilho/carf documentation built on Nov. 4, 2019, 2:44 p.m.