Skip to content

Commit d6a3e40

Browse files
committed
Add Reviews table
1 parent 492ae3e commit d6a3e40

File tree

7 files changed

+377
-0
lines changed

7 files changed

+377
-0
lines changed

dotnet/OpenBreweryDB.Data/BreweryDbContext.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using Microsoft.EntityFrameworkCore;
22
using OpenBreweryDB.Data.Models;
33
using OpenBreweryDB.Data.Models.Favorites;
4+
using OpenBreweryDB.Data.Models.Reviews;
45
using OpenBreweryDB.Data.Models.Users;
56

67
namespace OpenBreweryDB.Data
@@ -12,6 +13,7 @@ public BreweryDbContext(DbContextOptions<BreweryDbContext> options) : base(optio
1213
public DbSet<Brewery> Breweries { get; set; }
1314
public DbSet<BreweryTag> BreweryTags { get; set; }
1415
public DbSet<Favorite> Favorites { get; set; }
16+
public DbSet<Review> Reviews { get; set; }
1517
public DbSet<Tag> Tags { get; set; }
1618
public DbSet<User> Users { get; set; }
1719

@@ -57,6 +59,22 @@ protected override void OnModelCreating(ModelBuilder modelBuilder)
5759
.HasOne(f => f.Brewery)
5860
.WithMany(u => u.FavoriteUsers)
5961
.HasForeignKey(u => u.BreweryId);
62+
63+
// Entity: Review
64+
modelBuilder.Entity<Review>()
65+
.ToTable("reviews")
66+
.HasKey(f => new { f.BreweryId, f.UserId });
67+
modelBuilder.Entity<Review>()
68+
.Property(r => r.CreatedOn)
69+
.HasDefaultValueSql("GETDATE()");
70+
modelBuilder.Entity<Review>()
71+
.HasOne(f => f.User)
72+
.WithMany(u => u.UserReviews)
73+
.HasForeignKey(u => u.UserId);
74+
modelBuilder.Entity<Review>()
75+
.HasOne(f => f.Brewery)
76+
.WithMany(u => u.BreweryReviews)
77+
.HasForeignKey(u => u.BreweryId);
6078
}
6179
}
6280
}

dotnet/OpenBreweryDB.Data/Migrations/20200814014715_AddReviews.Designer.cs

Lines changed: 229 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
using System;
2+
using Microsoft.EntityFrameworkCore.Migrations;
3+
4+
namespace OpenBreweryDB.Data.Migrations
5+
{
6+
public partial class AddReviews : Migration
7+
{
8+
protected override void Up(MigrationBuilder migrationBuilder)
9+
{
10+
migrationBuilder.CreateTable(
11+
name: "reviews",
12+
columns: table => new
13+
{
14+
BreweryId = table.Column<long>(nullable: false),
15+
UserId = table.Column<long>(nullable: false),
16+
Id = table.Column<long>(nullable: false),
17+
Subject = table.Column<string>(nullable: true),
18+
Body = table.Column<string>(nullable: true),
19+
CreatedOn = table.Column<DateTimeOffset>(nullable: false, defaultValueSql: "GETDATE()")
20+
},
21+
constraints: table =>
22+
{
23+
table.PrimaryKey("PK_reviews", x => new { x.BreweryId, x.UserId });
24+
table.ForeignKey(
25+
name: "FK_reviews_breweries_BreweryId",
26+
column: x => x.BreweryId,
27+
principalTable: "breweries",
28+
principalColumn: "Id",
29+
onDelete: ReferentialAction.Cascade);
30+
table.ForeignKey(
31+
name: "FK_reviews_users_UserId",
32+
column: x => x.UserId,
33+
principalTable: "users",
34+
principalColumn: "Id",
35+
onDelete: ReferentialAction.Cascade);
36+
});
37+
38+
migrationBuilder.CreateIndex(
39+
name: "IX_reviews_UserId",
40+
table: "reviews",
41+
column: "UserId");
42+
}
43+
44+
protected override void Down(MigrationBuilder migrationBuilder)
45+
{
46+
migrationBuilder.DropTable(
47+
name: "reviews");
48+
}
49+
}
50+
}

dotnet/OpenBreweryDB.Data/Migrations/BreweryDbContextModelSnapshot.cs

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,35 @@ protected override void BuildModel(ModelBuilder modelBuilder)
105105
b.ToTable("Favorites");
106106
});
107107

108+
modelBuilder.Entity("OpenBreweryDB.Data.Models.Reviews.Review", b =>
109+
{
110+
b.Property<long>("BreweryId")
111+
.HasColumnType("INTEGER");
112+
113+
b.Property<long?>("UserId")
114+
.HasColumnType("INTEGER");
115+
116+
b.Property<string>("Body")
117+
.HasColumnType("TEXT");
118+
119+
b.Property<DateTimeOffset>("CreatedOn")
120+
.ValueGeneratedOnAdd()
121+
.HasColumnType("TEXT")
122+
.HasDefaultValueSql("GETDATE()");
123+
124+
b.Property<long>("Id")
125+
.HasColumnType("INTEGER");
126+
127+
b.Property<string>("Subject")
128+
.HasColumnType("TEXT");
129+
130+
b.HasKey("BreweryId", "UserId");
131+
132+
b.HasIndex("UserId");
133+
134+
b.ToTable("reviews");
135+
});
136+
108137
modelBuilder.Entity("OpenBreweryDB.Data.Models.Tag", b =>
109138
{
110139
b.Property<long>("Id")
@@ -177,6 +206,21 @@ protected override void BuildModel(ModelBuilder modelBuilder)
177206
.OnDelete(DeleteBehavior.Cascade)
178207
.IsRequired();
179208
});
209+
210+
modelBuilder.Entity("OpenBreweryDB.Data.Models.Reviews.Review", b =>
211+
{
212+
b.HasOne("OpenBreweryDB.Data.Models.Brewery", "Brewery")
213+
.WithMany("BreweryReviews")
214+
.HasForeignKey("BreweryId")
215+
.OnDelete(DeleteBehavior.Cascade)
216+
.IsRequired();
217+
218+
b.HasOne("OpenBreweryDB.Data.Models.Users.User", "User")
219+
.WithMany("UserReviews")
220+
.HasForeignKey("UserId")
221+
.OnDelete(DeleteBehavior.Cascade)
222+
.IsRequired();
223+
});
180224
#pragma warning restore 612, 618
181225
}
182226
}

dotnet/OpenBreweryDB.Data/Models/Breweries/Brewery.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using AndcultureCode.CSharp.Core.Models.Entities;
22
using HotChocolate;
33
using OpenBreweryDB.Data.Models.Favorites;
4+
using OpenBreweryDB.Data.Models.Reviews;
45
using System;
56
using System.Collections.Generic;
67

@@ -27,5 +28,7 @@ public class Brewery : Entity, IKeyedEntity
2728

2829
[GraphQLIgnore]
2930
public List<Favorite> FavoriteUsers { get; set; }
31+
32+
public List<Review> BreweryReviews { get; set; }
3033
}
3134
}

0 commit comments

Comments
 (0)