updated TODO list
[drupal_versioncontrol_git.git] / versioncontrol_git.install
blob13febaffa99adaf43208405e973501f04e6772b2
1 <?php
2 // $Id: versioncontrol_git.install,v 1.22 2007/11/09 20:38:24 jpetso Exp $
3 /**
4  * @file
5  * GIT backend for Version Control API - Provides GIT commit information and
6  * account management as a pluggable backend.
7  *
8  * Copyright 2006 by Karthik ("Zen", http://drupal.org/user/21209)
9  * Copyright 2006, 2007 by Derek Wright ("dww", http://drupal.org/user/46549)
10  * Copyright 2007 by Jakob Petsovits ("jpetso", http://drupal.org/user/56020)
11  */
13 /**
14  * Implementation of hook_install().
15  */
16 function versioncontrol_git_install() {
17   switch ($GLOBALS['db_type']) {
18     case 'mysqli':
19     case 'mysql':
20       db_query("CREATE TABLE {versioncontrol_git_accounts} (
21         uid int unsigned NOT NULL default 0,
22         repo_id int unsigned NOT NULL default 0,
23         password varchar(64) NOT NULL default '',
24         PRIMARY KEY (uid, repo_id)
25       ) /*!40100 DEFAULT CHARACTER SET utf8 */");
27       db_query("CREATE TABLE {versioncontrol_git_repositories} (
28         repo_id int unsigned NOT NULL default 0,
29         modules varchar(255) NOT NULL default '',
30         update_method tinyint unsigned NOT NULL default 0,
31         updated int unsigned NOT NULL default 0,
32         run_as_user varchar(255) NOT NULL default '',
33         PRIMARY KEY (repo_id)
34       ) /*!40100 DEFAULT CHARACTER SET utf8 */");
36       db_query("CREATE TABLE {versioncontrol_git_commits} (
37         commit_id int unsigned NOT NULL default 0,
38         branch_id int unsigned NOT NULL default 0,
39         PRIMARY KEY (commit_id)
40       ) /*!40100 DEFAULT CHARACTER SET utf8 */");
42       db_query("CREATE TABLE {versioncontrol_git_item_revisions} (
43         item_revision_id int unsigned NOT NULL default 0,
44         commit_id int unsigned NOT NULL default 0,
45         action tinyint unsigned NOT NULL default 0,
46         type tinyint NOT NULL default 0,
47         path varchar(255) NOT NULL default '',
48         revision varchar(255) NOT NULL default '',
49         source_revision varchar(255) NOT NULL default '',
50         lines_added smallint unsigned NOT NULL default 0,
51         lines_removed smallint unsigned NOT NULL default 0,
52         PRIMARY KEY (item_revision_id),
53         UNIQUE KEY (commit_id, path)
54       ) /*!40100 DEFAULT CHARACTER SET utf8 */");
56       db_query("CREATE TABLE {versioncontrol_git_item_tags} (
57         tag_op_id int unsigned NOT NULL default 0,
58         item_revision_id int unsigned NOT NULL default 0,
59         PRIMARY KEY (tag_op_id, item_revision_id)
60       ) /*!40100 DEFAULT CHARACTER SET utf8 */");
62       db_query("CREATE TABLE {versioncontrol_git_item_branch_points} (
63         branch_op_id int unsigned NOT NULL default 0,
64         item_revision_id int unsigned NOT NULL default 0,
65         PRIMARY KEY (branch_op_id, item_revision_id)
66       ) /*!40100 DEFAULT CHARACTER SET utf8 */");
67       break;
69     case 'pgsql':
70       db_query("CREATE TABLE {versioncontrol_git_accounts} (
71         uid int NOT NULL default 0,
72         repo_id int NOT NULL default 0,
73         password varchar(64) NOT NULL default '',
74         PRIMARY KEY (uid, repo_id)
75       )");
77       db_query("CREATE TABLE {versioncontrol_git_repositories} (
78         repo_id int NOT NULL default 0,
79         modules varchar(255) NOT NULL default '',
80         update_method smallint NOT NULL default 0,
81         updated int NOT NULL default 0,
82         run_as_user varchar(255) NOT NULL default '',
83         PRIMARY KEY (repo_id)
84       )");
86       db_query("CREATE TABLE {versioncontrol_git_commits} (
87         commit_id int NOT NULL default 0,
88         branch_id int NOT NULL default 0,
89         PRIMARY KEY (commit_id)
90       )");
92       db_query("CREATE TABLE {versioncontrol_git_item_revisions} (
93         item_revision_id int NOT NULL default 0,
94         commit_id int NOT NULL default 0,
95         action smallint NOT NULL default 0,
96         type smallint NOT NULL default 0,
97         path varchar(255) NOT NULL default '',
98         revision varchar(255) NOT NULL default '',
99         source_revision varchar(255) NOT NULL default '',
100         lines_added smallint NOT NULL default 0,
101         lines_removed smallint NOT NULL default 0,
102         PRIMARY KEY (item_revision_id),
103         UNIQUE (commit_id, path)
104       )");
106       db_query("CREATE TABLE {versioncontrol_git_item_tags} (
107         tag_op_id int NOT NULL default 0,
108         item_revision_id int NOT NULL default 0,
109         PRIMARY KEY (tag_op_id, item_revision_id)
110       )");
112       db_query("CREATE TABLE {versioncontrol_git_item_branch_points} (
113         branch_op_id int NOT NULL default 0,
114         item_revision_id int NOT NULL default 0,
115         PRIMARY KEY (branch_op_id, item_revision_id)
116       )");
117       break;
118   }
123  * Implementation of hook_uninstall().
124  */
125 function versioncontrol_git_uninstall() {
126   // Make sure we can access the required functions even from the .install file.
127   include_once(drupal_get_path('module', 'versioncontrol') .'/versioncontrol.module');
128   include_once(drupal_get_path('module', 'versioncontrol_git') .'/versioncontrol_git.module');
130   if (db_table_exists('versioncontrol_repositories')) {
131     $result = db_query("SELECT repo_id FROM {versioncontrol_repositories}
132                         WHERE vcs = 'git'");
133     while ($repository = db_fetch_array($result)) {
134       versioncontrol_delete_repository($repository);
135     }
136   }
138   db_query('DROP TABLE {versioncontrol_git_accounts}');
139   db_query('DROP TABLE {versioncontrol_git_repositories}');
140   db_query('DROP TABLE {versioncontrol_git_commits}');
141   db_query('DROP TABLE {versioncontrol_git_item_revisions}');
142   db_query('DROP TABLE {versioncontrol_git_item_tags}');
143   db_query('DROP TABLE {versioncontrol_git_item_branch_points}');