FLEXSQLResult.m 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. //
  2. // FLEXSQLResult.m
  3. // FLEX
  4. //
  5. // Created by Tanner on 3/3/20.
  6. // Copyright © 2020 Flipboard. All rights reserved.
  7. //
  8. #import "FLEXSQLResult.h"
  9. #import "NSArray+Functional.h"
  10. @implementation FLEXSQLResult
  11. @synthesize keyedRows = _keyedRows;
  12. + (instancetype)message:(NSString *)message {
  13. return [[self alloc] initWithmessage:message columns:nil rows:nil];
  14. }
  15. + (instancetype)columns:(NSArray<NSString *> *)columnNames rows:(NSArray<NSArray<NSString *> *> *)rowData {
  16. return [[self alloc] initWithmessage:nil columns:columnNames rows:rowData];
  17. }
  18. - (id)initWithmessage:(NSString *)message columns:(NSArray *)columns rows:(NSArray<NSArray *> *)rows {
  19. NSParameterAssert(message || (columns && rows));
  20. NSParameterAssert(columns.count == rows.firstObject.count);
  21. self = [super init];
  22. if (self) {
  23. _message = message;
  24. _columns = columns;
  25. _rows = rows;
  26. }
  27. return self;
  28. }
  29. - (NSArray<NSDictionary<NSString *,id> *> *)keyedRows {
  30. if (!_keyedRows) {
  31. _keyedRows = [self.rows flex_mapped:^id(NSArray<NSString *> *row, NSUInteger idx) {
  32. return [NSDictionary dictionaryWithObjects:row forKeys:self.columns];
  33. }];
  34. }
  35. return _keyedRows;
  36. }
  37. @end