metadata_db_migration_util.h revision 5f1c94371a64b3196d4be9466099bb892df9b88e
1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_METADATA_DB_MIGRATION_UTIL_H_
6#define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_METADATA_DB_MIGRATION_UTIL_H_
7
8#include <string>
9
10#include "chrome/browser/sync_file_system/sync_file_system.pb.h"
11#include "chrome/browser/sync_file_system/sync_status_code.h"
12#include "third_party/leveldatabase/src/include/leveldb/db.h"
13
14class GURL;
15
16namespace sync_file_system {
17namespace drive_backend {
18
19// Parses a filesystem URL which contains 'drive' as a service name
20// (a.k.a. V0-format filesystem URL).
21//
22// When you parse V0-format filesystem URL, you should use this function instead
23// of DeserializeSyncableFileSystemURL() since 'drive' service name is no longer
24// used and the deserializer cannot parse the unregistered service name.
25//
26// EXAMPLE:
27// Assume following argument is given.
28//   url: 'filesystem:http://www.example.com/external/drive/foo/bar'
29// returns
30//   origin: 'http://www.example.com/'
31//   path:   'foo/bar'
32bool ParseV0FormatFileSystemURL(const GURL& url,
33                                GURL* origin,
34                                base::FilePath* path);
35
36// Adds "file:" prefix to WAPI resource ID.
37// EXAMPLE:  "xxx" => "file:xxx"
38std::string AddWapiFilePrefix(const std::string& resource_id);
39
40// Adds "folder:" prefix to WAPI resource ID.
41// EXAMPLE:  "xxx" => "folder:xxx"
42std::string AddWapiFolderPrefix(const std::string& resource_id);
43
44// Adds a prefix corresponding to the given |type|.
45std::string AddWapiIdPrefix(const std::string& resource_id,
46                            DriveMetadata_ResourceType type);
47
48// Removes a prefix from WAPI resource ID.
49// EXAMPLE:
50//   "file:xxx"    =>  "xxx"
51//   "folder:yyy"  =>  "yyy"
52//   "zzz"         =>  "zzz"
53std::string RemoveWapiIdPrefix(const std::string& resource_id);
54
55// Migrate |db| schema from version 0 to version 1.
56SyncStatusCode MigrateDatabaseFromV0ToV1(leveldb::DB* db);
57
58// Migrate |db| schema from version 1 to version 2.
59SyncStatusCode MigrateDatabaseFromV1ToV2(leveldb::DB* db);
60
61// Rollback |db| schema from version 4 to version 3.
62SyncStatusCode MigrateDatabaseFromV4ToV3(leveldb::DB* db);
63
64}  // namespace drive_backend
65}  // namespace sync_file_system
66
67#endif  // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_METADATA_DB_MIGRATION_UTIL_H_
68