Skip to content

Commit

Permalink
add viewer to generated pattern types (#1800)
Browse files Browse the repository at this point in the history
  • Loading branch information
lolopinto committed Mar 24, 2024
1 parent 1801608 commit eb52e52
Show file tree
Hide file tree
Showing 20 changed files with 58 additions and 34 deletions.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion examples/ent-rsvp/backend/src/ent/generated/guest_base.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion examples/simple/src/ent/generated/contact_base.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion examples/simple/src/ent/generated/contact_email_base.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion examples/simple/src/ent/generated/holiday_base.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 4 additions & 2 deletions examples/simple/src/ent/generated/mixins/contact_info_base.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 4 additions & 2 deletions examples/simple/src/ent/generated/mixins/day_of_week_base.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 5 additions & 3 deletions examples/simple/src/ent/generated/mixins/feedback_base.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion examples/simple/src/ent/generated/user_base.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 4 additions & 3 deletions examples/simple/src/ent/mixins/contact_info.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,15 @@
* Generated by github.com/lolopinto/ent/ent, DO NOT EDIT.
*/

import { Viewer } from "@snowtop/ent";
import {
ContactInfoBaseMixin,
IContactInfoBase,
} from "../generated/mixins/contact_info_base";
import { ExampleViewer as ExampleViewerAlias } from "../../viewer/viewer";

export interface IContactInfo<TViewer extends Viewer = Viewer>
extends IContactInfoBase<TViewer> {
export interface IContactInfo<
TViewer extends ExampleViewerAlias = ExampleViewerAlias,
> extends IContactInfoBase<TViewer> {
isContactInfo(): boolean;

// add custom fields
Expand Down
7 changes: 4 additions & 3 deletions examples/simple/src/ent/mixins/day_of_week.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,15 @@
* Generated by github.com/lolopinto/ent/ent, DO NOT EDIT.
*/

import { Viewer } from "@snowtop/ent";
import {
DayOfWeekBaseMixin,
IDayOfWeekBase,
} from "../generated/mixins/day_of_week_base";
import { ExampleViewer as ExampleViewerAlias } from "../../viewer/viewer";

export interface IDayOfWeek<TViewer extends Viewer = Viewer>
extends IDayOfWeekBase<TViewer> {
export interface IDayOfWeek<
TViewer extends ExampleViewerAlias = ExampleViewerAlias,
> extends IDayOfWeekBase<TViewer> {
isDayOfWeek(): boolean;

// add custom fields
Expand Down
11 changes: 5 additions & 6 deletions examples/simple/src/ent/mixins/feedback.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,17 @@
* Copyright whaa whaa
* Generated by github.com/lolopinto/ent/ent, DO NOT EDIT.
*/
import { Viewer } from "@snowtop/ent";

import {
FeedbackBaseMixin,
IFeedbackBase,
} from "../generated/mixins/feedback_base";
import { ExampleViewer as ExampleViewerAlias } from "../../viewer/viewer";

export interface IFeedback<TViewer extends Viewer = Viewer>
extends IFeedbackBase<TViewer> {
// add custom fields
export interface IFeedback<
TViewer extends ExampleViewerAlias = ExampleViewerAlias,
> extends IFeedbackBase<TViewer> {
isFeedback(): boolean;

hasLikers(): Promise<boolean>;
}

type Constructor<T extends IFeedback = IFeedback> = new (...args: any[]) => T;
Expand Down
2 changes: 1 addition & 1 deletion examples/todo-sqlite/src/ent/generated/account_base.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion examples/todo-sqlite/src/ent/generated/workspace_base.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 5 additions & 2 deletions internal/schema/node_data.go
Original file line number Diff line number Diff line change
Expand Up @@ -831,13 +831,16 @@ type mixinInfo struct {
Implements string
}

func (nodeData *NodeData) GetMixinInfo(s *Schema) (*mixinInfo, error) {
func (nodeData *NodeData) GetMixinInfo(s *Schema, cfg codegenapi.Config) (*mixinInfo, error) {
var imps []*tsimport.ImportPath

var extends strings.Builder
var impls []string

var interfaces []string

viewerType := cfg.GetTemplatizedViewer().GetImport()

for _, p := range nodeData.PatternsWithMixins {
pattern := s.Patterns[p]
if pattern == nil {
Expand All @@ -853,7 +856,7 @@ func (nodeData *NodeData) GetMixinInfo(s *Schema) (*mixinInfo, error) {
})
extends.WriteString(pattern.GetMixinName())
extends.WriteString("(")
impls = append(impls, pattern.GetMixinInterfaceName())
impls = append(impls, fmt.Sprintf("%s<%s>", pattern.GetMixinInterfaceName(), viewerType))
interfaces = append(interfaces, pattern.GetMixinInterfaceName())
}
if len(interfaces) == 0 {
Expand Down
2 changes: 1 addition & 1 deletion internal/tscode/base.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@


{{$hasMixins := .HasMixins -}}
{{$mixinInfo := .GetMixinInfo $schema -}}
{{$mixinInfo := .GetMixinInfo $schema $cfg -}}

export class {{$baseClass}}
{{ if $hasMixins -}}
Expand Down
6 changes: 5 additions & 1 deletion internal/tscode/mixin.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,13 @@
{{$cfg := .Config}}
{{$schema := .Schema}}

{{$viewerInfo := $cfg.GetTemplatizedViewer -}}
{{ reserveImportPath $viewerInfo.GetImportPath false -}}
{{$viewerType := useImport $viewerInfo.GetImport -}}

{{ reserveImport $p.GetImportPathForMixinBase $p.GetMixinBaseName $p.GetPatternMethod $p.GetMixinInterfaceBaseName -}}

export interface {{$p.GetMixinInterfaceName}} <TViewer extends {{useImport "Viewer"}} = Viewer>
export interface {{$p.GetMixinInterfaceName}} <TViewer extends {{useImport $viewerType}} = {{useImport $viewerType}}>
extends {{useImport $p.GetMixinInterfaceBaseName }}<TViewer> {

{{$p.GetPatternMethod}}(): boolean;
Expand Down
6 changes: 5 additions & 1 deletion internal/tscode/mixin_base.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,15 @@
{{$cfg := .Config}}
{{$schema := .Schema}}

{{$viewerInfo := $cfg.GetTemplatizedViewer -}}
{{ reserveImportPath $viewerInfo.GetImportPath false -}}
{{$viewerType := useImport $viewerInfo.GetImport -}}

{{ range $p.GetImportsForMixin $schema $cfg -}}
{{ reserveImportPath . false -}}
{{ end}}

export interface {{$p.GetMixinInterfaceBaseName}}<TViewer extends {{useImport "Viewer"}} = Viewer> extends {{useImport "Ent" }}<TViewer> {
export interface {{$p.GetMixinInterfaceBaseName}}<TViewer extends {{useImport $viewerType}} = {{useImport $viewerType}}> extends {{useImport "Ent" }}<TViewer> {
{{ range $field := $p.FieldInfo.EntFields -}}
{{ range $field.GetTsTypeImports -}}
{{ if ($p.ForeignImport .Import) -}}
Expand Down

0 comments on commit eb52e52

Please sign in to comment.