-
Notifications
You must be signed in to change notification settings - Fork 30
/
Copy pathLinkedModels.cs
62 lines (45 loc) · 1.6 KB
/
LinkedModels.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
using System;
using System.Collections.Generic;
using Supabase.Postgrest.Attributes;
using Supabase.Postgrest.Models;
namespace PostgrestTests.Models;
[Table("movie")]
public class Movie : BaseModel
{
[PrimaryKey("id")] public string Id { get; set; } = null!;
[Column("name")] public string? Name { get; set; }
[Column("status")] public MovieStatus? Status { get; set; }
[Reference(typeof(Person), ReferenceAttribute.JoinType.Left)]
public List<Person> People { get; set; } = new();
[Column("created_at")] public DateTime CreatedAt { get; set; }
}
public enum MovieStatus
{
OnDisplay,
OffDisplay
}
[Table("person")]
public class Person : BaseModel
{
[PrimaryKey("id")] public string Id { get; set; } = null!;
[Reference(typeof(Movie))] public List<Movie> Movies { get; set; } = new();
[Reference(typeof(Profile))]
public Profile? Profile { get; set; }
[Column("first_name")] public string? FirstName { get; set; }
[Column("last_name")] public string? LastName { get; set; }
[Column("created_at")] public DateTime CreatedAt { get; set; }
}
[Table("profile")]
public class Profile : BaseModel
{
[PrimaryKey("person_id", true)] public string PersonId { get; set; } = null!;
[Reference(typeof(Person))] public Person? Person { get; set; }
[Column("email")] public string? Email { get; set; }
[Column("created_at")] public DateTime CreatedAt { get; set; }
}
[Table("movie_person")]
public class MoviePerson : BaseModel
{
[Column("movie_id")] public string? MovieId { get; set; }
[Column("person_id")] public string? PersonId { get; set; }
}