schultek/stormberry

The method 'ThisViewQueryable' isn't defined for the type 'ThatViewQueryable'

easazade opened this issue · 2 comments

Got two models, user and post each with 2 different views complete and reduced. very similar to the example
There are syntax errors in generated code

The method 'PostViewQueryable' isn't defined for the type 'UserViewQueryable'.
The name 'PostView' isn't a type, so it can't be used as a type argument

here are the models

@Model(views: [#CompletePost, #ReducedPost])
abstract class Post {
  @PrimaryKey()
  @AutoIncrement()
  int get id;

  String get title;

  String get content;

  @BindTo(#posts)
  @ViewedIn(#CompletePost, as: #ReducedUser)
  @HiddenIn(#ReducedPost)
  User get author;

  User get editor;
}

@Model(views: [#CompleteUser, #ReducedUser])
abstract class User {
  @PrimaryKey()
  @AutoIncrement()
  int get id;

  String get name;

  String get bio;

  @BindTo(#author)
  @ViewedIn(#CompleteUser, as: #ReducedPost)
  @HiddenIn(#ReducedUser)
  List<Post> get posts;
}

you can find generated schema file here. there are 3 lines with errors at the end I commented them

also you can find the complete code here you need to git checkout this commit though: db949bd

hint: errors will be different when I change the order of the models in the file

Thanks for reporting.

I not to add an error message describing this, but to fix this you also need to annotate the editor user with either HiddenIn or ViewedIn for both user views.

added those annotations and now it works

@ViewedIn(#CompletePost, as: #ReducedUser)
@HiddenIn(#ReducedPost)
User? get editor;