8
8
9
9
#import " OCTUser+MRCPersistence.h"
10
10
11
- #define INSERT_STATEMENT @" INSERT INTO User VALUES (: id, :rawLogin , :login, :name, :bio, :email, :avatar_url, :html_url, :blog, :company, :location, :collaborators, :public_repos, :owned_private_repos, :public_gists, :private_gists, :followers, :following, :disk_usage);"
12
- #define UPDATE_STATEMENT @" UPDATE User SET rawLogin = :rawLogin, login = :login, name = :name, bio = :bio, email = :email, avatar_url = :avatar_url, html_url = :html_url, blog = :blog, company = :company, location = :location, collaborators = :collaborators, public_repos = :public_repos, owned_private_repos = :owned_private_repos, public_gists = :public_gists, private_gists = :private_gists, followers = :followers, following = :following, disk_usage = :disk_usage WHERE id = :id;"
13
- #define UPDATE_STATEMENT_LIST @" UPDATE User SET rawLogin = :rawLogin, login = :login, bio = :bio, avatar_url = :avatar_url, html_url = :html_url, collaborators = :collaborators, owned_private_repos = :owned_private_repos, public_gists = :public_gists, private_gists = :private_gists, disk_usage = :disk_usage WHERE id = :id;"
11
+ #define INSERT_STATEMENT @" INSERT INTO User ( id, login, name, bio, email, avatar_url, html_url, blog, company, location, collaborators, public_repos, owned_private_repos, public_gists, private_gists, followers, following, disk_usage) VALUES (:id , :login, :name, :bio, :email, :avatar_url, :html_url, :blog, :company, :location, :collaborators, :public_repos, :owned_private_repos, :public_gists, :private_gists, :followers, :following, :disk_usage);"
12
+ #define UPDATE_STATEMENT @" UPDATE User SET login = :login, name = :name, bio = :bio, email = :email, avatar_url = :avatar_url, html_url = :html_url, blog = :blog, company = :company, location = :location, collaborators = :collaborators, public_repos = :public_repos, owned_private_repos = :owned_private_repos, public_gists = :public_gists, private_gists = :private_gists, followers = :followers, following = :following, disk_usage = :disk_usage WHERE id = :id;"
13
+ #define UPDATE_STATEMENT_LIST @" UPDATE User SET login = :login, bio = :bio, avatar_url = :avatar_url, html_url = :html_url, collaborators = :collaborators, owned_private_repos = :owned_private_repos, public_gists = :public_gists, private_gists = :private_gists, disk_usage = :disk_usage WHERE id = :id;"
14
14
15
15
@implementation OCTUser (MRCPersistence)
16
16
@@ -69,6 +69,35 @@ - (BOOL)mrc_delete {
69
69
70
70
#pragma mark - Save Or Update Users
71
71
72
+ - (BOOL )mrc_updateRawLogin {
73
+ __block BOOL result = YES ;
74
+
75
+ [[FMDatabaseQueue sharedInstance ] inDatabase: ^(FMDatabase *db) {
76
+ FMResultSet *rs = [db executeQuery: @" SELECT * FROM User WHERE id = ? LIMIT 1;" , self .objectID];
77
+
78
+ @onExit {
79
+ [rs close ];
80
+ };
81
+
82
+ if (rs == nil ) {
83
+ mrcLogLastError (db);
84
+ result = NO ;
85
+ return ;
86
+ }
87
+
88
+ if ([rs next ]) {
89
+ BOOL success = [db executeUpdate: @" UPDATE User SET rawLogin = ? WHERE id = ?;" , self .rawLogin, self .objectID];
90
+ if (!success) {
91
+ mrcLogLastError (db);
92
+ result = NO ;
93
+ return ;
94
+ }
95
+ }
96
+ }];
97
+
98
+ return result;
99
+ }
100
+
72
101
+ (BOOL )mrc_saveOrUpdateUsers : (NSArray *)users {
73
102
if (users.count == 0 ) return YES ;
74
103
@@ -221,6 +250,9 @@ + (instancetype)mrc_currentUser {
221
250
OCTUser *currentUser = [[MRCMemoryCache sharedInstance ] objectForKey: @" currentUser" ];
222
251
if (!currentUser) {
223
252
currentUser = [self mrc_fetchUserWithRawLogin: [SSKeychain rawLogin ]];
253
+
254
+ NSAssert (currentUser != nil , @" The retrieved currentUser must not be nil." );
255
+
224
256
[[MRCMemoryCache sharedInstance ] setObject: currentUser forKey: @" currentUser" ];
225
257
}
226
258
return currentUser;
@@ -232,7 +264,7 @@ + (instancetype)mrc_fetchUserWithRawLogin:(NSString *)rawLogin {
232
264
__block OCTUser *user = nil ;
233
265
234
266
[[FMDatabaseQueue sharedInstance ] inDatabase: ^(FMDatabase *db) {
235
- FMResultSet *rs = [db executeQuery: @" SELECT * FROM User WHERE login = ? OR email = ? LIMIT 1;" , rawLogin, rawLogin];
267
+ FMResultSet *rs = [db executeQuery: @" SELECT * FROM User WHERE rawLogin = ? OR login = ? OR email = ? LIMIT 1;" , rawLogin , rawLogin, rawLogin];
236
268
237
269
@onExit {
238
270
[rs close ];
0 commit comments