mirror of
https://github.com/haiwen/seafile-server.git
synced 2025-04-27 19:15:07 +00:00
Add column type to RepoInfo (#660)
* Add column type to RepoInfo * Go fileserver check repo type --------- Co-authored-by: 杨赫然 <heran.yang@seafile.com>
This commit is contained in:
parent
84eb58f01c
commit
cd9bae2002
@ -412,6 +412,7 @@ type SharedRepo struct {
|
||||
Permission string `json:"permission"`
|
||||
Type string `json:"type"`
|
||||
Owner string `json:"owner"`
|
||||
RepoType string `json:"-"`
|
||||
}
|
||||
|
||||
// GetReposByOwner get repos by owner
|
||||
@ -419,7 +420,7 @@ func GetReposByOwner(email string) ([]*SharedRepo, error) {
|
||||
var repos []*SharedRepo
|
||||
|
||||
query := "SELECT o.repo_id, b.commit_id, i.name, " +
|
||||
"i.version, i.update_time, i.last_modifier FROM " +
|
||||
"i.version, i.update_time, i.last_modifier, i.type FROM " +
|
||||
"RepoOwner o LEFT JOIN Branch b ON o.repo_id = b.repo_id " +
|
||||
"LEFT JOIN RepoInfo i ON o.repo_id = i.repo_id " +
|
||||
"LEFT JOIN VirtualRepo v ON o.repo_id = v.repo_id " +
|
||||
@ -443,10 +444,10 @@ func GetReposByOwner(email string) ([]*SharedRepo, error) {
|
||||
|
||||
for rows.Next() {
|
||||
repo := new(SharedRepo)
|
||||
var repoName, lastModifier sql.NullString
|
||||
var repoName, lastModifier, repoType sql.NullString
|
||||
if err := rows.Scan(&repo.ID, &repo.HeadCommitID,
|
||||
&repoName, &repo.Version, &repo.MTime,
|
||||
&lastModifier); err == nil {
|
||||
&lastModifier, &repoType); err == nil {
|
||||
|
||||
if repo.HeadCommitID == "" {
|
||||
continue
|
||||
@ -458,6 +459,9 @@ func GetReposByOwner(email string) ([]*SharedRepo, error) {
|
||||
continue
|
||||
}
|
||||
repo.Name = repoName.String
|
||||
if repoType.Valid {
|
||||
repo.RepoType = repoType.String
|
||||
}
|
||||
repos = append(repos, repo)
|
||||
}
|
||||
}
|
||||
@ -473,7 +477,7 @@ func GetReposByOwner(email string) ([]*SharedRepo, error) {
|
||||
func ListInnerPubRepos() ([]*SharedRepo, error) {
|
||||
query := "SELECT InnerPubRepo.repo_id, " +
|
||||
"owner_id, permission, commit_id, i.name, " +
|
||||
"i.update_time, i.version " +
|
||||
"i.update_time, i.version, i.type " +
|
||||
"FROM InnerPubRepo " +
|
||||
"LEFT JOIN RepoInfo i ON InnerPubRepo.repo_id = i.repo_id, RepoOwner, Branch " +
|
||||
"WHERE InnerPubRepo.repo_id=RepoOwner.repo_id AND " +
|
||||
@ -495,10 +499,10 @@ func ListInnerPubRepos() ([]*SharedRepo, error) {
|
||||
var repos []*SharedRepo
|
||||
for rows.Next() {
|
||||
repo := new(SharedRepo)
|
||||
var repoName sql.NullString
|
||||
var repoName, repoType sql.NullString
|
||||
if err := rows.Scan(&repo.ID, &repo.Owner,
|
||||
&repo.Permission, &repo.HeadCommitID, &repoName,
|
||||
&repo.MTime, &repo.Version); err == nil {
|
||||
&repo.MTime, &repo.Version, &repoType); err == nil {
|
||||
|
||||
if !repoName.Valid {
|
||||
continue
|
||||
@ -507,6 +511,9 @@ func ListInnerPubRepos() ([]*SharedRepo, error) {
|
||||
continue
|
||||
}
|
||||
repo.Name = repoName.String
|
||||
if repoType.Valid {
|
||||
repo.RepoType = repoType.String
|
||||
}
|
||||
repos = append(repos, repo)
|
||||
}
|
||||
}
|
||||
@ -525,7 +532,7 @@ func ListShareRepos(email, columnType string) ([]*SharedRepo, error) {
|
||||
if columnType == "from_email" {
|
||||
query = "SELECT sh.repo_id, to_email, " +
|
||||
"permission, commit_id, " +
|
||||
"i.name, i.update_time, i.version FROM " +
|
||||
"i.name, i.update_time, i.version, i.type FROM " +
|
||||
"SharedRepo sh LEFT JOIN RepoInfo i ON sh.repo_id = i.repo_id, Branch b " +
|
||||
"WHERE from_email=? AND " +
|
||||
"sh.repo_id = b.repo_id AND " +
|
||||
@ -534,7 +541,7 @@ func ListShareRepos(email, columnType string) ([]*SharedRepo, error) {
|
||||
} else if columnType == "to_email" {
|
||||
query = "SELECT sh.repo_id, from_email, " +
|
||||
"permission, commit_id, " +
|
||||
"i.name, i.update_time, i.version FROM " +
|
||||
"i.name, i.update_time, i.version, i.type FROM " +
|
||||
"SharedRepo sh LEFT JOIN RepoInfo i ON sh.repo_id = i.repo_id, Branch b " +
|
||||
"WHERE to_email=? AND " +
|
||||
"sh.repo_id = b.repo_id AND " +
|
||||
@ -561,10 +568,10 @@ func ListShareRepos(email, columnType string) ([]*SharedRepo, error) {
|
||||
|
||||
for rows.Next() {
|
||||
repo := new(SharedRepo)
|
||||
var repoName sql.NullString
|
||||
var repoName, repoType sql.NullString
|
||||
if err := rows.Scan(&repo.ID, &repo.Owner,
|
||||
&repo.Permission, &repo.HeadCommitID,
|
||||
&repoName, &repo.MTime, &repo.Version); err == nil {
|
||||
&repoName, &repo.MTime, &repo.Version, &repoType); err == nil {
|
||||
|
||||
if !repoName.Valid {
|
||||
continue
|
||||
@ -573,6 +580,9 @@ func ListShareRepos(email, columnType string) ([]*SharedRepo, error) {
|
||||
continue
|
||||
}
|
||||
repo.Name = repoName.String
|
||||
if repoType.Valid {
|
||||
repo.RepoType = repoType.String
|
||||
}
|
||||
|
||||
repos = append(repos, repo)
|
||||
}
|
||||
@ -599,7 +609,7 @@ func GetGroupReposByUser(user string, orgID int) ([]*SharedRepo, error) {
|
||||
if orgID < 0 {
|
||||
sqlBuilder.WriteString("SELECT g.repo_id, " +
|
||||
"user_name, permission, commit_id, " +
|
||||
"i.name, i.update_time, i.version " +
|
||||
"i.name, i.update_time, i.version, i.type " +
|
||||
"FROM RepoGroup g " +
|
||||
"LEFT JOIN RepoInfo i ON g.repo_id = i.repo_id, " +
|
||||
"Branch b WHERE g.repo_id = b.repo_id AND " +
|
||||
@ -607,7 +617,7 @@ func GetGroupReposByUser(user string, orgID int) ([]*SharedRepo, error) {
|
||||
} else {
|
||||
sqlBuilder.WriteString("SELECT g.repo_id, " +
|
||||
"owner, permission, commit_id, " +
|
||||
"i.name, i.update_time, i.version " +
|
||||
"i.name, i.update_time, i.version, i.type " +
|
||||
"FROM OrgGroupRepo g " +
|
||||
"LEFT JOIN RepoInfo i ON g.repo_id = i.repo_id, " +
|
||||
"Branch b WHERE g.repo_id = b.repo_id AND " +
|
||||
@ -631,10 +641,13 @@ func GetGroupReposByUser(user string, orgID int) ([]*SharedRepo, error) {
|
||||
var repos []*SharedRepo
|
||||
for rows.Next() {
|
||||
gRepo := new(SharedRepo)
|
||||
var repoType sql.NullString
|
||||
if err := rows.Scan(&gRepo.ID, &gRepo.Owner,
|
||||
&gRepo.Permission, &gRepo.HeadCommitID,
|
||||
&gRepo.Name, &gRepo.MTime, &gRepo.Version); err == nil {
|
||||
|
||||
&gRepo.Name, &gRepo.MTime, &gRepo.Version, &repoType); err == nil {
|
||||
if repoType.Valid {
|
||||
gRepo.RepoType = repoType.String
|
||||
}
|
||||
repos = append(repos, gRepo)
|
||||
}
|
||||
}
|
||||
|
@ -352,6 +352,9 @@ func getAccessibleRepoListCB(rsp http.ResponseWriter, r *http.Request) *appError
|
||||
|
||||
var repoObjects []*share.SharedRepo
|
||||
for _, repo := range repos {
|
||||
if repo.RepoType != "" {
|
||||
continue
|
||||
}
|
||||
if _, ok := obtainedRepos[repo.ID]; !ok {
|
||||
obtainedRepos[repo.ID] = repo.ID
|
||||
}
|
||||
@ -370,6 +373,9 @@ func getAccessibleRepoListCB(rsp http.ResponseWriter, r *http.Request) *appError
|
||||
if _, ok := obtainedRepos[sRepo.ID]; ok {
|
||||
continue
|
||||
}
|
||||
if sRepo.RepoType != "" {
|
||||
continue
|
||||
}
|
||||
sRepo.Type = "srepo"
|
||||
sRepo.Owner = strings.ToLower(sRepo.Owner)
|
||||
repoObjects = append(repoObjects, sRepo)
|
||||
@ -402,6 +408,9 @@ func getAccessibleRepoListCB(rsp http.ResponseWriter, r *http.Request) *appError
|
||||
if _, ok := obtainedRepos[sRepo.ID]; ok {
|
||||
continue
|
||||
}
|
||||
if sRepo.RepoType != "" {
|
||||
continue
|
||||
}
|
||||
|
||||
sRepo.Type = "grepo"
|
||||
sRepo.Owner = "Organization"
|
||||
@ -428,6 +437,9 @@ func filterGroupRepos(repos []*share.SharedRepo) map[string]*share.SharedRepo {
|
||||
table := make(map[string]*share.SharedRepo)
|
||||
|
||||
for _, repo := range repos {
|
||||
if repo.RepoType != "" {
|
||||
continue
|
||||
}
|
||||
if repoPrev, ok := table[repo.ID]; ok {
|
||||
if repo.Permission == "rw" && repoPrev.Permission == "r" {
|
||||
table[repo.ID] = repo
|
||||
|
@ -41,6 +41,7 @@ public class Repo : Object {
|
||||
public string head_cmmt_id { get; set; }
|
||||
public string root { get; set; }
|
||||
public int status { get; set; }
|
||||
public string repo_type { get; set; }
|
||||
|
||||
// To be compatible with obsoleted SharedRepo object
|
||||
public string repo_id { get; set; }
|
||||
|
@ -178,7 +178,9 @@ CREATE TABLE IF NOT EXISTS RepoInfo (id BIGINT NOT NULL PRIMARY KEY AUTO_INCREME
|
||||
is_encrypted INTEGER,
|
||||
last_modifier VARCHAR(255),
|
||||
status INTEGER DEFAULT 0,
|
||||
UNIQUE INDEX(repo_id)
|
||||
type VARCHAR(10),
|
||||
UNIQUE INDEX(repo_id),
|
||||
INDEX (type)
|
||||
) ENGINE=INNODB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS RepoOwner (
|
||||
|
@ -42,7 +42,8 @@ CREATE TABLE IF NOT EXISTS FolderGroupPerm (repo_id CHAR(36) NOT NULL, path TEXT
|
||||
CREATE INDEX IF NOT EXISTS folder_group_perm_idx ON FolderGroupPerm(repo_id);
|
||||
CREATE TABLE IF NOT EXISTS FolderPermTimestamp (repo_id CHAR(36) PRIMARY KEY, timestamp INTEGER);
|
||||
CREATE TABLE IF NOT EXISTS WebUploadTempFiles (repo_id CHAR(40) NOT NULL, file_path TEXT NOT NULL, tmp_file_path TEXT NOT NULL);
|
||||
CREATE TABLE IF NOT EXISTS RepoInfo (repo_id CHAR(36) PRIMARY KEY, name VARCHAR(255) NOT NULL, update_time INTEGER, version INTEGER, is_encrypted INTEGER, last_modifier VARCHAR(255), status INTEGER DEFAULT 0);
|
||||
CREATE TABLE IF NOT EXISTS RepoInfo (repo_id CHAR(36) PRIMARY KEY, name VARCHAR(255) NOT NULL, update_time INTEGER, version INTEGER, is_encrypted INTEGER, last_modifier VARCHAR(255), status INTEGER DEFAULT 0, type VARCHAR(10));
|
||||
CREATE INDEX IF NOT EXISTS RepoInfoTypeIndex on RepoInfo (type);
|
||||
CREATE TABLE IF NOT EXISTS RepoStorageId (repo_id CHAR(40) NOT NULL, storage_id VARCHAR(255) NOT NULL);
|
||||
CREATE TABLE IF NOT EXISTS UserQuota (user VARCHAR(255) PRIMARY KEY, quota BIGINT);
|
||||
CREATE TABLE IF NOT EXISTS UserShareQuota (user VARCHAR(255) PRIMARY KEY, quota BIGINT);
|
||||
|
@ -2482,6 +2482,7 @@ fill_obj_from_seafilerepo (SeafileRepo *srepo, GHashTable *table)
|
||||
char *repo_name = NULL;
|
||||
char *permission = NULL;
|
||||
char *owner = NULL;
|
||||
char *type = NULL;
|
||||
gint64 last_modify = 0;
|
||||
json_t *obj = NULL;
|
||||
|
||||
@ -2492,10 +2493,15 @@ fill_obj_from_seafilerepo (SeafileRepo *srepo, GHashTable *table)
|
||||
"last_modify", &last_modify,
|
||||
"permission", &permission,
|
||||
"user", &owner,
|
||||
"repo_type", &type,
|
||||
NULL);
|
||||
|
||||
if (!repo_id)
|
||||
goto out;
|
||||
if (type) {
|
||||
g_free (repo_id);
|
||||
goto out;
|
||||
}
|
||||
//the repo_id will be free when the table is destroyed.
|
||||
if (g_hash_table_lookup (table, repo_id)) {
|
||||
g_free (repo_id);
|
||||
@ -2516,6 +2522,7 @@ out:
|
||||
g_free (repo_name);
|
||||
g_free (permission);
|
||||
g_free (owner);
|
||||
g_free (type);
|
||||
return obj;
|
||||
}
|
||||
|
||||
@ -2532,6 +2539,7 @@ filter_group_repos (GList *repos)
|
||||
char *permission = NULL;
|
||||
char *permission_prev = NULL;
|
||||
char *repo_id = NULL;
|
||||
char *type = NULL;
|
||||
|
||||
table = g_hash_table_new_full (g_str_hash, g_str_equal,
|
||||
g_free,
|
||||
@ -2541,7 +2549,15 @@ filter_group_repos (GList *repos)
|
||||
srepo = iter->data;
|
||||
g_object_get (srepo, "id", &repo_id,
|
||||
"permission", &permission,
|
||||
"repo_type", &type,
|
||||
NULL);
|
||||
if (type) {
|
||||
g_free (repo_id);
|
||||
g_free (permission);
|
||||
g_free (type);
|
||||
g_object_unref (srepo);
|
||||
continue;
|
||||
}
|
||||
srepo_tmp = g_hash_table_lookup (table, repo_id);
|
||||
if (srepo_tmp) {
|
||||
g_object_get (srepo_tmp, "permission", &permission_prev,
|
||||
@ -2557,10 +2573,11 @@ filter_group_repos (GList *repos)
|
||||
} else {
|
||||
g_hash_table_insert (table, g_strdup (repo_id), srepo);
|
||||
}
|
||||
g_free (repo_id);
|
||||
g_free (permission);
|
||||
g_free (type);
|
||||
}
|
||||
|
||||
g_free (repo_id);
|
||||
g_free (permission);
|
||||
return table;
|
||||
}
|
||||
|
||||
@ -2627,6 +2644,10 @@ get_accessible_repo_list_cb (evhtp_request_t *req, void *arg)
|
||||
|
||||
for (iter = repos; iter; iter = iter->next) {
|
||||
repo = iter->data;
|
||||
if (repo->type) {
|
||||
seaf_repo_unref (repo);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!repo->is_corrupted) {
|
||||
if (!g_hash_table_lookup (obtained_repos, repo->id)) {
|
||||
|
@ -92,6 +92,7 @@ seaf_repo_free (SeafRepo *repo)
|
||||
g_free (repo->last_modifier);
|
||||
g_free (repo->pwd_hash_algo);
|
||||
g_free (repo->pwd_hash_params);
|
||||
g_free (repo->type);
|
||||
g_free (repo);
|
||||
}
|
||||
|
||||
@ -680,6 +681,7 @@ create_repo_fill_size (SeafDBRow *row, void *data)
|
||||
const char *vrepo_id = seaf_db_row_get_column_text (row, 3);
|
||||
gint64 file_count = seaf_db_row_get_column_int64 (row, 7);
|
||||
int status = seaf_db_row_get_column_int(row, 8);
|
||||
const char *type = seaf_db_row_get_column_text (row, 9);
|
||||
|
||||
*repo = seaf_repo_new (repo_id, NULL, NULL);
|
||||
if (!*repo)
|
||||
@ -712,6 +714,9 @@ create_repo_fill_size (SeafDBRow *row, void *data)
|
||||
} else {
|
||||
memcpy ((*repo)->store_id, repo_id, 36);
|
||||
}
|
||||
if (type) {
|
||||
(*repo)->type = g_strdup(type);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@ -724,7 +729,7 @@ get_repo_from_db (SeafRepoManager *mgr, const char *id, gboolean *db_err)
|
||||
|
||||
if (seaf_db_type(mgr->seaf->db) != SEAF_DB_TYPE_PGSQL)
|
||||
sql = "SELECT r.repo_id, s.size, b.commit_id, "
|
||||
"v.repo_id, v.origin_repo, v.path, v.base_commit, fc.file_count, i.status FROM "
|
||||
"v.repo_id, v.origin_repo, v.path, v.base_commit, fc.file_count, i.status, i.type FROM "
|
||||
"Repo r LEFT JOIN Branch b ON r.repo_id = b.repo_id "
|
||||
"LEFT JOIN RepoSize s ON r.repo_id = s.repo_id "
|
||||
"LEFT JOIN VirtualRepo v ON r.repo_id = v.repo_id "
|
||||
@ -1083,7 +1088,8 @@ create_tables_mysql (SeafRepoManager *mgr)
|
||||
sql = "CREATE TABLE IF NOT EXISTS RepoInfo (id BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, "
|
||||
"repo_id CHAR(36), "
|
||||
"name VARCHAR(255) NOT NULL, update_time BIGINT, version INTEGER, "
|
||||
"is_encrypted INTEGER, last_modifier VARCHAR(255), status INTEGER DEFAULT 0, UNIQUE INDEX(repo_id)) ENGINE=INNODB";
|
||||
"is_encrypted INTEGER, last_modifier VARCHAR(255), status INTEGER DEFAULT 0, type VARCHAR(10), "
|
||||
"UNIQUE INDEX(repo_id), INDEX(type)) ENGINE=INNODB";
|
||||
if (seaf_db_query (db, sql) < 0)
|
||||
return -1;
|
||||
|
||||
@ -2248,6 +2254,7 @@ collect_repos_fill_size_commit (SeafDBRow *row, void *data)
|
||||
gboolean is_encrypted = seaf_db_row_get_column_int (row, 6) ? TRUE : FALSE;
|
||||
const char *last_modifier = seaf_db_row_get_column_text (row, 7);
|
||||
int status = seaf_db_row_get_column_int (row, 8);
|
||||
const char *type = seaf_db_row_get_column_text (row, 9);
|
||||
|
||||
repo = seaf_repo_new (repo_id, NULL, NULL);
|
||||
if (!repo)
|
||||
@ -2259,8 +2266,8 @@ collect_repos_fill_size_commit (SeafDBRow *row, void *data)
|
||||
}
|
||||
|
||||
repo->size = size;
|
||||
if (seaf_db_row_get_column_count (row) == 10) {
|
||||
gint64 file_count = seaf_db_row_get_column_int64 (row, 9);
|
||||
if (seaf_db_row_get_column_count (row) == 11) {
|
||||
gint64 file_count = seaf_db_row_get_column_int64 (row, 10);
|
||||
repo->file_count = file_count;
|
||||
}
|
||||
head = seaf_branch_new ("master", repo_id, commit_id);
|
||||
@ -2273,6 +2280,9 @@ collect_repos_fill_size_commit (SeafDBRow *row, void *data)
|
||||
repo->last_modifier = g_strdup (last_modifier);
|
||||
repo->status = status;
|
||||
}
|
||||
if (type) {
|
||||
repo->type = g_strdup(type);
|
||||
}
|
||||
|
||||
out:
|
||||
*prepos = g_list_prepend (*prepos, repo);
|
||||
@ -2297,7 +2307,7 @@ seaf_repo_manager_get_repos_by_owner (SeafRepoManager *mgr,
|
||||
if (start == -1 && limit == -1) {
|
||||
if (db_type != SEAF_DB_TYPE_PGSQL)
|
||||
sql = "SELECT o.repo_id, s.size, b.commit_id, i.name, i.update_time, "
|
||||
"i.version, i.is_encrypted, i.last_modifier, i.status FROM "
|
||||
"i.version, i.is_encrypted, i.last_modifier, i.status, i.type FROM "
|
||||
"RepoOwner o LEFT JOIN RepoSize s ON o.repo_id = s.repo_id "
|
||||
"LEFT JOIN Branch b ON o.repo_id = b.repo_id "
|
||||
"LEFT JOIN RepoInfo i ON o.repo_id = i.repo_id "
|
||||
@ -2325,7 +2335,7 @@ seaf_repo_manager_get_repos_by_owner (SeafRepoManager *mgr,
|
||||
} else {
|
||||
if (db_type != SEAF_DB_TYPE_PGSQL)
|
||||
sql = "SELECT o.repo_id, s.size, b.commit_id, i.name, i.update_time, "
|
||||
"i.version, i.is_encrypted, i.last_modifier, i.status FROM "
|
||||
"i.version, i.is_encrypted, i.last_modifier, i.status, i.type FROM "
|
||||
"RepoOwner o LEFT JOIN RepoSize s ON o.repo_id = s.repo_id "
|
||||
"LEFT JOIN Branch b ON o.repo_id = b.repo_id "
|
||||
"LEFT JOIN RepoInfo i ON o.repo_id = i.repo_id "
|
||||
@ -2412,7 +2422,7 @@ seaf_repo_manager_get_repos_by_id_prefix (SeafRepoManager *mgr,
|
||||
if (start == -1 && limit == -1) {
|
||||
if (db_type != SEAF_DB_TYPE_PGSQL)
|
||||
sql = "SELECT i.repo_id, s.size, b.commit_id, i.name, i.update_time, "
|
||||
"i.version, i.is_encrypted, i.last_modifier, i.status FROM "
|
||||
"i.version, i.is_encrypted, i.last_modifier, i.status, i.type FROM "
|
||||
"RepoInfo i LEFT JOIN RepoSize s ON i.repo_id = s.repo_id "
|
||||
"LEFT JOIN Branch b ON i.repo_id = b.repo_id "
|
||||
"LEFT JOIN VirtualRepo v ON i.repo_id = v.repo_id "
|
||||
@ -2437,7 +2447,7 @@ seaf_repo_manager_get_repos_by_id_prefix (SeafRepoManager *mgr,
|
||||
} else {
|
||||
if (db_type != SEAF_DB_TYPE_PGSQL)
|
||||
sql = "SELECT i.repo_id, s.size, b.commit_id, i.name, i.update_time, "
|
||||
"i.version, i.is_encrypted, i.last_modifier, i.status FROM "
|
||||
"i.version, i.is_encrypted, i.last_modifier, i.status, i.type FROM "
|
||||
"RepoInfo i LEFT JOIN RepoSize s ON i.repo_id = s.repo_id "
|
||||
"LEFT JOIN Branch b ON i.repo_id = b.repo_id "
|
||||
"LEFT JOIN VirtualRepo v ON i.repo_id = v.repo_id "
|
||||
@ -2482,7 +2492,7 @@ seaf_repo_manager_search_repos_by_name (SeafRepoManager *mgr, const char *name)
|
||||
switch (seaf_db_type(seaf->db)) {
|
||||
case SEAF_DB_TYPE_MYSQL:
|
||||
sql = "SELECT i.repo_id, s.size, b.commit_id, i.name, i.update_time, "
|
||||
"i.version, i.is_encrypted, i.last_modifier, i.status, fc.file_count FROM "
|
||||
"i.version, i.is_encrypted, i.last_modifier, i.status, i.type, fc.file_count FROM "
|
||||
"RepoInfo i LEFT JOIN RepoSize s ON i.repo_id = s.repo_id "
|
||||
"LEFT JOIN Branch b ON i.repo_id = b.repo_id "
|
||||
"LEFT JOIN RepoFileCount fc ON i.repo_id = fc.repo_id "
|
||||
@ -2506,7 +2516,7 @@ seaf_repo_manager_search_repos_by_name (SeafRepoManager *mgr, const char *name)
|
||||
break;
|
||||
case SEAF_DB_TYPE_SQLITE:
|
||||
sql = "SELECT i.repo_id, s.size, b.commit_id, i.name, i.update_time, "
|
||||
"i.version, i.is_encrypted, i.last_modifier, i.status, fc.file_count FROM "
|
||||
"i.version, i.is_encrypted, i.last_modifier, i.status, i.type, fc.file_count FROM "
|
||||
"RepoInfo i LEFT JOIN RepoSize s ON i.repo_id = s.repo_id "
|
||||
"LEFT JOIN Branch b ON i.repo_id = b.repo_id "
|
||||
"LEFT JOIN RepoFileCount fc ON i.repo_id = fc.repo_id "
|
||||
@ -2559,7 +2569,7 @@ seaf_repo_manager_get_repo_list (SeafRepoManager *mgr, int start, int limit, con
|
||||
switch (seaf_db_type(mgr->seaf->db)) {
|
||||
case SEAF_DB_TYPE_MYSQL:
|
||||
g_string_append (sql, "SELECT i.repo_id, s.size, b.commit_id, i.name, i.update_time, "
|
||||
"i.version, i.is_encrypted, i.last_modifier, i.status, f.file_count FROM "
|
||||
"i.version, i.is_encrypted, i.last_modifier, i.status, i.type, f.file_count FROM "
|
||||
"RepoInfo i LEFT JOIN RepoSize s ON i.repo_id = s.repo_id "
|
||||
"LEFT JOIN Branch b ON i.repo_id = b.repo_id "
|
||||
"LEFT JOIN RepoFileCount f ON i.repo_id = f.repo_id "
|
||||
@ -2577,7 +2587,7 @@ seaf_repo_manager_get_repo_list (SeafRepoManager *mgr, int start, int limit, con
|
||||
break;
|
||||
case SEAF_DB_TYPE_SQLITE:
|
||||
g_string_append (sql, "SELECT i.repo_id, s.size, b.commit_id, i.name, i.update_time, "
|
||||
"i.version, i.is_encrypted, i.last_modifier, i.status, f.file_count FROM "
|
||||
"i.version, i.is_encrypted, i.last_modifier, i.status, i.type, f.file_count FROM "
|
||||
"RepoInfo i LEFT JOIN RepoSize s ON i.repo_id = s.repo_id "
|
||||
"LEFT JOIN Branch b ON i.repo_id = b.repo_id "
|
||||
"LEFT JOIN RepoFileCount f ON i.repo_id = f.repo_id "
|
||||
@ -2605,7 +2615,7 @@ seaf_repo_manager_get_repo_list (SeafRepoManager *mgr, int start, int limit, con
|
||||
switch (seaf_db_type(mgr->seaf->db)) {
|
||||
case SEAF_DB_TYPE_MYSQL:
|
||||
g_string_append (sql, "SELECT i.repo_id, s.size, b.commit_id, i.name, i.update_time, "
|
||||
"i.version, i.is_encrypted, i.last_modifier, i.status, f.file_count FROM "
|
||||
"i.version, i.is_encrypted, i.last_modifier, i.status, i.type, f.file_count FROM "
|
||||
"RepoInfo i LEFT JOIN RepoSize s ON i.repo_id = s.repo_id "
|
||||
"LEFT JOIN Branch b ON i.repo_id = b.repo_id "
|
||||
"LEFT JOIN RepoFileCount f ON i.repo_id = f.repo_id "
|
||||
@ -2623,7 +2633,7 @@ seaf_repo_manager_get_repo_list (SeafRepoManager *mgr, int start, int limit, con
|
||||
break;
|
||||
case SEAF_DB_TYPE_SQLITE:
|
||||
g_string_append (sql, "SELECT i.repo_id, s.size, b.commit_id, i.name, i.update_time, "
|
||||
"i.version, i.is_encrypted, i.last_modifier, i.status, f.file_count FROM "
|
||||
"i.version, i.is_encrypted, i.last_modifier, i.status, i.type, f.file_count FROM "
|
||||
"RepoInfo i LEFT JOIN RepoSize s ON i.repo_id = s.repo_id "
|
||||
"LEFT JOIN Branch b ON i.repo_id = b.repo_id "
|
||||
"LEFT JOIN RepoFileCount f ON i.repo_id = f.repo_id "
|
||||
@ -3298,6 +3308,7 @@ get_group_repos_cb (SeafDBRow *row, void *data)
|
||||
gboolean is_encrypted = seaf_db_row_get_column_int (row, 12) ? TRUE : FALSE;
|
||||
const char *last_modifier = seaf_db_row_get_column_text (row, 13);
|
||||
int status = seaf_db_row_get_column_int (row, 14);
|
||||
const char *type = seaf_db_row_get_column_text (row, 15);
|
||||
|
||||
char *user_name_l = g_ascii_strdown (user_name, -1);
|
||||
|
||||
@ -3319,7 +3330,7 @@ get_group_repos_cb (SeafDBRow *row, void *data)
|
||||
if (vrepo_id) {
|
||||
const char *origin_repo_id = seaf_db_row_get_column_text (row, 7);
|
||||
const char *origin_path = seaf_db_row_get_column_text (row, 8);
|
||||
const char *origin_repo_name = seaf_db_row_get_column_text (row, 15);
|
||||
const char *origin_repo_name = seaf_db_row_get_column_text (row, 16);
|
||||
g_object_set (srepo, "store_id", origin_repo_id,
|
||||
"origin_repo_id", origin_repo_id,
|
||||
"origin_repo_name", origin_repo_name,
|
||||
@ -3336,6 +3347,9 @@ get_group_repos_cb (SeafDBRow *row, void *data)
|
||||
"encrypted", is_encrypted,
|
||||
"last_modifier", last_modifier, NULL);
|
||||
}
|
||||
if (type) {
|
||||
g_object_set (srepo, "repo_type", type, NULL);
|
||||
}
|
||||
*p_list = g_list_prepend (*p_list, srepo);
|
||||
}
|
||||
|
||||
@ -3411,7 +3425,7 @@ seaf_repo_manager_get_repos_by_group (SeafRepoManager *mgr,
|
||||
sql = "SELECT RepoGroup.repo_id, v.repo_id, "
|
||||
"group_id, user_name, permission, commit_id, s.size, "
|
||||
"v.origin_repo, v.path, i.name, "
|
||||
"i.update_time, i.version, i.is_encrypted, i.last_modifier, i.status, i2.name "
|
||||
"i.update_time, i.version, i.is_encrypted, i.last_modifier, i.status, i.type, i2.name "
|
||||
"FROM RepoGroup LEFT JOIN VirtualRepo v ON "
|
||||
"RepoGroup.repo_id = v.repo_id "
|
||||
"LEFT JOIN RepoInfo i ON RepoGroup.repo_id = i.repo_id "
|
||||
@ -3449,7 +3463,7 @@ seaf_repo_manager_get_group_repos_by_owner (SeafRepoManager *mgr,
|
||||
sql = "SELECT RepoGroup.repo_id, v.repo_id, "
|
||||
"group_id, user_name, permission, commit_id, s.size, "
|
||||
"v.origin_repo, v.path, i.name, "
|
||||
"i.update_time, i.version, i.is_encrypted, i.last_modifier, i.status, i2.name "
|
||||
"i.update_time, i.version, i.is_encrypted, i.last_modifier, i.status, i.type, i2.name "
|
||||
"FROM RepoGroup LEFT JOIN VirtualRepo v ON "
|
||||
"RepoGroup.repo_id = v.repo_id "
|
||||
"LEFT JOIN RepoInfo i ON RepoGroup.repo_id = i.repo_id "
|
||||
@ -3600,6 +3614,7 @@ collect_public_repos (SeafDBRow *row, void *data)
|
||||
gboolean is_encrypted = seaf_db_row_get_column_int (row, 11) ? TRUE : FALSE;
|
||||
const char *last_modifier = seaf_db_row_get_column_text (row, 12);
|
||||
int status = seaf_db_row_get_column_int (row, 13);
|
||||
const char *type = seaf_db_row_get_column_text (row, 14);
|
||||
|
||||
char *owner_l = g_ascii_strdown (owner, -1);
|
||||
|
||||
@ -3636,6 +3651,9 @@ collect_public_repos (SeafDBRow *row, void *data)
|
||||
"encrypted", is_encrypted,
|
||||
"last_modifier", last_modifier, NULL);
|
||||
}
|
||||
if (type) {
|
||||
g_object_set (srepo, "repo_type", type, NULL);
|
||||
}
|
||||
|
||||
*ret = g_list_prepend (*ret, srepo);
|
||||
}
|
||||
@ -3652,7 +3670,7 @@ seaf_repo_manager_list_inner_pub_repos (SeafRepoManager *mgr, gboolean *db_err)
|
||||
sql = "SELECT InnerPubRepo.repo_id, VirtualRepo.repo_id, "
|
||||
"owner_id, permission, commit_id, s.size, "
|
||||
"VirtualRepo.origin_repo, VirtualRepo.path, i.name, "
|
||||
"i.update_time, i.version, i.is_encrypted, i.last_modifier, i.status "
|
||||
"i.update_time, i.version, i.is_encrypted, i.last_modifier, i.status, i.type "
|
||||
"FROM InnerPubRepo LEFT JOIN VirtualRepo ON "
|
||||
"InnerPubRepo.repo_id=VirtualRepo.repo_id "
|
||||
"LEFT JOIN RepoInfo i ON InnerPubRepo.repo_id = i.repo_id "
|
||||
@ -3696,7 +3714,7 @@ seaf_repo_manager_list_inner_pub_repos_by_owner (SeafRepoManager *mgr,
|
||||
sql = "SELECT InnerPubRepo.repo_id, VirtualRepo.repo_id, "
|
||||
"owner_id, permission, commit_id, s.size, "
|
||||
"VirtualRepo.origin_repo, VirtualRepo.path, i.name, "
|
||||
"i.update_time, i.version, i.is_encrypted, i.last_modifier, i.status "
|
||||
"i.update_time, i.version, i.is_encrypted, i.last_modifier, i.status, i.type "
|
||||
"FROM InnerPubRepo LEFT JOIN VirtualRepo ON "
|
||||
"InnerPubRepo.repo_id=VirtualRepo.repo_id "
|
||||
"LEFT JOIN RepoInfo i ON InnerPubRepo.repo_id = i.repo_id "
|
||||
@ -4575,7 +4593,7 @@ seaf_get_group_shared_repo_by_path (SeafRepoManager *mgr,
|
||||
sql = "SELECT RepoGroup.repo_id, v.repo_id, "
|
||||
"group_id, user_name, permission, commit_id, s.size, "
|
||||
"v.origin_repo, v.path, i.name, "
|
||||
"i.update_time, i.version, i.is_encrypted, i.last_modifier, i.status, i2.name "
|
||||
"i.update_time, i.version, i.is_encrypted, i.last_modifier, i.status, i.type, i2.name "
|
||||
"FROM RepoGroup LEFT JOIN VirtualRepo v ON "
|
||||
"RepoGroup.repo_id = v.repo_id "
|
||||
"LEFT JOIN RepoInfo i ON RepoGroup.repo_id = i.repo_id "
|
||||
@ -4589,7 +4607,7 @@ seaf_get_group_shared_repo_by_path (SeafRepoManager *mgr,
|
||||
sql = "SELECT OrgGroupRepo.repo_id, v.repo_id, "
|
||||
"group_id, owner, permission, commit_id, s.size, "
|
||||
"v.origin_repo, v.path, i.name, "
|
||||
"i.update_time, i.version, i.is_encrypted, i.last_modifier, i.status, i2.name "
|
||||
"i.update_time, i.version, i.is_encrypted, i.last_modifier, i.status, i.type, i2.name "
|
||||
"FROM OrgGroupRepo LEFT JOIN VirtualRepo v ON "
|
||||
"OrgGroupRepo.repo_id = v.repo_id "
|
||||
"LEFT JOIN RepoInfo i ON OrgRepoGroup.repo_id = i.repo_id "
|
||||
@ -4648,7 +4666,7 @@ seaf_get_group_repos_by_user (SeafRepoManager *mgr,
|
||||
g_string_printf (sql, "SELECT g.repo_id, v.repo_id, "
|
||||
"group_id, %s, permission, commit_id, s.size, "
|
||||
"v.origin_repo, v.path, i.name, "
|
||||
"i.update_time, i.version, i.is_encrypted, i.last_modifier, i.status, i2.name "
|
||||
"i.update_time, i.version, i.is_encrypted, i.last_modifier, i.status, i.type, i2.name "
|
||||
"FROM %s g LEFT JOIN VirtualRepo v ON "
|
||||
"g.repo_id = v.repo_id "
|
||||
"LEFT JOIN RepoInfo i ON g.repo_id = i.repo_id "
|
||||
|
@ -42,6 +42,7 @@ struct _SeafRepo {
|
||||
gint64 last_modify;
|
||||
gint64 size;
|
||||
gint64 file_count;
|
||||
gchar *type;
|
||||
|
||||
int status;
|
||||
|
||||
|
@ -189,7 +189,8 @@ collect_repos (SeafDBRow *row, void *data)
|
||||
gboolean is_encrypted = seaf_db_row_get_column_int (row, 11) ? TRUE : FALSE;
|
||||
const char *last_modifier = seaf_db_row_get_column_text (row, 12);
|
||||
int status = seaf_db_row_get_column_int (row, 13);
|
||||
const char *origin_repo_name = seaf_db_row_get_column_text (row, 14);
|
||||
const char *type = seaf_db_row_get_column_text (row, 14);
|
||||
const char *origin_repo_name = seaf_db_row_get_column_text (row, 15);
|
||||
|
||||
char *email_l = g_ascii_strdown (email, -1);
|
||||
|
||||
@ -226,6 +227,9 @@ collect_repos (SeafDBRow *row, void *data)
|
||||
"encrypted", is_encrypted,
|
||||
"last_modifier", last_modifier, NULL);
|
||||
}
|
||||
if (type) {
|
||||
g_object_set (repo, "repo_type", type, NULL);
|
||||
}
|
||||
*p_repos = g_list_prepend (*p_repos, repo);
|
||||
}
|
||||
|
||||
@ -303,7 +307,7 @@ seaf_share_manager_list_share_repos (SeafShareManager *mgr, const char *email,
|
||||
sql = "SELECT sh.repo_id, v.repo_id, "
|
||||
"to_email, permission, commit_id, s.size, "
|
||||
"v.origin_repo, v.path, i.name, "
|
||||
"i.update_time, i.version, i.is_encrypted, i.last_modifier, i.status, "
|
||||
"i.update_time, i.version, i.is_encrypted, i.last_modifier, i.status, i.type, "
|
||||
"i2.name FROM "
|
||||
"SharedRepo sh LEFT JOIN VirtualRepo v ON "
|
||||
"sh.repo_id=v.repo_id "
|
||||
@ -318,7 +322,7 @@ seaf_share_manager_list_share_repos (SeafShareManager *mgr, const char *email,
|
||||
sql = "SELECT sh.repo_id, v.repo_id, "
|
||||
"from_email, permission, commit_id, s.size, "
|
||||
"v.origin_repo, v.path, i.name, "
|
||||
"i.update_time, i.version, i.is_encrypted, i.last_modifier, i.status, "
|
||||
"i.update_time, i.version, i.is_encrypted, i.last_modifier, i.status, i.type, "
|
||||
"i2.name FROM "
|
||||
"SharedRepo sh LEFT JOIN VirtualRepo v ON "
|
||||
"sh.repo_id=v.repo_id "
|
||||
@ -353,7 +357,7 @@ seaf_share_manager_list_share_repos (SeafShareManager *mgr, const char *email,
|
||||
sql = "SELECT sh.repo_id, v.repo_id, "
|
||||
"to_email, permission, commit_id, s.size, "
|
||||
"v.origin_repo, v.path, i.name, "
|
||||
"i.update_time, i.version, i.is_encrypted, i.last_modifier, i.status, "
|
||||
"i.update_time, i.version, i.is_encrypted, i.last_modifier, i.status, i.type, "
|
||||
"i2.name FROM "
|
||||
"SharedRepo sh LEFT JOIN VirtualRepo v ON "
|
||||
"sh.repo_id=v.repo_id "
|
||||
@ -369,7 +373,7 @@ seaf_share_manager_list_share_repos (SeafShareManager *mgr, const char *email,
|
||||
sql = "SELECT sh.repo_id, v.repo_id, "
|
||||
"from_email, permission, commit_id, s.size, "
|
||||
"v.origin_repo, v.path, i.name, "
|
||||
"i.update_time, i.version, i.is_encrypted, i.last_modifier, i.status, "
|
||||
"i.update_time, i.version, i.is_encrypted, i.last_modifier, i.status, i.type, "
|
||||
"i2.name FROM "
|
||||
"SharedRepo sh LEFT JOIN VirtualRepo v ON "
|
||||
"sh.repo_id=v.repo_id "
|
||||
@ -813,7 +817,7 @@ seaf_get_shared_repo_by_path (SeafRepoManager *mgr,
|
||||
sql = "SELECT sh.repo_id, v.repo_id, "
|
||||
"from_email, permission, commit_id, s.size, "
|
||||
"v.origin_repo, v.path, i.name, "
|
||||
"i.update_time, i.version, i.is_encrypted, i.last_modifier, i.status, "
|
||||
"i.update_time, i.version, i.is_encrypted, i.last_modifier, i.status, i.type, "
|
||||
"i2.name FROM "
|
||||
"SharedRepo sh LEFT JOIN VirtualRepo v ON "
|
||||
"sh.repo_id=v.repo_id "
|
||||
@ -827,7 +831,7 @@ seaf_get_shared_repo_by_path (SeafRepoManager *mgr,
|
||||
sql = "SELECT sh.repo_id, v.repo_id, "
|
||||
"from_email, permission, commit_id, s.size, "
|
||||
"v.origin_repo, v.path, i.name, "
|
||||
"i.update_time, i.version, i.is_encrypted, i.last_modifier, i.status, "
|
||||
"i.update_time, i.version, i.is_encrypted, i.last_modifier, i.status, i.type, "
|
||||
"i2.name FROM "
|
||||
"OrgSharedRepo sh LEFT JOIN VirtualRepo v ON "
|
||||
"sh.repo_id=v.repo_id "
|
||||
|
Loading…
Reference in New Issue
Block a user