File Annotation
Not logged in
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: }