vsrepo 1.1.6 → 1.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/VSRepository/VSRepository.d.ts +112 -21
- package/package.json +1 -1
|
@@ -197,7 +197,7 @@ export type MethodOptions<S> = {
|
|
|
197
197
|
/**
|
|
198
198
|
* Select model a ser aplicado na operação.
|
|
199
199
|
*
|
|
200
|
-
* Use `false` para retornar o payload completo do Prisma, sem select.
|
|
200
|
+
* @note Use `false` para retornar o payload completo do Prisma, sem select.
|
|
201
201
|
*/
|
|
202
202
|
selectModel?: S | false;
|
|
203
203
|
/**
|
|
@@ -329,7 +329,7 @@ export type MethodConfig<M extends Prisma.ModelName, SelectModels = any> = {
|
|
|
329
329
|
readonly map: boolean;
|
|
330
330
|
/** Sobrescreve o `defaultSelectModel` apenas para este método. */
|
|
331
331
|
readonly selectModel?: keyof SelectModels | false;
|
|
332
|
-
/** Controla se o método combina ou sobrescreve o `requiredWhere`. */
|
|
332
|
+
/** Controla se o método combina (`extending`) ou sobrescreve (`overwrite`) o `requiredWhere`. */
|
|
333
333
|
readonly whereType?: 'overwrite' | 'extending';
|
|
334
334
|
/** Redireciona a lógica para outro padrão de método válido. */
|
|
335
335
|
readonly proxyTo?: ValidMethodPatterns;
|
|
@@ -415,6 +415,12 @@ type InjectedGet<
|
|
|
415
415
|
TDefault = ExtractDefaultSelect<Config>,
|
|
416
416
|
TPk = ExtractPkName<T, Config>
|
|
417
417
|
> = C extends { baseMethods: { get: { active: false } } } ? {} : {
|
|
418
|
+
/**
|
|
419
|
+
* Busca um registro pela chave primária (PK).
|
|
420
|
+
* @param pk Chave primária do registro.
|
|
421
|
+
* @param options Opções adicionais (por exemplo `selectModel` ou `db`).
|
|
422
|
+
* @returns O registro selecionado ou `null` se não encontrado.
|
|
423
|
+
*/
|
|
418
424
|
get<S extends keyof TSelects | false = ResolveMethodDefaultSelect<Config, C, 'get', TSelects>>(
|
|
419
425
|
pk: T[TPk extends keyof T ? TPk : never], options?: MethodOptions<S>
|
|
420
426
|
): Promise<ResolveCurrentReturn<M, TSelects, S, TDefault> | null>;
|
|
@@ -426,6 +432,12 @@ type InjectedGetOrThrow<
|
|
|
426
432
|
TDefault = ExtractDefaultSelect<Config>,
|
|
427
433
|
TPk = ExtractPkName<T, Config>
|
|
428
434
|
> = C extends { baseMethods: { getOrThrow: { active: false } } } ? {} : {
|
|
435
|
+
/**
|
|
436
|
+
* Busca um registro pela chave primária (PK) e lança erro se não encontrado.
|
|
437
|
+
* @param pk Chave primária do registro.
|
|
438
|
+
* @param options Opções adicionais (por exemplo `selectModel` ou `db`).
|
|
439
|
+
* @returns O registro selecionado.
|
|
440
|
+
*/
|
|
429
441
|
getOrThrow<S extends keyof TSelects | false = ResolveMethodDefaultSelect<Config, C, 'getOrThrow', TSelects>>(
|
|
430
442
|
pk: T[TPk extends keyof T ? TPk : never], options?: MethodOptions<S>
|
|
431
443
|
): Promise<ResolveCurrentReturn<M, TSelects, S, TDefault>>;
|
|
@@ -437,6 +449,12 @@ type InjectedRemove<
|
|
|
437
449
|
TDefault = ExtractDefaultSelect<Config>,
|
|
438
450
|
TPk = ExtractPkName<T, Config>
|
|
439
451
|
> = C extends { baseMethods: { remove: { active: false } } } ? {} : {
|
|
452
|
+
/**
|
|
453
|
+
* Remove um registro identificado pela chave primária (PK).
|
|
454
|
+
* @param pk Chave primária do registro a ser removido.
|
|
455
|
+
* @param options Opções adicionais (por exemplo `selectModel` ou `db`).
|
|
456
|
+
* @returns O registro removido.
|
|
457
|
+
*/
|
|
440
458
|
remove<S extends keyof TSelects | false = ResolveMethodDefaultSelect<Config, C, 'remove', TSelects>>(
|
|
441
459
|
pk: T[TPk extends keyof T ? TPk : never], options?: MethodOptions<S>
|
|
442
460
|
): Promise<ResolveCurrentReturn<M, TSelects, S, TDefault>>;
|
|
@@ -476,6 +494,12 @@ type InjectedSave<
|
|
|
476
494
|
TDefault = ExtractDefaultSelect<Config>,
|
|
477
495
|
TRelations = ExtractRelations<Config>
|
|
478
496
|
> = C extends { baseMethods: { save: { active: false } } } ? {} : {
|
|
497
|
+
/**
|
|
498
|
+
* Insere ou atualiza (save/upsert) um registro, aceita os campos de relações definidas nas `relations`.
|
|
499
|
+
* @param obj Payload para criação/atualização.
|
|
500
|
+
* @param options Opções adicionais (por exemplo `selectModel` ou `db`).
|
|
501
|
+
* @returns O registro salvo com tipos refinados conforme a entrada.
|
|
502
|
+
*/
|
|
479
503
|
save<
|
|
480
504
|
O extends UpsertWithRelations<T, M, TRelations>,
|
|
481
505
|
S extends keyof TSelects | false = ResolveMethodDefaultSelect<Config, C, 'save', TSelects>
|
|
@@ -492,19 +516,33 @@ type InjectedPatch<
|
|
|
492
516
|
TPk = ExtractPkName<T, Config>,
|
|
493
517
|
I = PrismaModelInputs<M>
|
|
494
518
|
> = C extends { baseMethods: { patch: { active: false } } } ? {} : {
|
|
495
|
-
/**
|
|
496
|
-
|
|
519
|
+
/**
|
|
520
|
+
* Atualiza parcialmente (patch) um registro existente pela chave primária (PK), aceita os campos de relações definidas nas `relations`.
|
|
521
|
+
* @param pk Chave primária do registro.
|
|
522
|
+
* @param obj Objeto parcial com os campos a atualizar.
|
|
523
|
+
* @param options Opções adicionais (por exemplo `selectModel` ou `db`).
|
|
524
|
+
* @returns O registro atualizado refinado conforme a entrada.
|
|
525
|
+
*/
|
|
526
|
+
patch<
|
|
527
|
+
O extends (I extends { updateInput: infer U } ? U : Record<string, any>),
|
|
528
|
+
S extends keyof TSelects | false = ResolveMethodDefaultSelect<Config, C, 'patch', TSelects>
|
|
529
|
+
>(
|
|
497
530
|
pk: T[TPk extends keyof T ? TPk : never],
|
|
498
|
-
obj: I extends { updateInput: infer U } ? U : Record<string, any
|
|
531
|
+
obj: O & (I extends { updateInput: infer U } ? U : Record<string, any>),
|
|
499
532
|
options?: MethodOptions<S>
|
|
500
|
-
): Promise<ResolveCurrentReturn<M, TSelects, S, TDefault>>;
|
|
533
|
+
): Promise<RefineSaveResult<ResolveCurrentReturn<M, TSelects, S, TDefault>, O>>;
|
|
501
534
|
};
|
|
502
535
|
|
|
503
536
|
type InjectedRemoveList<
|
|
504
537
|
T, M extends Prisma.ModelName, Config, C extends BuildConfig<any> | undefined,
|
|
505
538
|
TPk = ExtractPkName<T, Config>
|
|
506
539
|
> = C extends { baseMethods: { removeList: { active: false } } } ? {} : {
|
|
507
|
-
/**
|
|
540
|
+
/**
|
|
541
|
+
* Remove múltiplos registros pelas suas chaves primárias.
|
|
542
|
+
* @param pks Lista de chaves primárias a remover.
|
|
543
|
+
* @param options Opções adicionais (por exemplo `db`).
|
|
544
|
+
* @returns Objeto com a contagem de registros removidos.
|
|
545
|
+
*/
|
|
508
546
|
removeList(
|
|
509
547
|
pks: T[TPk extends keyof T ? TPk : never][],
|
|
510
548
|
options?: { db?: ClientOrTransaction }
|
|
@@ -517,7 +555,11 @@ type InjectedGetAll<
|
|
|
517
555
|
TDefault = ExtractDefaultSelect<Config>,
|
|
518
556
|
I = PrismaModelInputs<M>
|
|
519
557
|
> = C extends { baseMethods: { getAll: { active: false } } } ? {} : {
|
|
520
|
-
/**
|
|
558
|
+
/**
|
|
559
|
+
* Busca todos os registros (respeita `requiredWhere` quando aplicado).
|
|
560
|
+
* @param options Opções adicionais, incluindo paginação, ordenação e `db`/`selectModel`.
|
|
561
|
+
* @returns Lista dos registros encontrados`.
|
|
562
|
+
*/
|
|
521
563
|
getAll<S extends keyof TSelects | false = ResolveMethodDefaultSelect<Config, C, 'getAll', TSelects>>(
|
|
522
564
|
options?: MethodOptions<S> & {
|
|
523
565
|
pagination?: PaginationOptions<I extends { cursorInput: infer Curs } ? Curs : unknown>;
|
|
@@ -529,7 +571,11 @@ type InjectedGetAll<
|
|
|
529
571
|
type InjectedTotal<
|
|
530
572
|
T, M extends Prisma.ModelName, Config, C extends BuildConfig<any> | undefined
|
|
531
573
|
> = C extends { baseMethods: { total: { active: false } } } ? {} : {
|
|
532
|
-
/**
|
|
574
|
+
/**
|
|
575
|
+
* Retorna a quantidade total de registros, respeitando `requiredWhere` quando aplicado.
|
|
576
|
+
* @param options Opções adicionais (por exemplo `db`).
|
|
577
|
+
* @returns Número total de registros.
|
|
578
|
+
*/
|
|
533
579
|
total(options?: { db?: ClientOrTransaction }): Promise<number>;
|
|
534
580
|
};
|
|
535
581
|
|
|
@@ -537,7 +583,12 @@ type InjectedHas<
|
|
|
537
583
|
T, M extends Prisma.ModelName, Config, C extends BuildConfig<any> | undefined,
|
|
538
584
|
TPk = ExtractPkName<T, Config>
|
|
539
585
|
> = C extends { baseMethods: { has: { active: false } } } ? {} : {
|
|
540
|
-
/**
|
|
586
|
+
/**
|
|
587
|
+
* Verifica se um registro existe pela chave primária (PK).
|
|
588
|
+
* @param pk Chave primária a verificar.
|
|
589
|
+
* @param options Opções adicionais (por exemplo `db`).
|
|
590
|
+
* @returns `true` se existir, caso contrário `false`.
|
|
591
|
+
*/
|
|
541
592
|
has(
|
|
542
593
|
pk: T[TPk extends keyof T ? TPk : never],
|
|
543
594
|
options?: { db?: ClientOrTransaction }
|
|
@@ -555,13 +606,57 @@ type InjectedBaseMethods<T, M extends Prisma.ModelName, Config, C extends BuildC
|
|
|
555
606
|
InjectedTotal<T, M, Config, C> &
|
|
556
607
|
InjectedHas<T, M, Config, C>;
|
|
557
608
|
|
|
609
|
+
/**
|
|
610
|
+
* Configuração de relação para One-to-Many ou Many-to-Many.
|
|
611
|
+
*
|
|
612
|
+
* @template TItem O tipo da entidade relacionada.
|
|
613
|
+
*/
|
|
614
|
+
export type ManyRelationConfig<TItem> = {
|
|
615
|
+
/** A chave primária (Primary Key) do entidade relacionada. */
|
|
616
|
+
pk: keyof TItem;
|
|
617
|
+
/** Tipo de relação: `otm` (One-to-Many) ou `mtm` (Many-to-Many). */
|
|
618
|
+
mode: 'otm' | 'mtm';
|
|
619
|
+
/** Comportamento de mutação: `set` (substitui tudo) ou `add` (adiciona aos existentes). */
|
|
620
|
+
restriction: 'set' | 'add';
|
|
621
|
+
};
|
|
622
|
+
|
|
623
|
+
/**
|
|
624
|
+
* Configuração de relação One-to-One.
|
|
625
|
+
*
|
|
626
|
+
* @template TItem O tipo da entidade relacionada.
|
|
627
|
+
*/
|
|
628
|
+
export type OneToOneRelationConfig<TItem> = {
|
|
629
|
+
/** A chave primária (Primary Key) do entidade relacionada. */
|
|
630
|
+
pk: keyof TItem;
|
|
631
|
+
/** Tipo de relação: `oto` (One-to-One). */
|
|
632
|
+
mode: 'oto';
|
|
633
|
+
/** Comportamento de mutação permitido para salvar. */
|
|
634
|
+
restriction: 'set' | 'add';
|
|
635
|
+
};
|
|
636
|
+
|
|
637
|
+
/**
|
|
638
|
+
* Configuração de relação Many-to-One.
|
|
639
|
+
*
|
|
640
|
+
* @template TItem O tipo da entidade relacionada.
|
|
641
|
+
*/
|
|
642
|
+
export type ManyToOneRelationConfig<TItem> = {
|
|
643
|
+
/** A chave primária (Primary Key) da entidade relacionada. */
|
|
644
|
+
pk: keyof TItem;
|
|
645
|
+
/** Tipo de relação: `mto` (Many-to-One). */
|
|
646
|
+
mode: 'mto';
|
|
647
|
+
/** Comportamento de mutação permitido para salvar. */
|
|
648
|
+
restriction: 'set' | 'add';
|
|
649
|
+
/** Habilita a possibilidade de desvincular a relação, tornando a chave estrangeira nula. */
|
|
650
|
+
nullAble?: boolean;
|
|
651
|
+
};
|
|
652
|
+
|
|
558
653
|
/**
|
|
559
654
|
* Infere automaticamente a configuração de relação possível a partir de um campo.
|
|
560
655
|
*/
|
|
561
656
|
export type ExtractRelationConfig<TField> = NonNullable<TField> extends infer NonNull
|
|
562
657
|
? NonNull extends Date | Buffer | Uint8Array ? never
|
|
563
|
-
: NonNull extends any[] ? (NonNull[number] extends object ?
|
|
564
|
-
: NonNull extends object ? (
|
|
658
|
+
: NonNull extends any[] ? (NonNull[number] extends object ? ManyRelationConfig<NonNull[number]> : never)
|
|
659
|
+
: NonNull extends object ? (OneToOneRelationConfig<NonNull> | ManyToOneRelationConfig<NonNull>)
|
|
565
660
|
: never
|
|
566
661
|
: never;
|
|
567
662
|
|
|
@@ -652,11 +747,11 @@ export type ValidateRepoConfig<T extends object, M extends Prisma.ModelName, Con
|
|
|
652
747
|
pkName: keyof T;
|
|
653
748
|
/** Mapa de select models disponíveis. */
|
|
654
749
|
selectModels?: SelectModels<M>;
|
|
655
|
-
/**
|
|
750
|
+
/** Select model padrão. */
|
|
656
751
|
defaultSelectModel?: Config extends { selectModels: infer SM } ? (keyof SM extends never ? string : Extract<keyof SM, string>) : string;
|
|
657
752
|
/** Filtros globais aplicados às queries do repository. */
|
|
658
753
|
requiredWhere?: WhereModel<M>;
|
|
659
|
-
/** Relações gerenciadas automaticamente pelo `save`. */
|
|
754
|
+
/** Relações gerenciadas automaticamente pelo `save` e pelo `patch`. */
|
|
660
755
|
relations?: RepositoryRelations<T>;
|
|
661
756
|
/** Mapa dos métodos dinâmicos e suas regras de validação. */
|
|
662
757
|
methods?: {
|
|
@@ -669,16 +764,12 @@ export type ValidateRepoConfig<T extends object, M extends Prisma.ModelName, Con
|
|
|
669
764
|
};
|
|
670
765
|
|
|
671
766
|
/**
|
|
672
|
-
*
|
|
673
|
-
*
|
|
674
|
-
* Use esta função para declarar `tableName`, `pkName`, `selectModels`,
|
|
675
|
-
* `requiredWhere`, `relations` e `methods` do seu repository.
|
|
767
|
+
* Função para inicializar e configurar o `repository`.
|
|
768
|
+
* As configurações passadas nele são as que serão lidas ao executar o `.build()`.
|
|
676
769
|
*/
|
|
677
770
|
export declare function setupVSRepo<T extends object, M extends Prisma.ModelName>(): <
|
|
678
771
|
const SM extends Record<string, SelectModel<M>>,
|
|
679
772
|
const Config extends RepoConfig<T, M, SM>
|
|
680
773
|
>(
|
|
681
|
-
config: Config
|
|
682
|
-
? Config
|
|
683
|
-
: ValidateRepoConfig<T, M, Config>
|
|
774
|
+
config: Config & ValidateRepoConfig<T, M, Config>
|
|
684
775
|
) => VSRepository<T, M, Config>;
|