{
  "_id": "6ad298e46814ce853b6579a4",
  "Package": "csdb",
  "Title": "An Abstracted System for Easily Working with Databases with\nLarge Datasets",
  "Version": "2026.10.18",
  "Authors@R": "c(\nperson(\ngiven = c(\"Richard\", \"Aubrey\"),\nfamily = \"White\",\nemail = \"hello@rwhite.no\",\nrole = c(\"aut\", \"cre\"),\ncomment = c(ORCID = \"0000-0002-6747-1726\")\n),\nperson(\ngiven = c(\"August\", \"Sørli\"),\nfamily = \"Mathisen\",\nemail = \"august.sorli.mathisen@fhi.no\",\nrole = \"aut\"\n),\nperson(\ngiven = \"Folkehelseinstituttet\",\nrole = \"cph\"\n)\n)",
  "Description": "Provides object-oriented database management tools for\nworking with large datasets across multiple database systems.\nFeatures include robust connection management for 'PostgreSQL'\ndatabases, advanced table operations with bulk data loading and\nupsert functionality, comprehensive data validation through\ncustomizable field type and content validators, efficient index\nmanagement, and cross-database compatibility. Designed for\nhigh-performance data operations in surveillance systems and\nlarge-scale data processing workflows.",
  "License": "MIT + file LICENSE",
  "URL": "https://niphr.github.io/csdb/, https://github.com/niphr/csdb",
  "BugReports": "https://github.com/niphr/csdb/issues",
  "Encoding": "UTF-8",
  "LazyData": "true",
  "VignetteBuilder": "knitr",
  "Config/testthat/edition": "3",
  "Config/Needs/website": "niphr/cstemplate",
  "Config/roxygen2/version": "8.0.0",
  "Config/pak/sysreqs": "cmake make libicu-dev libuv1-dev unixodbc-dev",
  "Repository": "https://niphr.r-universe.dev",
  "Date/Publication": "2026-10-16 19:45:21 UTC",
  "RemoteUrl": "https://github.com/niphr/csdb",
  "RemoteRef": "HEAD",
  "RemoteSha": "508776b98eb872e19562cf7ebd1bee9ecbd7b290",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-10-16 21:31:44 UTC",
    "User": "root"
  },
  "Author": "Richard Aubrey White [aut, cre] (ORCID:\n<https://orcid.org/0000-0002-6747-1726>),\nAugust Sørli Mathisen [aut],\nFolkehelseinstituttet [cph]",
  "Maintainer": "Richard Aubrey White <hello@rwhite.no>",
  "_user": "niphr",
  "_type": "src",
  "_file": "csdb_2026.10.18.tar.gz",
  "_fileid": "https://r2.ropensci.org/3aa55cea1f9b02d60b096c741dcec24a9b2f76c4b7dbd65d9e3086d9d05f2449",
  "_filesize": 530527,
  "_sha256": "3aa55cea1f9b02d60b096c741dcec24a9b2f76c4b7dbd65d9e3086d9d05f2449",
  "_expires": "2027-01-24T21:36:34.000Z",
  "_created": "2026-10-16T21:31:44.000Z",
  "_published": "2026-10-16T21:36:36.305Z",
  "_buildurl": "https://github.com/r-universe/niphr/actions/runs/38969629327",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_jobs": [
    {
      "job": 117205847914,
      "time": 173,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "12075999918"
    },
    {
      "job": 117205847901,
      "time": 174,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12075419666"
    },
    {
      "job": 117205848012,
      "time": 124,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "NOTE",
      "artifact": "12077475088"
    },
    {
      "job": 117205848071,
      "time": 131,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12076372654"
    },
    {
      "job": 117204685704,
      "time": 186,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12075599791"
    },
    {
      "job": 117205848041,
      "time": 107,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "12077085173"
    },
    {
      "job": 117205848077,
      "time": 123,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "ERROR",
      "artifact": "12076745762"
    },
    {
      "job": 117205848020,
      "time": 139,
      "config": "windows-oldrel-x86_64",
      "r": "4.5.3",
      "check": "ERROR",
      "artifact": "12077260047"
    },
    {
      "job": 117205848120,
      "time": 147,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "ERROR",
      "artifact": "12076342053"
    }
  ],
  "_upstream": "https://github.com/niphr/csdb",
  "_commit": {
    "id": "508776b98eb872e19562cf7ebd1bee9ecbd7b290",
    "author": "Richard Aubrey White <hello@rwhite.no>",
    "committer": "Richard Aubrey White <hello@rwhite.no>",
    "message": "PostgreSQL load may omit a column that PostgreSQL generates\n\nThe JSON load listed every table column in its INSERT, so a column the\ndata lacked stopped the load, and an identity or serial column could\nnever be filled by PostgreSQL. Now the INSERT lists the table columns\npresent in the data, in table order. A missing table column is allowed\nonly when PostgreSQL generates its value: an identity column, or a\ndefault that calls nextval(). Any other missing column, including a name\nthat differs only in case, still stops the load before a row is sent.\n\ncs9 26.10.24 needs this for the identity column cs9_stg_id on its\nstaging tables. Codex: BLOCK on the case-mismatch drop in round 1, fixed;\nPASS in round 2. Version 2026.10.18.\n",
    "time": 1792179921
  },
  "_maintainer": {
    "name": "Richard Aubrey White",
    "email": "hello@rwhite.no",
    "login": "raubreywhite",
    "orcid": "0000-0002-6747-1726",
    "twitter": "@raubreywhite",
    "description": "Statistician. Head of @norsyss within @folkehelseinstituttet \n",
    "uuid": 1532091
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.1.0",
      "role": "Depends"
    },
    {
      "package": "csutil",
      "role": "Imports"
    },
    {
      "package": "data.table",
      "role": "Imports"
    },
    {
      "package": "DBI",
      "role": "Imports"
    },
    {
      "package": "dbplyr",
      "role": "Imports"
    },
    {
      "package": "dplyr",
      "role": "Imports"
    },
    {
      "package": "fs",
      "role": "Imports"
    },
    {
      "package": "ggplot2",
      "role": "Imports"
    },
    {
      "package": "glue",
      "role": "Imports"
    },
    {
      "package": "methods",
      "role": "Imports"
    },
    {
      "package": "odbc",
      "role": "Imports"
    },
    {
      "package": "R6",
      "role": "Imports"
    },
    {
      "package": "RSQLite",
      "role": "Imports"
    },
    {
      "package": "S7",
      "role": "Imports"
    },
    {
      "package": "stringr",
      "role": "Imports"
    },
    {
      "package": "utils",
      "role": "Imports"
    },
    {
      "package": "uuid",
      "version": ">= 1.1-0",
      "role": "Imports"
    },
    {
      "package": "yyjsonr",
      "role": "Imports"
    },
    {
      "package": "testthat",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "digest",
      "role": "Suggests"
    },
    {
      "package": "crayon",
      "role": "Suggests"
    },
    {
      "package": "withr",
      "role": "Suggests"
    }
  ],
  "_owner": "niphr",
  "_selfowned": true,
  "_usedby": 2,
  "_updates": [
    {
      "week": "2025-52",
      "n": 4
    },
    {
      "week": "2026-05",
      "n": 2
    },
    {
      "week": "2026-06",
      "n": 2
    },
    {
      "week": "2026-14",
      "n": 1
    },
    {
      "week": "2026-20",
      "n": 1
    },
    {
      "week": "2026-27",
      "n": 9
    },
    {
      "week": "2026-30",
      "n": 5
    },
    {
      "week": "2026-32",
      "n": 11
    },
    {
      "week": "2026-33",
      "n": 3
    },
    {
      "week": "2026-34",
      "n": 10
    },
    {
      "week": "2026-35",
      "n": 4
    },
    {
      "week": "2026-40",
      "n": 1
    },
    {
      "week": "2026-41",
      "n": 7
    },
    {
      "week": "2026-42",
      "n": 14
    }
  ],
  "_tags": [],
  "_topics": [
    "csverse"
  ],
  "_stars": 1,
  "_contributors": [
    {
      "user": "raubreywhite",
      "count": 190,
      "uuid": 1532091
    },
    {
      "user": "augustmathisen",
      "count": 2,
      "uuid": 160852733
    }
  ],
  "_userbio": {
    "uuid": 244534951,
    "type": "organization",
    "name": "Norwegian Institute of Public Health - R codebases",
    "followers": 3,
    "description": "The Norwegian Institute of Public Health is a government agency under the Ministry of Health and Care Services."
  },
  "_downloads": {
    "count": 444,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/csdb"
  },
  "_devurl": "https://github.com/niphr/csdb",
  "_pkgdown": "https://niphr.github.io/csdb/",
  "_searchresults": 1,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/csdb.html",
    "extra/manual.pdf",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "LICENSE"
  ],
  "_homeurl": "https://github.com/niphr/csdb",
  "_realowner": "niphr",
  "_cranurl": true,
  "_releases": [
    {
      "version": "2025.7.30",
      "date": "2025-08-18"
    },
    {
      "version": "2026.2.2",
      "date": "2026-03-31"
    },
    {
      "version": "2026.5.13",
      "date": "2026-05-13"
    }
  ],
  "_exports": [
    "csdb_get_auth_hook",
    "csdb_get_context",
    "csdb_get_password_hook",
    "csdb_set_auth_hook",
    "csdb_set_context",
    "csdb_set_password_hook",
    "DBConnection_v9",
    "DBTable_v9",
    "get_table_names_and_info",
    "insert_data_many",
    "validator_field_contents_blank",
    "validator_field_contents_csfmt_rts_data_v1",
    "validator_field_contents_csfmt_rts_data_v2",
    "validator_field_types_blank",
    "validator_field_types_csfmt_rts_data_v1",
    "validator_field_types_csfmt_rts_data_v2"
  ],
  "_datasets": [
    {
      "name": "nor_covid19_cases_by_time_location",
      "title": "Covid-19 data for PCR-confirmed cases in Norway (nation and county)",
      "object": "nor_covid19_cases_by_time_location",
      "class": [
        "data.table",
        "data.frame"
      ],
      "fields": [
        "granularity_time",
        "granularity_geo",
        "country_iso3",
        "location_code",
        "border",
        "age",
        "sex",
        "isoyear",
        "isoweek",
        "isoyearweek",
        "season",
        "seasonweek",
        "calyear",
        "calmonth",
        "calyearmonth",
        "date",
        "covid19_cases_testdate_n",
        "covid19_cases_testdate_pr100000"
      ],
      "rows": 11028,
      "table": true,
      "tojson": true
    }
  ],
  "_help": [
    {
      "page": "csdb_get_auth_hook",
      "title": "Get the current authentication hook",
      "concept": [
        "auth hook functions"
      ],
      "topics": [
        "csdb_get_auth_hook"
      ]
    },
    {
      "page": "csdb_get_context",
      "title": "Get the caller context",
      "concept": [
        "caller context functions"
      ],
      "topics": [
        "csdb_get_context"
      ]
    },
    {
      "page": "csdb_get_password_hook",
      "title": "Get the current password hook",
      "concept": [
        "password hook functions"
      ],
      "topics": [
        "csdb_get_password_hook"
      ]
    },
    {
      "page": "csdb_set_auth_hook",
      "title": "Set authentication hook for database connections",
      "concept": [
        "auth hook functions"
      ],
      "topics": [
        "csdb_set_auth_hook"
      ]
    },
    {
      "page": "csdb_set_context",
      "title": "Set the caller context",
      "concept": [
        "caller context functions"
      ],
      "topics": [
        "csdb_set_context"
      ]
    },
    {
      "page": "csdb_set_password_hook",
      "title": "Set the password hook for PostgreSQL connections",
      "concept": [
        "password hook functions"
      ],
      "topics": [
        "csdb_set_password_hook"
      ]
    },
    {
      "page": "DBConnection_v9",
      "title": "R6 Class representing a database connection",
      "concept": [
        "database classes"
      ],
      "topics": [
        "DBConnection_v9"
      ]
    },
    {
      "page": "DBTable_v9",
      "title": "R6 Class representing a database table",
      "concept": [
        "database classes"
      ],
      "topics": [
        "DBTable_v9"
      ]
    },
    {
      "page": "get_table_names_and_info",
      "title": "Get table names, number of rows, and size information",
      "topics": [
        "get_table_names_and_info"
      ]
    },
    {
      "page": "insert_data_many",
      "title": "Insert data into several tables in one transaction",
      "topics": [
        "insert_data_many"
      ]
    },
    {
      "page": "nor_covid19_cases_by_time_location",
      "title": "Covid-19 data for PCR-confirmed cases in Norway (nation and county)",
      "topics": [
        "nor_covid19_cases_by_time_location"
      ]
    },
    {
      "page": "validator_field_contents_blank",
      "title": "Blank data contents validator",
      "concept": [
        "field contents validators"
      ],
      "topics": [
        "validator_field_contents_blank"
      ]
    },
    {
      "page": "validator_field_contents_csfmt_rts_data_v1",
      "title": "Field contents validator for csfmt_rts_data_v1 schema",
      "concept": [
        "field contents validators"
      ],
      "topics": [
        "validator_field_contents_csfmt_rts_data_v1"
      ]
    },
    {
      "page": "validator_field_contents_csfmt_rts_data_v2",
      "title": "Field contents validator for csfmt_rts_data_v2 schema",
      "concept": [
        "field contents validators"
      ],
      "topics": [
        "validator_field_contents_csfmt_rts_data_v2"
      ]
    },
    {
      "page": "validator_field_types_blank",
      "title": "Blank field types validator",
      "concept": [
        "field type validators"
      ],
      "topics": [
        "validator_field_types_blank"
      ]
    },
    {
      "page": "validator_field_types_csfmt_rts_data_v1",
      "title": "Field types validator for csfmt_rts_data_v1 schema",
      "concept": [
        "field type validators"
      ],
      "topics": [
        "validator_field_types_csfmt_rts_data_v1"
      ]
    },
    {
      "page": "validator_field_types_csfmt_rts_data_v2",
      "title": "Field types validator for csfmt_rts_data_v2 schema",
      "concept": [
        "field type validators"
      ],
      "topics": [
        "validator_field_types_csfmt_rts_data_v2"
      ]
    }
  ],
  "_pkglogo": "https://github.com/niphr/csdb/raw/HEAD/man/figures/logo.png",
  "_readme": "https://github.com/niphr/csdb/raw/HEAD/README.md",
  "_rundeps": [
    "bit",
    "bit64",
    "blob",
    "cachem",
    "cli",
    "cpp11",
    "csutil",
    "data.table",
    "DBI",
    "dbplyr",
    "dplyr",
    "farver",
    "fastmap",
    "fs",
    "generics",
    "ggplot2",
    "glue",
    "gtable",
    "hms",
    "isoband",
    "labeling",
    "lifecycle",
    "magrittr",
    "memoise",
    "odbc",
    "pillar",
    "pkgconfig",
    "purrr",
    "R6",
    "RColorBrewer",
    "Rcpp",
    "rlang",
    "RSQLite",
    "S7",
    "scales",
    "stringi",
    "stringr",
    "tibble",
    "tidyr",
    "tidyselect",
    "utf8",
    "uuid",
    "vctrs",
    "viridisLite",
    "withr",
    "yyjsonr"
  ],
  "_vignettes": [
    {
      "source": "csdb.Rmd",
      "filename": "csdb.html",
      "title": "Introduction to csdb",
      "author": "Richard Aubrey White",
      "engine": "knitr::rmarkdown",
      "headings": [
        "What csdb is for",
        "What this vignette does and does not prove",
        "Two classes, and the split between them",
        "The validators, and one gap",
        "The three backends",
        "Where csdb sits",
        "A worked example",
        "Who owns the connection",
        "A connection does not survive a fork",
        "Two tables that declare one index name",
        "Emptying a table before you write to it",
        "The upsert method answers the same four cases"
      ],
      "created": "2023-03-03 03:21:20",
      "modified": "2026-08-15 17:11:17",
      "commits": 11
    },
    {
      "source": "backends.Rmd",
      "filename": "backends.html",
      "title": "PostgreSQL and SQLite side by side",
      "author": "Richard Aubrey White",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Two configurations",
        "The same table against each",
        "What differs",
        "Why the field types are closed",
        "Why the primary key cannot be added later",
        "Which one to choose"
      ],
      "created": "2026-08-05 09:53:57",
      "modified": "2026-10-16 05:37:29",
      "commits": 4
    }
  ],
  "_score": 5.924279286061882,
  "_indexed": true,
  "_nocasepkg": "csdb",
  "_universes": [
    "niphr",
    "raubreywhite"
  ],
  "_previous": "2026.10.17",
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "2026.10.18",
      "date": "2026-10-16T21:33:55.000Z",
      "distro": "resolute",
      "commit": "508776b98eb872e19562cf7ebd1bee9ecbd7b290",
      "fileid": "https://r2.ropensci.org/5d8394d0dd2e05e3967395f470cecf374809567f0a7fed0c4af8e1a8afb6f6f3",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/niphr/actions/runs/38969629327"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "2026.10.18",
      "date": "2026-10-16T21:33:56.000Z",
      "distro": "resolute",
      "commit": "508776b98eb872e19562cf7ebd1bee9ecbd7b290",
      "fileid": "https://r2.ropensci.org/d4e0e522ba8767c108f6ad4bde50123ad0b9302e194cf2c024a0dcdd0e5ecb36",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/niphr/actions/runs/38969629327"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "2026.10.18",
      "date": "2026-10-16T21:35:01.000Z",
      "commit": "508776b98eb872e19562cf7ebd1bee9ecbd7b290",
      "fileid": "https://r2.ropensci.org/ab791ffed30941a031eff76f8deced3b1fa71ec3a7ee4be8ace9ed9dd52022ac",
      "status": "success",
      "check": "NOTE",
      "buildurl": "https://github.com/r-universe/niphr/actions/runs/38969629327"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "2026.10.18",
      "date": "2026-10-16T21:35:14.000Z",
      "commit": "508776b98eb872e19562cf7ebd1bee9ecbd7b290",
      "fileid": "https://r2.ropensci.org/8574794b107148184c0f37ad5f32288ff075410e95b7f6978c170232755caebc",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/niphr/actions/runs/38969629327"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "2026.10.18",
      "date": "2026-10-16T21:33:52.000Z",
      "commit": "508776b98eb872e19562cf7ebd1bee9ecbd7b290",
      "fileid": "https://r2.ropensci.org/c21488ba39586affc806f12b9d7794fd8300f194a831546e8a96ae955625cb70",
      "status": "success",
      "buildurl": "https://github.com/r-universe/niphr/actions/runs/38969629327"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "2026.10.18",
      "date": "2026-10-16T21:32:55.000Z",
      "commit": "508776b98eb872e19562cf7ebd1bee9ecbd7b290",
      "fileid": "https://r2.ropensci.org/2d1c40d31d9841931d8db9e9b2cd653015856d2519e291575562baad27a806dc",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/niphr/actions/runs/38969629327"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "2026.10.18",
      "date": "2026-10-16T21:33:13.000Z",
      "commit": "508776b98eb872e19562cf7ebd1bee9ecbd7b290",
      "fileid": "https://r2.ropensci.org/718d15e3a0c6c63fa9c7adbaa925ea26ec7755e74a0c070912c0f49717a760c2",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/niphr/actions/runs/38969629327"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "2026.10.18",
      "date": "2026-10-16T21:33:25.000Z",
      "commit": "508776b98eb872e19562cf7ebd1bee9ecbd7b290",
      "fileid": "https://r2.ropensci.org/f545b47b2c2a0ffa8f9c0a919a8b2faefe2da69e943fdc2d4dfe87022a240648",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/niphr/actions/runs/38969629327"
    }
  ]
}