Skip to content

Commit

Permalink
chore: Fix imports (#121)
Browse files Browse the repository at this point in the history
  • Loading branch information
codekeyz authored Mar 5, 2024
1 parent 7186055 commit 00a339f
Show file tree
Hide file tree
Showing 15 changed files with 178 additions and 171 deletions.
4 changes: 1 addition & 3 deletions packages/pharaoh/lib/next/_core/config.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
import 'dart:convert';

import 'package:dotenv/dotenv.dart';
part of '../core.dart';

DotEnv? _env;

Expand Down
2 changes: 1 addition & 1 deletion packages/pharaoh/lib/next/_core/container.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import 'package:get_it/get_it.dart';
part of '../core.dart';

final GetIt _getIt = GetIt.instance;

Expand Down
9 changes: 1 addition & 8 deletions packages/pharaoh/lib/next/_core/reflector.dart
Original file line number Diff line number Diff line change
@@ -1,11 +1,4 @@
import 'package:collection/collection.dart';
import 'package:reflectable/reflectable.dart' as r;

import 'container.dart';
import '../router.dart';
import '../_router/utils.dart';
import '../_validation/dto.dart';
import '../http.dart';
part of '../core.dart';

class Injectable extends r.Reflectable {
const Injectable()
Expand Down
7 changes: 1 addition & 6 deletions packages/pharaoh/lib/next/_router/meta.dart
Original file line number Diff line number Diff line change
@@ -1,9 +1,4 @@
import 'dart:convert';

import 'package:ez_validator/ez_validator.dart';
import 'package:pharaoh/pharaoh.dart';

import '../router.dart';
part of '../router.dart';

abstract class RequestAnnotation<T> {
final String? name;
Expand Down
2 changes: 2 additions & 0 deletions packages/pharaoh/lib/next/_router/utils.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
part of '../router.dart';

String cleanRoute(String route) {
final result =
route.replaceAll(RegExp(r'/+'), '/').replaceAll(RegExp(r'/$'), '');
Expand Down
56 changes: 43 additions & 13 deletions packages/pharaoh/lib/next/_validation/dto.dart
Original file line number Diff line number Diff line change
@@ -1,16 +1,4 @@
import 'dart:collection';

import 'package:ez_validator/ez_validator.dart';
import 'package:pharaoh/next/_core/reflector.dart';
import 'package:pharaoh/pharaoh.dart';
import 'package:reflectable/reflectable.dart' as r;
import 'package:meta/meta.dart';

import '../_router/meta.dart';
import '../_router/utils.dart';
import 'meta.dart';

part 'dto_impl.dart';
part of '../validation.dart';

const _instanceInvoke = r.InstanceInvokeCapability('^[^_]');

Expand All @@ -29,6 +17,48 @@ class DtoReflector extends r.Reflectable {
@protected
const dtoReflector = DtoReflector();

abstract interface class _BaseDTOImpl {
final Map<String, dynamic> _databag = {};

Map<String, dynamic> get data => UnmodifiableMapView(_databag);

void make(Request request) {
_databag.clear();
final (data, errors) = schema.validateSync(request.body ?? {});
if (errors.isNotEmpty) {
throw RequestValidationError.errors(ValidationErrorLocation.body, errors);
}
_databag.addAll(Map<String, dynamic>.from(data));
}

EzSchema? _schemaCache;

EzSchema get schema {
if (_schemaCache != null) return _schemaCache!;

final mirror = dtoReflector.reflectType(runtimeType) as r.ClassMirror;
final properties = mirror.getters.where((e) => e.isAbstract);

final entries = properties.map((prop) {
final returnType = prop.reflectedReturnType;
final meta =
prop.metadata.whereType<ClassPropertyValidator>().firstOrNull ??
ezRequired(returnType);

if (meta.propertyType != returnType) {
throw ArgumentError(
'Type Mismatch between ${meta.runtimeType}(${meta.propertyType}) & $runtimeType class property ${prop.simpleName}->($returnType)');
}

return MapEntry(meta.name ?? prop.simpleName, meta.validator);
});

final entriesToMap = entries.fold<Map<String, EzValidator<dynamic>>>(
{}, (prev, curr) => prev..[curr.key] = curr.value);
return _schemaCache = EzSchema.shape(entriesToMap);
}
}

@dtoReflector
abstract class BaseDTO extends _BaseDTOImpl {
@override
Expand Down
43 changes: 0 additions & 43 deletions packages/pharaoh/lib/next/_validation/dto_impl.dart

This file was deleted.

76 changes: 1 addition & 75 deletions packages/pharaoh/lib/next/_validation/meta.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
// ignore_for_file: camel_case_types

import 'package:ez_validator/ez_validator.dart';
part of '../validation.dart';

abstract class ClassPropertyValidator<T extends Object> {
final String? name;
Expand Down Expand Up @@ -28,75 +26,3 @@ abstract class ClassPropertyValidator<T extends Object> {
: base.required().isType(propertyType);
}
}

class ezEmail extends ClassPropertyValidator<String> {
final String? message;

const ezEmail({super.name, super.defaultVal, super.optional, this.message});

@override
EzValidator<String> get validator => super.validator.email(message);
}

class ezDateTime extends ClassPropertyValidator<DateTime> {
final String? message;

final DateTime? minDate, maxDate;

const ezDateTime(
{super.name,
super.defaultVal,
super.optional,
this.message,
this.maxDate,
this.minDate});

@override
EzValidator<DateTime> get validator {
final base = super.validator.date(message);
if (minDate != null) return base.minDate(minDate!);
if (maxDate != null) return base.maxDate(maxDate!);
return base;
}
}

class ezMinLength extends ClassPropertyValidator<String> {
final int value;

const ezMinLength(this.value);

@override
EzValidator<String> get validator => super.validator.minLength(value);
}

class ezMaxLength extends ClassPropertyValidator<String> {
final int value;

const ezMaxLength(this.value);

@override
EzValidator<String> get validator => super.validator.maxLength(value);
}

class ezRequired<T extends Object> extends ClassPropertyValidator<T> {
final Type? type;

const ezRequired([this.type]);

@override
Type get propertyType => type ?? T;
}

class ezOptional extends ClassPropertyValidator {
final Type type;
final Object? defaultValue;

const ezOptional(this.type, {this.defaultValue})
: super(defaultVal: defaultValue);

@override
Type get propertyType => type;

@override
bool get optional => true;
}
28 changes: 20 additions & 8 deletions packages/pharaoh/lib/next/core.dart
Original file line number Diff line number Diff line change
@@ -1,23 +1,35 @@
// ignore_for_file: non_constant_identifier_names

import 'dart:async';
import 'dart:convert';
import 'dart:io';

import 'package:meta/meta.dart';
import 'package:pharaoh/pharaoh.dart';
import 'package:reflectable/reflectable.dart' as r;
import 'package:spookie/spookie.dart' as spookie;
import 'package:collection/collection.dart';
import 'package:dotenv/dotenv.dart';
import 'package:get_it/get_it.dart';
import 'package:meta/meta.dart';
import 'package:pharaoh/pharaoh.dart'
show
OnErrorCallback,
Pharaoh,
PharaohError,
Spanner,
SpannerRouteValidatorError,
ViewEngine,
bodyParser;

import 'http.dart';
import 'router.dart';
import 'validation.dart';

import '_core/container.dart';
import '_core/reflector.dart';
import '_core/config.dart';
export '_core/config.dart';

export 'package:pharaoh/pharaoh.dart';
export 'package:pharaoh/pharaoh.dart' show Pharaoh;

part '_core/core_impl.dart';
part '_core/config.dart';
part '_core/container.dart';
part '_core/reflector.dart';

typedef RoutesResolver = List<RouteDefinition> Function();

Expand Down
14 changes: 12 additions & 2 deletions packages/pharaoh/lib/next/http.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,20 @@ library;

import 'dart:io';

import '_core/reflector.dart';
import 'package:pharaoh/pharaoh.dart';

import 'core.dart';

export '_router/meta.dart';
export 'package:pharaoh/pharaoh.dart'
show
Request,
Response,
NextFunction,
HTTPMethod,
ReqRes,
RequestHandler,
Middleware,
MiddlewareChainExtension;

@inject
abstract class ClassMiddleware extends AppInstance {
Expand Down
13 changes: 7 additions & 6 deletions packages/pharaoh/lib/next/router.dart
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
library router;

import 'dart:convert';

import 'package:ez_validator/ez_validator.dart';
import 'package:grammer/grammer.dart';
import 'package:meta/meta.dart';
import 'package:pharaoh/pharaoh.dart';

import '_validation/dto.dart';
import '_router/meta.dart';
import '_core/reflector.dart';
import '_router/utils.dart';
import 'core.dart';

export 'package:spanner/spanner.dart' show HTTPMethod;
import 'validation.dart';

part '_router/definition.dart';
part '_router/meta.dart';
part '_router/utils.dart';

abstract interface class Route {
static UseAliasedMiddleware middleware(String name) =>
Expand Down
Loading

0 comments on commit 00a339f

Please sign in to comment.