aboutsummaryrefslogtreecommitdiff
path: root/src/Data/DevHive.Data.Models
diff options
context:
space:
mode:
Diffstat (limited to 'src/Data/DevHive.Data.Models')
-rw-r--r--src/Data/DevHive.Data.Models/Comment.cs17
-rw-r--r--src/Data/DevHive.Data.Models/DevHive.Data.Models.csproj10
-rw-r--r--src/Data/DevHive.Data.Models/Language.cs14
-rw-r--r--src/Data/DevHive.Data.Models/Post.cs25
-rw-r--r--src/Data/DevHive.Data.Models/ProfilePicture.cs18
-rw-r--r--src/Data/DevHive.Data.Models/Rating.cs16
-rw-r--r--src/Data/DevHive.Data.Models/RelationalModels/PostAttachments.cs16
-rw-r--r--src/Data/DevHive.Data.Models/Role.cs16
-rw-r--r--src/Data/DevHive.Data.Models/Technology.cs14
-rw-r--r--src/Data/DevHive.Data.Models/User.cs29
10 files changed, 175 insertions, 0 deletions
diff --git a/src/Data/DevHive.Data.Models/Comment.cs b/src/Data/DevHive.Data.Models/Comment.cs
new file mode 100644
index 0000000..8a58edd
--- /dev/null
+++ b/src/Data/DevHive.Data.Models/Comment.cs
@@ -0,0 +1,17 @@
+using System;
+
+namespace DevHive.Data.Models
+{
+ public class Comment
+ {
+ public Guid Id { get; set; }
+
+ public Post Post { get; set; }
+
+ public User Creator { get; set; }
+
+ public string Message { get; set; }
+
+ public DateTime TimeCreated { get; set; }
+ }
+}
diff --git a/src/Data/DevHive.Data.Models/DevHive.Data.Models.csproj b/src/Data/DevHive.Data.Models/DevHive.Data.Models.csproj
new file mode 100644
index 0000000..2958f86
--- /dev/null
+++ b/src/Data/DevHive.Data.Models/DevHive.Data.Models.csproj
@@ -0,0 +1,10 @@
+<Project Sdk="Microsoft.NET.Sdk">
+ <PropertyGroup>
+ <TargetFramework>net5.0</TargetFramework>
+ </PropertyGroup>
+ <ItemGroup>
+ <PackageReference Include="Microsoft.AspNetCore.Identity" Version="2.2.0"/>
+ <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="5.0.4"/>
+ <PackageReference Include="SonarAnalyzer.CSharp" Version="8.20.0.28934"/>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/src/Data/DevHive.Data.Models/Language.cs b/src/Data/DevHive.Data.Models/Language.cs
new file mode 100644
index 0000000..b9e538a
--- /dev/null
+++ b/src/Data/DevHive.Data.Models/Language.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+
+namespace DevHive.Data.Models
+{
+ public class Language
+ {
+ public Guid Id { get; set; }
+
+ public string Name { get; set; }
+
+ public HashSet<User> Users { get; set; } = new();
+ }
+}
diff --git a/src/Data/DevHive.Data.Models/Post.cs b/src/Data/DevHive.Data.Models/Post.cs
new file mode 100644
index 0000000..a5e7642
--- /dev/null
+++ b/src/Data/DevHive.Data.Models/Post.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations.Schema;
+using DevHive.Data.Models.Relational;
+
+namespace DevHive.Data.Models
+{
+ [Table("Posts")]
+ public class Post
+ {
+ public Guid Id { get; set; }
+
+ public User Creator { get; set; }
+
+ public string Message { get; set; }
+
+ public DateTime TimeCreated { get; set; }
+
+ public List<Comment> Comments { get; set; } = new();
+
+ public List<Rating> Ratings { get; set; }
+
+ public List<PostAttachments> Attachments { get; set; } = new();
+ }
+}
diff --git a/src/Data/DevHive.Data.Models/ProfilePicture.cs b/src/Data/DevHive.Data.Models/ProfilePicture.cs
new file mode 100644
index 0000000..e8166d7
--- /dev/null
+++ b/src/Data/DevHive.Data.Models/ProfilePicture.cs
@@ -0,0 +1,18 @@
+using System;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace DevHive.Data.Models
+{
+ [Table("ProfilePictures")]
+ public class ProfilePicture
+ {
+ public const string DefaultURL = "/assets/icons/tabler-icon-user.svg";
+
+ public Guid Id { get; set; }
+
+ public Guid UserId { get; set; }
+ public User User { get; set; }
+
+ public string PictureURL { get; set; }
+ }
+}
diff --git a/src/Data/DevHive.Data.Models/Rating.cs b/src/Data/DevHive.Data.Models/Rating.cs
new file mode 100644
index 0000000..c950697
--- /dev/null
+++ b/src/Data/DevHive.Data.Models/Rating.cs
@@ -0,0 +1,16 @@
+using System;
+
+namespace DevHive.Data.Models
+{
+ public class Rating
+ {
+ //if adding rating to comments change Post for intreface IRatable!
+ public Guid Id { get; set; }
+
+ public User User { get; set; }
+
+ public Post Post { get; set; }
+
+ public bool IsLike { get; set; }
+ }
+}
diff --git a/src/Data/DevHive.Data.Models/RelationalModels/PostAttachments.cs b/src/Data/DevHive.Data.Models/RelationalModels/PostAttachments.cs
new file mode 100644
index 0000000..8c814fc
--- /dev/null
+++ b/src/Data/DevHive.Data.Models/RelationalModels/PostAttachments.cs
@@ -0,0 +1,16 @@
+using System;
+using System.ComponentModel.DataAnnotations.Schema;
+using DevHive.Data.Models;
+
+namespace DevHive.Data.Models.Relational
+{
+ [Table("PostAttachments")]
+ public class PostAttachments
+ {
+ public Guid Id { get; set; }
+
+ public Post Post { get; set; }
+
+ public string FileUrl { get; set; }
+ }
+}
diff --git a/src/Data/DevHive.Data.Models/Role.cs b/src/Data/DevHive.Data.Models/Role.cs
new file mode 100644
index 0000000..5456cb0
--- /dev/null
+++ b/src/Data/DevHive.Data.Models/Role.cs
@@ -0,0 +1,16 @@
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Collections.Generic;
+using Microsoft.AspNetCore.Identity;
+using System;
+
+namespace DevHive.Data.Models
+{
+ [Table("Roles")]
+ public class Role : IdentityRole<Guid>
+ {
+ public const string DefaultRole = "User";
+ public const string AdminRole = "Admin";
+
+ public HashSet<User> Users { get; set; } = new();
+ }
+}
diff --git a/src/Data/DevHive.Data.Models/Technology.cs b/src/Data/DevHive.Data.Models/Technology.cs
new file mode 100644
index 0000000..0dc077f
--- /dev/null
+++ b/src/Data/DevHive.Data.Models/Technology.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+
+namespace DevHive.Data.Models
+{
+ public class Technology
+ {
+ public Guid Id { get; set; }
+
+ public string Name { get; set; }
+
+ public HashSet<User> Users { get; set; } = new();
+ }
+}
diff --git a/src/Data/DevHive.Data.Models/User.cs b/src/Data/DevHive.Data.Models/User.cs
new file mode 100644
index 0000000..d3789ec
--- /dev/null
+++ b/src/Data/DevHive.Data.Models/User.cs
@@ -0,0 +1,29 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations.Schema;
+using Microsoft.AspNetCore.Identity;
+
+namespace DevHive.Data.Models
+{
+ [Table("Users")]
+ public class User : IdentityUser<Guid>
+ {
+ public string FirstName { get; set; }
+
+ public string LastName { get; set; }
+
+ public ProfilePicture ProfilePicture { get; set; } = new() { PictureURL = ProfilePicture.DefaultURL };
+
+ public HashSet<Language> Languages { get; set; } = new();
+
+ public HashSet<Technology> Technologies { get; set; } = new();
+
+ public HashSet<Role> Roles { get; set; } = new();
+
+ public HashSet<Post> Posts { get; set; } = new();
+
+ public HashSet<User> Friends { get; set; } = new();
+
+ public HashSet<Comment> Comments { get; set; } = new();
+ }
+}