{
  "_id": "6a58c46b09eb0996dd68af7a",
  "Package": "certedb",
  "Title": "A Certe R Package for Connecting to Databases",
  "Version": "1.15.0",
  "Authors@R": "c(\nperson(given = c(\"Matthijs\", \"S.\"),\nfamily = \"Berends\",\nrole = c(\"aut\", \"cre\"),\nemail = \"m.berends@certe.nl\"),\nperson(given = c(\"Erwin\", \"E.\", \"A.\"),\nfamily = \"Hassing\",\nrole = c(\"aut\"),\nemail = \"e.hassing@certe.nl\"),\nperson(given = c(\"Erwin\"),\nfamily = \"Dijkstra\",\nrole = c(\"aut\"),\nemail = \"e.dijkstra@certe.nl\"),\nperson(given = \"Certe Medical Diagnostics & Advice Foundation\",\nrole = c(\"cph\", \"fnd\")))",
  "Description": "A Certe R Package for connecting to internal Certe cBases\nand local DuckDB databases. This package is part of the\n'certedata' universe.",
  "URL": "https://certe-medical-epidemiology.github.io/certedb,\nhttps://github.com/certe-medical-epidemiology/certedb",
  "License": "GPL-2",
  "Encoding": "UTF-8",
  "Roxygen": "list(markdown = TRUE)",
  "RoxygenNote": "7.3.3",
  "Config/testthat/edition": "2",
  "Config/pak/sysreqs": "libcairo2-dev cmake libfontconfig1-dev\nlibfreetype6-dev libfribidi-dev make libharfbuzz-dev libicu-dev\nlibjpeg-dev libpng-dev libtiff-dev libuv1-dev libwebp-dev\nlibxml2-dev unixodbc-dev libssl-dev libx11-dev xz-utils\nzlib1g-dev",
  "Repository": "https://certe-medical-epidemiology.r-universe.dev",
  "Date/Publication": "2026-07-16 10:29:49 UTC",
  "RemoteUrl": "https://github.com/certe-medical-epidemiology/certedb",
  "RemoteRef": "HEAD",
  "RemoteSha": "4cf17befef8fbc044b7a2dd80fe6c7de14a4d610",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-07-16 11:39:46 UTC",
    "User": "root"
  },
  "Author": "Matthijs S. Berends [aut, cre],\nErwin E. A. Hassing [aut],\nErwin Dijkstra [aut],\nCerte Medical Diagnostics & Advice Foundation [cph, fnd]",
  "Maintainer": "Matthijs S. Berends <m.berends@certe.nl>",
  "_user": "certe-medical-epidemiology",
  "_type": "src",
  "_file": "certedb_1.15.0.tar.gz",
  "_fileid": "https://r2.ropensci.org/60e356edec0379dbced78330dd5b8eed86538d7a2ba85801abf9200dbed1d6d8",
  "_filesize": 186013,
  "_sha256": "60e356edec0379dbced78330dd5b8eed86538d7a2ba85801abf9200dbed1d6d8",
  "_expires": "2026-10-24T11:45:45.000Z",
  "_created": "2026-07-16T11:39:46.000Z",
  "_published": "2026-07-16T11:45:47.506Z",
  "_jobs": [
    {
      "job": 87610629727,
      "time": 308,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "8374217744"
    },
    {
      "job": 87610629693,
      "time": 269,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8374202561"
    },
    {
      "job": 87610629676,
      "time": 193,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "8374171196"
    },
    {
      "job": 87610629715,
      "time": 236,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8374189096"
    },
    {
      "job": 87609756080,
      "time": 267,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8374090723"
    },
    {
      "job": 87610629667,
      "time": 172,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "8374162560"
    },
    {
      "job": 87610629682,
      "time": 295,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "8374213143"
    },
    {
      "job": 87610629724,
      "time": 209,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "8374178241"
    },
    {
      "job": 87610629699,
      "time": 210,
      "config": "windows-release",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8374177710"
    }
  ],
  "_host": "GitHub-Actions",
  "_buildurl": "https://github.com/r-universe/certe-medical-epidemiology/actions/runs/29494977991",
  "_status": "success",
  "_upstream": "https://github.com/certe-medical-epidemiology/certedb",
  "_commit": {
    "id": "4cf17befef8fbc044b7a2dd80fe6c7de14a4d610",
    "author": "Matthijs Berends <31037261+msberends@users.noreply.github.com>",
    "committer": "GitHub <noreply@github.com>",
    "message": "Replace CSV query log with SQLite and structured join logging (#6)\n\n* Wrap log file write in tryCatch to prevent join failures\n\nThe write.table() call to the log file could cause \"connection not\nfound\" errors in subsequent joins if the file handle wasn't released\nin time. Wrapping in tryCatch allows the function to continue\ngracefully when the log write fails.\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01LhmWVCVnZmDdn1wBtY3Ca2\n\n* Replace CSV query log with SQLite for concurrent multi-user safety\n\nThe CSV log file caused \"connection not found\" errors when a join\nfollowed too quickly, and was vulnerable to file-locking conflicts\nwhen multiple team members ran queries simultaneously or had the\nfile open.\n\nSQLite with WAL mode and busy_timeout handles concurrent writes\ngracefully - writers queue instead of failing, and readers never\nblock writers.\n\nChanges:\n- Add R/query_log.R with write_query_log() and read_query_log()\n- Replace write.table() calls in get_diver_data() and certedb_getmmb()\n  with write_query_log()\n- Add RSQLite dependency\n- New structured columns: source_type, duration_secs\n- Log entries are now queryable with read_query_log()\n\n\n* Sanitise queries before logging: collapse large IN clauses\n\nQueries with large IN (...) clauses (e.g. 50,000 order IDs from\ncross-cBase joins) are now condensed to IN (<N values>) when more\nthan 5 values are present. This preserves the full query structure\nand filter logic without storing thousands of useless literal values.\n\nRemoves the limit_txt_length() truncation since sanitisation handles\nthe size problem at the right level.\n\n* Store join queries as structured metadata instead of bloated query text\n\nJoin queries from presets are now logged in a separate query_log_joins\ntable linked to the parent query by id. This avoids storing massive\nIN clauses with thousands of values while preserving all useful\nmetadata: which cBase was joined, join type, join columns, numbe",
    "time": 1784197789
  },
  "_maintainer": {
    "name": "Matthijs S. Berends",
    "email": "m.berends@certe.nl",
    "login": "msberends",
    "mastodon": "@msberends@mastodon.social",
    "linkedin": "https://LinkedIn.com/in/msberends",
    "description": "Medical epidemiologist/microbiologist, head of @umcg-mmbi-epidemiology and @certe-medical-epidemiology",
    "uuid": 31037261
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.1.0",
      "role": "Depends"
    },
    {
      "package": "certestyle",
      "role": "Imports"
    },
    {
      "package": "certetoolbox",
      "role": "Imports"
    },
    {
      "package": "AMR",
      "version": ">= 2.0.0",
      "role": "Imports"
    },
    {
      "package": "cli",
      "version": ">= 3.4.0",
      "role": "Imports"
    },
    {
      "package": "DBI",
      "version": ">= 1.0.0",
      "role": "Imports"
    },
    {
      "package": "dbplyr",
      "version": ">= 2.1.0",
      "role": "Imports"
    },
    {
      "package": "dplyr",
      "version": ">= 1.0.0",
      "role": "Imports"
    },
    {
      "package": "DT",
      "version": ">= 0.3.0",
      "role": "Imports"
    },
    {
      "package": "duckdb",
      "version": ">= 0.8.0",
      "role": "Imports"
    },
    {
      "package": "knitr",
      "version": ">= 1.40",
      "role": "Imports"
    },
    {
      "package": "odbc",
      "version": ">= 1.3.0",
      "role": "Imports"
    },
    {
      "package": "pillar",
      "version": ">= 1.8.0",
      "role": "Imports"
    },
    {
      "package": "shiny",
      "version": ">= 1.9.0",
      "role": "Imports"
    },
    {
      "package": "RSQLite",
      "version": ">= 2.3.0",
      "role": "Imports"
    },
    {
      "package": "rlang",
      "version": ">= 1.1.0",
      "role": "Imports"
    },
    {
      "package": "tidyr",
      "version": ">= 1.1.0",
      "role": "Imports"
    },
    {
      "package": "yaml",
      "version": ">= 2.2.1",
      "role": "Imports"
    },
    {
      "package": "callr",
      "role": "Suggests"
    },
    {
      "package": "clipr",
      "version": ">= 0.8.0",
      "role": "Suggests"
    },
    {
      "package": "connections",
      "role": "Suggests"
    },
    {
      "package": "RMariaDB",
      "role": "Suggests"
    },
    {
      "package": "rstudioapi",
      "role": "Suggests"
    },
    {
      "package": "sf",
      "role": "Suggests"
    },
    {
      "package": "stringr",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 2.0.0",
      "role": "Suggests"
    },
    {
      "package": "utils",
      "role": "Suggests"
    }
  ],
  "_owner": "certe-medical-epidemiology",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2025-31",
      "n": 2
    },
    {
      "week": "2025-32",
      "n": 2
    },
    {
      "week": "2026-06",
      "n": 1
    },
    {
      "week": "2026-08",
      "n": 3
    },
    {
      "week": "2026-14",
      "n": 1
    },
    {
      "week": "2026-21",
      "n": 2
    },
    {
      "week": "2026-29",
      "n": 1
    }
  ],
  "_tags": [],
  "_stars": 0,
  "_contributors": [
    {
      "user": "msberends",
      "count": 122,
      "uuid": 31037261
    },
    {
      "user": "erwinhassing",
      "count": 4,
      "uuid": 32546915
    }
  ],
  "_userbio": {
    "uuid": 92214397,
    "type": "organization",
    "name": "Certe Medical Epidemiology",
    "followers": 4,
    "description": "Repo collection of the non-profit organisation Certe, Department of Medical Epidemiology. Here to support open science."
  },
  "_downloads": {
    "count": 0,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/certedb"
  },
  "_devurl": "https://github.com/certe-medical-epidemiology/certedb",
  "_pkgdown": "https://certe-medical-epidemiology.github.io/certedb",
  "_searchresults": 1,
  "_quarto": true,
  "_topics": [
    "quarto"
  ],
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/certedb.html",
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/readme.html",
    "extra/readme.md",
    "manual.pdf"
  ],
  "_cranurl": false,
  "_exports": [
    "cbase_explorer",
    "certedb_getmmb",
    "certedb_getmmb_tat",
    "certedb_query",
    "db",
    "db_close",
    "db_connect",
    "db_drop_table",
    "db_has_table",
    "db_list_tables",
    "db_write_table",
    "di",
    "get_diver_data",
    "get_duckdb_data",
    "get_glims10_data",
    "get_preset",
    "gl",
    "mysql_init",
    "presets",
    "read_query_log"
  ],
  "_help": [
    {
      "page": "cbase_explorer",
      "title": "Search cBase Interactively",
      "topics": [
        "cbase_explorer"
      ]
    },
    {
      "page": "db_connect",
      "title": "Connect to a Certe Database",
      "topics": [
        "db_close",
        "db_connect"
      ]
    },
    {
      "page": "get_diver_data",
      "title": "Download Data from a Local or Remote Database",
      "topics": [
        "certedb_getmmb",
        "certedb_getmmb_tat",
        "certedb_query",
        "get_diver_data",
        "get_duckdb_data",
        "get_glims10_data"
      ]
    },
    {
      "page": "mysql_init",
      "title": "Initialise MySQL Connection for Connections Pane",
      "topics": [
        "mysql_init"
      ]
    },
    {
      "page": "presets",
      "title": "Available Presets for 'get_diver_data()'",
      "topics": [
        "get_preset",
        "presets"
      ]
    },
    {
      "page": "query_log",
      "title": "Read and Write the Query Log",
      "topics": [
        "read_query_log",
        "write_query_log"
      ]
    }
  ],
  "_pkglogo": "https://github.com/certe-medical-epidemiology/certedb/raw/HEAD/logo.svg",
  "_readme": "https://github.com/certe-medical-epidemiology/certedb/raw/HEAD/README.md",
  "_rundeps": [
    "AMR",
    "askpass",
    "AzureAuth",
    "AzureGraph",
    "backports",
    "base64enc",
    "bit",
    "bit64",
    "blob",
    "bslib",
    "cachem",
    "callr",
    "certeprojects",
    "certestyle",
    "certetoolbox",
    "cleaner",
    "cli",
    "clipr",
    "commonmark",
    "cpp11",
    "crayon",
    "crosstalk",
    "curl",
    "data.table",
    "DBI",
    "dbplyr",
    "digest",
    "dplyr",
    "DT",
    "duckdb",
    "evaluate",
    "fastmap",
    "flextable",
    "fontawesome",
    "fontBitstreamVera",
    "fontLiberation",
    "fontquiver",
    "fs",
    "gdtools",
    "generics",
    "glue",
    "highr",
    "hms",
    "htmltools",
    "htmlwidgets",
    "httpuv",
    "httr",
    "jose",
    "jquerylib",
    "jsonlite",
    "knitr",
    "later",
    "lazyeval",
    "lifecycle",
    "lubridate",
    "magrittr",
    "memoise",
    "Microsoft365R",
    "mime",
    "miniUI",
    "odbc",
    "officer",
    "openssl",
    "openxlsx2",
    "otel",
    "pillar",
    "pins",
    "pkgconfig",
    "prettyunits",
    "processx",
    "progress",
    "promises",
    "ps",
    "purrr",
    "quarto",
    "R6",
    "ragg",
    "rappdirs",
    "Rcpp",
    "readr",
    "rlang",
    "rmarkdown",
    "RSQLite",
    "rstudioapi",
    "rvest",
    "sass",
    "selectr",
    "shiny",
    "shinyjs",
    "shinyWidgets",
    "sourcetools",
    "stringi",
    "stringr",
    "sys",
    "systemfonts",
    "textshaping",
    "tibble",
    "tidyr",
    "tidyselect",
    "timechange",
    "tinytex",
    "tzdb",
    "utf8",
    "uuid",
    "vctrs",
    "viridisLite",
    "vroom",
    "whisker",
    "withr",
    "xfun",
    "xml2",
    "xtable",
    "yaml",
    "zip"
  ],
  "_score": 2.5440680443502757,
  "_indexed": true,
  "_nocasepkg": "certedb",
  "_universes": [
    "certe-medical-epidemiology",
    "msberends"
  ],
  "_previous": "1.14.7",
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "1.15.0",
      "date": "2026-07-16T11:43:32.000Z",
      "distro": "resolute",
      "commit": "4cf17befef8fbc044b7a2dd80fe6c7de14a4d610",
      "fileid": "https://r2.ropensci.org/be3b4dbf15294ffdd95cb7672e389d75f48d739714f24f1016362fb127c8fbf2",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/certe-medical-epidemiology/actions/runs/29494977991"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "1.15.0",
      "date": "2026-07-16T11:42:55.000Z",
      "distro": "resolute",
      "commit": "4cf17befef8fbc044b7a2dd80fe6c7de14a4d610",
      "fileid": "https://r2.ropensci.org/99d9aa8e44ed8f95798506d41373bb4f24807d9fe7daf03554a5b3e1e3a9e736",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/certe-medical-epidemiology/actions/runs/29494977991"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "1.15.0",
      "date": "2026-07-16T11:42:15.000Z",
      "commit": "4cf17befef8fbc044b7a2dd80fe6c7de14a4d610",
      "fileid": "https://r2.ropensci.org/1241336c62760ae9a61249ceacd67fa721929a47ff48a650efeeb1b4d4c241f8",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/certe-medical-epidemiology/actions/runs/29494977991"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "1.15.0",
      "date": "2026-07-16T11:42:38.000Z",
      "commit": "4cf17befef8fbc044b7a2dd80fe6c7de14a4d610",
      "fileid": "https://r2.ropensci.org/29f58aff7408f8e1c282beb92b471ba167a51d62acc6e6e4f16f1b3e4f477a4a",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/certe-medical-epidemiology/actions/runs/29494977991"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "1.15.0",
      "date": "2026-07-16T11:43:04.000Z",
      "commit": "4cf17befef8fbc044b7a2dd80fe6c7de14a4d610",
      "fileid": "https://r2.ropensci.org/8c5e107d4084386a3d7c620deeda2de251ad8b1e0aa273fb9eb39f4b55f4c7f1",
      "status": "success",
      "buildurl": "https://github.com/r-universe/certe-medical-epidemiology/actions/runs/29494977991"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "1.15.0",
      "date": "2026-07-16T11:43:10.000Z",
      "commit": "4cf17befef8fbc044b7a2dd80fe6c7de14a4d610",
      "fileid": "https://r2.ropensci.org/38a2f512d5bf519870d3b309898cf0a34aabe92506e392c7a2e60bf9ced76311",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/certe-medical-epidemiology/actions/runs/29494977991"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "1.15.0",
      "date": "2026-07-16T11:41:35.000Z",
      "commit": "4cf17befef8fbc044b7a2dd80fe6c7de14a4d610",
      "fileid": "https://r2.ropensci.org/0e9d2f99b0b8389ee19e40258d7cfb27e24c04c6297f1457d5d54fc7af97ba3c",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/certe-medical-epidemiology/actions/runs/29494977991"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "1.15.0",
      "date": "2026-07-16T11:41:44.000Z",
      "commit": "4cf17befef8fbc044b7a2dd80fe6c7de14a4d610",
      "fileid": "https://r2.ropensci.org/8816c0eb723478b43e2d1268a518bf36e6b5c609a9ba877c1aabe932d6a6c29c",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/certe-medical-epidemiology/actions/runs/29494977991"
    }
  ]
}