8c4b530084 2008-02-19 mjanssen: ## -*- tcl -*- 8c4b530084 2008-02-19 mjanssen: # # ## ### ##### ######## ############# ##################### 8c4b530084 2008-02-19 mjanssen: ## Copyright (c) 2008 Mark Janssen. 8c4b530084 2008-02-19 mjanssen: # 8c4b530084 2008-02-19 mjanssen: # This software is licensed as described in the file LICENSE, which 8c4b530084 2008-02-19 mjanssen: # you should have received as part of this distribution. 8c4b530084 2008-02-19 mjanssen: # 8c4b530084 2008-02-19 mjanssen: # This software consists of voluntary contributions made by many 8c4b530084 2008-02-19 mjanssen: # individuals. For exact contribution history, see the revision 8c4b530084 2008-02-19 mjanssen: # history and logs, available at http://fossil-scm.hwaci.com/fossil 8c4b530084 2008-02-19 mjanssen: # # ## ### ##### ######## ############# ##################### 8c4b530084 2008-02-19 mjanssen: 8c4b530084 2008-02-19 mjanssen: ## Db commands 8c4b530084 2008-02-19 mjanssen: 8c4b530084 2008-02-19 mjanssen: # # ## ### ##### ######## ############# ##################### 8c4b530084 2008-02-19 mjanssen: ## Requirements 8c4b530084 2008-02-19 mjanssen: 8c4b530084 2008-02-19 mjanssen: package require Tcl 8.5 ; # Required runtime. 8c4b530084 2008-02-19 mjanssen: package require snit ; # OO system. 2b9c6df430 2008-02-19 mjanssen: package require sqlite3 8c4b530084 2008-02-19 mjanssen: package require vc::fossil::schema 1.0 ; # Fossil repo schema 8c4b530084 2008-02-19 mjanssen: 8c4b530084 2008-02-19 mjanssen: package provide vc::fossil::db 1.0 8c4b530084 2008-02-19 mjanssen: 8c4b530084 2008-02-19 mjanssen: # # ## ### ##### ######## ############# ##################### 8c4b530084 2008-02-19 mjanssen: ## 8c4b530084 2008-02-19 mjanssen: 8c4b530084 2008-02-19 mjanssen: 8c4b530084 2008-02-19 mjanssen: 8c4b530084 2008-02-19 mjanssen: namespace eval ::vc::fossil { 8c4b530084 2008-02-19 mjanssen: 8c4b530084 2008-02-19 mjanssen: snit::type db { 8c4b530084 2008-02-19 mjanssen: typevariable schemadir [file join [file dirname [info script]] schema] 8c4b530084 2008-02-19 mjanssen: typevariable dbcmd [namespace current]::sqldb 8c4b530084 2008-02-19 mjanssen: 8c4b530084 2008-02-19 mjanssen: typemethod create_repository {filename} { 8c4b530084 2008-02-19 mjanssen: if {[file exists $filename]} { 8c4b530084 2008-02-19 mjanssen: ui panic "file already exists: $filename" 8c4b530084 2008-02-19 mjanssen: } 8c4b530084 2008-02-19 mjanssen: db init_database $filename [schema repo1] [schema repo2] 8c4b530084 2008-02-19 mjanssen: } 2b9c6df430 2008-02-19 mjanssen: 8c4b530084 2008-02-19 mjanssen: typemethod init_database {filename schema args} { 8c4b530084 2008-02-19 mjanssen: sqlite3 $dbcmd $filename 8c4b530084 2008-02-19 mjanssen: $dbcmd transaction { 8c4b530084 2008-02-19 mjanssen: $dbcmd eval $schema 8c4b530084 2008-02-19 mjanssen: foreach schema $args { 8c4b530084 2008-02-19 mjanssen: $dbcmd eval $schema 8c4b530084 2008-02-19 mjanssen: } 8c4b530084 2008-02-19 mjanssen: } 8c4b530084 2008-02-19 mjanssen: $dbcmd close 8c4b530084 2008-02-19 mjanssen: } 2b9c6df430 2008-02-19 mjanssen: } 2b9c6df430 2008-02-19 mjanssen: }