Implement similar structure we have in Java plugin.
Reviewed By: lblasa Differential Revision: D48172579 fbshipit-source-id: b2127507b04cdb85f426313e71405a81103e42bd
This commit is contained in:
committed by
Facebook GitHub Bot
parent
3003330067
commit
fea326be79
@@ -0,0 +1,10 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
|
|
||||||
|
@protocol DatabaseDescriptor<NSObject>
|
||||||
|
- (NSString*)name;
|
||||||
|
@end
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#import <Foundation/Foundation.h>
|
||||||
|
|
||||||
|
@protocol DatabaseDescriptor;
|
||||||
|
|
||||||
|
@protocol DatabaseDriver<NSObject>
|
||||||
|
@property(nonatomic, strong, readonly) id<DatabaseDescriptor>
|
||||||
|
databaseDescriptor;
|
||||||
|
|
||||||
|
- (NSArray<id<DatabaseDescriptor>>*)getDatabases;
|
||||||
|
- (NSArray<NSString*>*)getTableNames:(id<DatabaseDescriptor>)databaseDescriptor;
|
||||||
|
|
||||||
|
@end
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#import <Foundation/Foundation.h>
|
||||||
|
|
||||||
|
@protocol DatabaseDriver;
|
||||||
|
@protocol DatabaseDescriptor;
|
||||||
|
@protocol FlipperConnection;
|
||||||
|
|
||||||
|
@interface DatabasesManager : NSObject
|
||||||
|
|
||||||
|
@property(nonatomic, strong) id<FlipperConnection> connection;
|
||||||
|
@property(nonatomic, strong, readonly)
|
||||||
|
NSArray<id<DatabaseDriver>>* databaseDrivers;
|
||||||
|
|
||||||
|
- (instancetype)initWithDatabaseDrivers:
|
||||||
|
(NSArray<id<DatabaseDriver>>*)databaseDrivers;
|
||||||
|
- (void)setConnection:(id<FlipperConnection>)connection;
|
||||||
|
- (BOOL)isConnected;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface DatabaseDescriptorHolder : NSObject
|
||||||
|
|
||||||
|
@property(nonatomic, assign, readonly) NSInteger identifier;
|
||||||
|
@property(nonatomic, strong, readonly) id<DatabaseDriver> databaseDriver;
|
||||||
|
@property(nonatomic, strong, readonly) id<DatabaseDescriptor>
|
||||||
|
databaseDescriptor;
|
||||||
|
|
||||||
|
- (instancetype)initWithIdentifier:(NSInteger)identifier
|
||||||
|
databaseDriver:(id<DatabaseDriver>)databaseDriver
|
||||||
|
databaseDescriptor:(id<DatabaseDescriptor>)databaseDescriptor;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface ExecuteSqlRequest : NSObject
|
||||||
|
|
||||||
|
@property(nonatomic, assign, readonly) NSInteger databaseId;
|
||||||
|
@property(nonatomic, copy, readonly) NSString* value;
|
||||||
|
|
||||||
|
- (instancetype)initWithDatabaseId:(NSInteger)databaseId value:(NSString*)value;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface GetTableDataRequest : NSObject
|
||||||
|
|
||||||
|
@property(nonatomic, assign, readonly) NSInteger databaseId;
|
||||||
|
@property(nonatomic, copy, readonly) NSString* table;
|
||||||
|
@property(nonatomic, copy, readonly) NSString* order;
|
||||||
|
@property(nonatomic, assign, readonly) BOOL reverse;
|
||||||
|
@property(nonatomic, assign, readonly) NSInteger start;
|
||||||
|
@property(nonatomic, assign, readonly) NSInteger count;
|
||||||
|
|
||||||
|
- (instancetype)initWithDatabaseId:(NSInteger)databaseId
|
||||||
|
table:(NSString*)table
|
||||||
|
order:(NSString*)order
|
||||||
|
reverse:(BOOL)reverse
|
||||||
|
start:(NSInteger)start
|
||||||
|
count:(NSInteger)count;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface GetTableStructureRequest : NSObject
|
||||||
|
|
||||||
|
@property(nonatomic, assign, readonly) NSInteger databaseId;
|
||||||
|
@property(nonatomic, copy, readonly) NSString* table;
|
||||||
|
|
||||||
|
- (instancetype)initWithDatabaseId:(NSInteger)databaseId table:(NSString*)table;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface GetTableInfoRequest : NSObject
|
||||||
|
|
||||||
|
@property(nonatomic, assign, readonly) NSInteger databaseId;
|
||||||
|
@property(nonatomic, copy, readonly) NSString* table;
|
||||||
|
|
||||||
|
- (instancetype)initWithDatabaseId:(NSInteger)databaseId table:(NSString*)table;
|
||||||
|
|
||||||
|
@end
|
||||||
@@ -0,0 +1,136 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#import "DatabasesManager.h"
|
||||||
|
#import <FlipperKit/FlipperClient.h>
|
||||||
|
#import <FlipperKit/FlipperConnection.h>
|
||||||
|
#import <FlipperKit/FlipperResponder.h>
|
||||||
|
#import "DatabaseDriver.h"
|
||||||
|
|
||||||
|
@interface DatabasesManager ()
|
||||||
|
|
||||||
|
@property(nonatomic, strong)
|
||||||
|
NSMutableDictionary<NSNumber*, DatabaseDescriptorHolder*>*
|
||||||
|
databaseDescriptorHolders;
|
||||||
|
@property(nonatomic, strong)
|
||||||
|
NSMutableSet<DatabaseDescriptorHolder*>* databaseDescriptorHolderSet;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation DatabasesManager
|
||||||
|
|
||||||
|
- (instancetype)initWithDatabaseDrivers:
|
||||||
|
(NSArray<id<DatabaseDriver>>*)databaseDrivers {
|
||||||
|
self = [super init];
|
||||||
|
if (self) {
|
||||||
|
_databaseDrivers = [databaseDrivers copy];
|
||||||
|
_databaseDescriptorHolders = [[NSMutableDictionary alloc] init];
|
||||||
|
_databaseDescriptorHolderSet = [[NSMutableSet alloc] init];
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)setConnection:(id<FlipperConnection>)connection {
|
||||||
|
_connection = connection;
|
||||||
|
if (connection) {
|
||||||
|
[self listenForCommands];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (BOOL)isConnected {
|
||||||
|
return _connection != nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)listenForCommands {
|
||||||
|
// TODO(fulvioabrahao) implement commands.
|
||||||
|
[self.connection
|
||||||
|
receive:@"databaseList"
|
||||||
|
withBlock:^(NSDictionary* params, id<FlipperResponder> responder){
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation DatabaseDescriptorHolder
|
||||||
|
|
||||||
|
- (instancetype)initWithIdentifier:(NSInteger)identifier
|
||||||
|
databaseDriver:(id<DatabaseDriver>)databaseDriver
|
||||||
|
databaseDescriptor:(id<DatabaseDescriptor>)databaseDescriptor {
|
||||||
|
self = [super init];
|
||||||
|
if (self) {
|
||||||
|
_identifier = identifier;
|
||||||
|
_databaseDriver = databaseDriver;
|
||||||
|
_databaseDescriptor = databaseDescriptor;
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation ExecuteSqlRequest
|
||||||
|
|
||||||
|
- (instancetype)initWithDatabaseId:(NSInteger)databaseId
|
||||||
|
value:(NSString*)value {
|
||||||
|
self = [super init];
|
||||||
|
if (self) {
|
||||||
|
_databaseId = databaseId;
|
||||||
|
_value = [value copy];
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation GetTableDataRequest
|
||||||
|
|
||||||
|
- (instancetype)initWithDatabaseId:(NSInteger)databaseId
|
||||||
|
table:(NSString*)table
|
||||||
|
order:(NSString*)order
|
||||||
|
reverse:(BOOL)reverse
|
||||||
|
start:(NSInteger)start
|
||||||
|
count:(NSInteger)count {
|
||||||
|
self = [super init];
|
||||||
|
if (self) {
|
||||||
|
_databaseId = databaseId;
|
||||||
|
_table = [table copy];
|
||||||
|
_order = [order copy];
|
||||||
|
_reverse = reverse;
|
||||||
|
_start = start;
|
||||||
|
_count = count;
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation GetTableStructureRequest
|
||||||
|
|
||||||
|
- (instancetype)initWithDatabaseId:(NSInteger)databaseId
|
||||||
|
table:(NSString*)table {
|
||||||
|
self = [super init];
|
||||||
|
if (self) {
|
||||||
|
_databaseId = databaseId;
|
||||||
|
_table = [table copy];
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation GetTableInfoRequest
|
||||||
|
|
||||||
|
- (instancetype)initWithDatabaseId:(NSInteger)databaseId
|
||||||
|
table:(NSString*)table {
|
||||||
|
self = [super init];
|
||||||
|
if (self) {
|
||||||
|
_databaseId = databaseId;
|
||||||
|
_table = [table copy];
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
@@ -8,7 +8,11 @@
|
|||||||
#import <FlipperKit/FlipperPlugin.h>
|
#import <FlipperKit/FlipperPlugin.h>
|
||||||
#import <Foundation/Foundation.h>
|
#import <Foundation/Foundation.h>
|
||||||
|
|
||||||
|
@class DatabasesManager;
|
||||||
|
|
||||||
@interface FlipperKitDatabasesPlugin : NSObject<FlipperPlugin>
|
@interface FlipperKitDatabasesPlugin : NSObject<FlipperPlugin>
|
||||||
|
@property(nonatomic, strong) DatabasesManager* databasesManager;
|
||||||
|
|
||||||
- (instancetype)init NS_UNAVAILABLE;
|
- (instancetype)init NS_UNAVAILABLE;
|
||||||
+ (instancetype)sharedInstance;
|
+ (instancetype)sharedInstance;
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,8 @@
|
|||||||
#import <FlipperKit/FlipperClient.h>
|
#import <FlipperKit/FlipperClient.h>
|
||||||
#import <FlipperKit/FlipperConnection.h>
|
#import <FlipperKit/FlipperConnection.h>
|
||||||
#import <FlipperKit/FlipperResponder.h>
|
#import <FlipperKit/FlipperResponder.h>
|
||||||
|
#import "DatabaseDriver.h"
|
||||||
|
#import "DatabasesManager.h"
|
||||||
|
|
||||||
@interface FlipperKitDatabasesPlugin ()
|
@interface FlipperKitDatabasesPlugin ()
|
||||||
@property(strong, nonatomic) id<FlipperConnection> connection;
|
@property(strong, nonatomic) id<FlipperConnection> connection;
|
||||||
@@ -20,6 +22,9 @@
|
|||||||
|
|
||||||
- (instancetype)init {
|
- (instancetype)init {
|
||||||
if (self = [super init]) {
|
if (self = [super init]) {
|
||||||
|
NSArray<id<DatabaseDriver>>* databaseDrivers = @[];
|
||||||
|
_databasesManager =
|
||||||
|
[[DatabasesManager alloc] initWithDatabaseDrivers:databaseDrivers];
|
||||||
}
|
}
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
@@ -37,56 +42,11 @@
|
|||||||
|
|
||||||
- (void)didConnect:(id<FlipperConnection>)connection {
|
- (void)didConnect:(id<FlipperConnection>)connection {
|
||||||
self.connection = connection;
|
self.connection = connection;
|
||||||
|
[self.databasesManager setConnection:connection];
|
||||||
// Define connection event handlers
|
|
||||||
|
|
||||||
// databaseList
|
|
||||||
[connection
|
|
||||||
receive:@"databaseList"
|
|
||||||
withBlock:^(NSDictionary* params, id<FlipperResponder> responder) {
|
|
||||||
NSMutableDictionary* response = [NSMutableDictionary dictionary];
|
|
||||||
|
|
||||||
response[@1] = @{
|
|
||||||
@"id" : @1,
|
|
||||||
@"name" : @"Provider1",
|
|
||||||
@"tables" : @[ @"Table1_1", @"Table1_2", @"Table1_3" ]
|
|
||||||
};
|
|
||||||
response[@2] = @{
|
|
||||||
@"id" : @2,
|
|
||||||
@"name" : @"Provider2",
|
|
||||||
@"tables" : @[ @"Table2_1", @"Table2_2" ]
|
|
||||||
};
|
|
||||||
response[@3] =
|
|
||||||
@{@"id" : @3,
|
|
||||||
@"name" : @"Provider3",
|
|
||||||
@"tables" : @[ @"Table3_1" ]};
|
|
||||||
[responder success:response];
|
|
||||||
}];
|
|
||||||
|
|
||||||
// getTableData
|
|
||||||
[connection receive:@"getTableData"
|
|
||||||
withBlock:^(NSDictionary* params, id<FlipperResponder> responder){
|
|
||||||
|
|
||||||
}];
|
|
||||||
|
|
||||||
// getTableStructure
|
|
||||||
[connection receive:@"getTableStructure"
|
|
||||||
withBlock:^(NSDictionary* params, id<FlipperResponder> responder){
|
|
||||||
}];
|
|
||||||
|
|
||||||
// getTableInfo
|
|
||||||
[connection receive:@"getTableInfo"
|
|
||||||
withBlock:^(NSDictionary* params, id<FlipperResponder> responder){
|
|
||||||
}];
|
|
||||||
|
|
||||||
// execute
|
|
||||||
[connection receive:@"execute"
|
|
||||||
withBlock:^(NSDictionary*, id<FlipperResponder> responder){
|
|
||||||
}];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)didDisconnect {
|
- (void)didDisconnect {
|
||||||
self.connection = nil;
|
[self.databasesManager setConnection:nil];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSString*)identifier {
|
- (NSString*)identifier {
|
||||||
@@ -94,7 +54,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (BOOL)runInBackground {
|
- (BOOL)runInBackground {
|
||||||
return YES;
|
return NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
Reference in New Issue
Block a user