aboutsummaryrefslogtreecommitdiff
path: root/BackEnd/Timeline
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-04-16 23:15:51 +0800
committercrupest <crupest@outlook.com>2022-04-16 23:15:51 +0800
commite7a441b8805f8b02ba37ab1f550fa2939fe9e7f0 (patch)
treed447644adbd41b3d4e0adc8800b00a7b88ad4ab7 /BackEnd/Timeline
parenteb1b148146281449b56bd68d1f99b4e48287a0b7 (diff)
downloadtimeline-e7a441b8805f8b02ba37ab1f550fa2939fe9e7f0.tar.gz
timeline-e7a441b8805f8b02ba37ab1f550fa2939fe9e7f0.tar.bz2
timeline-e7a441b8805f8b02ba37ab1f550fa2939fe9e7f0.zip
...
Diffstat (limited to 'BackEnd/Timeline')
-rw-r--r--BackEnd/Timeline/Entities/RegisterCode.cs24
-rw-r--r--BackEnd/Timeline/Entities/UserEntity.cs3
-rw-r--r--BackEnd/Timeline/Services/User/RegisterCode/IRegisterCodeService.cs17
-rw-r--r--BackEnd/Timeline/Timeline.csproj2
4 files changed, 46 insertions, 0 deletions
diff --git a/BackEnd/Timeline/Entities/RegisterCode.cs b/BackEnd/Timeline/Entities/RegisterCode.cs
new file mode 100644
index 00000000..945d61e9
--- /dev/null
+++ b/BackEnd/Timeline/Entities/RegisterCode.cs
@@ -0,0 +1,24 @@
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Timeline.Entities
+{
+ [Table("register_code")]
+ public class RegisterCode
+ {
+ [Key, Column("id"), DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+ public long Id { get; set; }
+
+ [Column("owner_id")]
+ public long OwnerId { get; set; }
+
+ [ForeignKey(nameof(OwnerId))]
+ public UserEntity Owner { get; set; } = default!;
+
+ [Column("code")]
+ public string Code { get; set; } = default!;
+
+ [Column("enabled")]
+ public bool Enabled { get; set; }
+ }
+}
diff --git a/BackEnd/Timeline/Entities/UserEntity.cs b/BackEnd/Timeline/Entities/UserEntity.cs
index d8015ccf..267d0ef2 100644
--- a/BackEnd/Timeline/Entities/UserEntity.cs
+++ b/BackEnd/Timeline/Entities/UserEntity.cs
@@ -37,6 +37,9 @@ namespace Timeline.Entities
[Column("last_modified")]
public DateTime LastModified { get; set; }
+ [Column("register_code")]
+ public string? RegisterCode { get; set; }
+
public UserAvatarEntity? Avatar { get; set; }
#pragma warning disable CA2227 // Collection properties should be read only
diff --git a/BackEnd/Timeline/Services/User/RegisterCode/IRegisterCodeService.cs b/BackEnd/Timeline/Services/User/RegisterCode/IRegisterCodeService.cs
new file mode 100644
index 00000000..e4aa17fa
--- /dev/null
+++ b/BackEnd/Timeline/Services/User/RegisterCode/IRegisterCodeService.cs
@@ -0,0 +1,17 @@
+using System.Collections.Generic;
+
+namespace Timeline.Services.User.RegisterCode
+{
+ public interface IRegisterCodeService
+ {
+ string? GetCurrentRegisterCode(long userId);
+
+ List<string> GetAllRegisterCodes(long userId);
+
+ string CreateNewRegisterCode(long userId);
+
+ List<long> GetUsersIntroducedByCode(string registerCode);
+
+ List<long> GetUsersIntroducedByUser(long userId);
+ }
+}
diff --git a/BackEnd/Timeline/Timeline.csproj b/BackEnd/Timeline/Timeline.csproj
index 28234a4d..c8964363 100644
--- a/BackEnd/Timeline/Timeline.csproj
+++ b/BackEnd/Timeline/Timeline.csproj
@@ -201,8 +201,10 @@
</ItemGroup>
<ItemGroup>
<None Remove="Controllers\V2\" />
+ <None Remove="Services\User\RegisterCode\" />
</ItemGroup>
<ItemGroup>
<Folder Include="Controllers\V2\" />
+ <Folder Include="Services\User\RegisterCode\" />
</ItemGroup>
</Project> \ No newline at end of file