Assuming that a company, role, and user refer to one specific entity (Sebastian-User-Dgraph) then I would model the schema as:
type Company {
id: ID!
name: String @search(by: [hash])
hasRoles: [Role]
}
type User {
id: ID!
name: String @search(by: [hash])
age: Int
fillsRoles: [Role]
}
enum Roles {
Admin
Manager
User
}
type Role {
id: ID!
role: Roles
user: User @hasInverse(field: "fillsRoles")
company: Company @hasInverse(field: "hasRoles")
}
Not sure exactly what designation is if it should go in the User or the Role. If it is specific to the relationship or if it is specific to the user.