/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ #ifndef SEAF_REPO_MGR_H #define SEAF_REPO_MGR_H #include #include "seafile-object.h" #include "commit-mgr.h" #include "branch-mgr.h" struct _SeafRepoManager; typedef struct _SeafRepo SeafRepo; struct _SeafRepo { struct _SeafRepoManager *manager; gchar id[37]; gchar *name; gchar *desc; gchar *category; /* not used yet */ gboolean encrypted; int enc_version; gchar magic[33]; /* hash(repo_id + passwd), key stretched. */ gboolean no_local_history; SeafBranch *head; gboolean is_corrupted; gboolean delete_pending; int ref_cnt; int version; /* Used to access fs and block sotre. * This id is different from repo_id when this repo is virtual. * Virtual repos share fs and block store with its origin repo. * However, commit store for each repo is always independent. * So always use repo_id to access commit store. */ gchar store_id[37]; }; gboolean is_repo_id_valid (const char *id); SeafRepo* seaf_repo_new (const char *id, const char *name, const char *desc); void seaf_repo_free (SeafRepo *repo); void seaf_repo_ref (SeafRepo *repo); void seaf_repo_unref (SeafRepo *repo); typedef struct _SeafRepoManager SeafRepoManager; typedef struct _SeafRepoManagerPriv SeafRepoManagerPriv; struct _SeafRepoManager { struct _SeafileSession *seaf; SeafRepoManagerPriv *priv; }; SeafRepoManager* seaf_repo_manager_new (struct _SeafileSession *seaf); int seaf_repo_manager_init (SeafRepoManager *mgr); int seaf_repo_manager_start (SeafRepoManager *mgr); int seaf_repo_manager_add_repo (SeafRepoManager *mgr, SeafRepo *repo); int seaf_repo_manager_del_repo (SeafRepoManager *mgr, SeafRepo *repo); SeafRepo* seaf_repo_manager_get_repo (SeafRepoManager *manager, const gchar *id); gboolean seaf_repo_manager_repo_exists (SeafRepoManager *manager, const gchar *id); GList* seaf_repo_manager_get_repo_list (SeafRepoManager *mgr, int start, int limit); GList * seaf_repo_manager_get_repo_id_list (SeafRepoManager *mgr); GList * seaf_repo_manager_get_repos_by_owner (SeafRepoManager *mgr, const char *email); gboolean seaf_repo_manager_is_virtual_repo (SeafRepoManager *mgr, const char *repo_id); #endif