2 db.start <- function() {
3 drv <- dbDriver('SQLite')
4 con <- dbConnect(drv, dbname=file.path(root,'data/cran2deb.db'))
5 tables <- dbListTables(con)
6 if (!dbExistsTable(con,'sysreq_override')) {
7 dbGetQuery(con,paste('CREATE TABLE sysreq_override ('
8 ,' debian_name TEXT UNIQUE NOT NULL'
9 ,',r_pattern TEXT UNIQUE NOT NULL'
12 if (!dbExistsTable(con,'license_override')) {
13 dbGetQuery(con,paste('CREATE TABLE license_override ('
14 ,' name TEXT PRIMARY KEY NOT NULL'
15 ,',accept INT NOT NULL'
18 if (!dbExistsTable(con,'license_files')) {
19 dbGetQuery(con,paste('CREATE TABLE license_files ('
20 ,' name TEXT NOT NULL'
21 ,',file_sha1 TEXT PRIMARY KEY NOT NULL'
27 db.stop <- function(con) {
31 db.quote <- function(text) {
32 return(paste('"',gsub('([^][[:alnum:]*?. ()<>:/=-])','\\\\\\1',text),'"',sep=''))
35 db.sysreq.override <- function(sysreq_text) {
37 results <- dbGetQuery(con,paste(
38 'SELECT debian_name FROM sysreq_override WHERE'
39 ,db.quote(sysreq_text),'GLOB r_pattern'))
41 return(results$debian_name)
44 db.add.sysreq.override <- function(pattern,debian_name) {
46 results <- dbGetQuery(con,paste(
47 'INSERT OR REPLACE INTO sysreq_override'
48 ,'(debian_name, r_pattern) VALUES ('
49 ,' ',db.quote(debian_name)
50 ,',',db.quote(pattern)
55 db.license.override.name <- function(name) {
57 results <- dbGetQuery(con,paste(
58 'SELECT accept FROM license_override WHERE'
59 ,db.quote(name),'= name'))
61 if (length(results) == 0) {
64 return(as.logical(results$accept))
67 db.add.license.override <- function(name,accept) {
68 message(paste('adding',name,'accept?',accept))
69 if (accept != TRUE && accept != FALSE) {
70 stop('accept must be TRUE or FALSE')
73 results <- dbGetQuery(con,paste(
74 'INSERT OR REPLACE INTO license_override'
75 ,'(name, accept) VALUES ('
77 ,',',as.integer(accept)
82 db.license.override.file <- function(file_sha1) {
84 results <- dbGetQuery(con,paste(
85 'SELECT name,accept FROM license_override'
86 ,'INNER JOIN license_files'
87 ,'ON license_files.name = license_override.name WHERE'
88 ,db.quote(file_sha1),'= license_files.file_sha1'))
90 # TODO: change accept from 0,1 into FALSE,TRUE
95 db.license.overrides <- function() {
97 overrides <- dbGetQuery(con,paste('SELECT * FROM license_override'))
98 files <- dbGetQuery(con,paste('SELECT * FROM license_files'))
100 # TODO: change accept from 0,1 into FALSE,TRUE
101 return(list(overrides=overrides,files=files))
104 db.add.license.file <- function(name,file_sha1) {
105 message(paste('adding file',file_sha1,'for',name))
107 dbGetQuery(con,paste(
108 'INSERT OR REPLACE INTO license_files'
109 ,'(name, file_sha1) VALUES ('
111 ,',',db.quote(file_sha1)