diff options
Diffstat (limited to 'src/Data/DevHive.Data.Models')
| -rw-r--r-- | src/Data/DevHive.Data.Models/Comment.cs | 17 | ||||
| -rw-r--r-- | src/Data/DevHive.Data.Models/DevHive.Data.Models.csproj | 10 | ||||
| -rw-r--r-- | src/Data/DevHive.Data.Models/Language.cs | 14 | ||||
| -rw-r--r-- | src/Data/DevHive.Data.Models/Post.cs | 25 | ||||
| -rw-r--r-- | src/Data/DevHive.Data.Models/ProfilePicture.cs | 18 | ||||
| -rw-r--r-- | src/Data/DevHive.Data.Models/Rating.cs | 16 | ||||
| -rw-r--r-- | src/Data/DevHive.Data.Models/RelationalModels/PostAttachments.cs | 16 | ||||
| -rw-r--r-- | src/Data/DevHive.Data.Models/Role.cs | 16 | ||||
| -rw-r--r-- | src/Data/DevHive.Data.Models/Technology.cs | 14 | ||||
| -rw-r--r-- | src/Data/DevHive.Data.Models/User.cs | 29 |
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(); + } +} |
