Compare commits

2 Commits

Author SHA1 Message Date
oistig
cc90904228 gitignore 2026-03-12 15:02:49 +01:00
oistig
47cf23d740 premier push de fichiers inutiles 2026-03-12 15:02:10 +01:00
273 changed files with 22 additions and 9039 deletions

2
.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
/.idea/.idea.Knots/.idea/.name
/Knots/obj/rider.project.model.nuget.info

View File

@@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
<data-source source="LOCAL" name="@romaric-thibault.fr" uuid="2e0ff1eb-4394-46d9-aa2d-362392df37df">
<driver-ref>sqlserver.jb</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>com.jetbrains.jdbc.sqlserver.SqlServerDriver</jdbc-driver>
<jdbc-url>Server=romaric-thibault.fr,1433</jdbc-url>
<jdbc-additional-properties>
<property name="com.intellij.clouds.kubernetes.db.host.port" />
<property name="com.intellij.clouds.kubernetes.db.enabled" value="false" />
<property name="com.intellij.clouds.kubernetes.db.container.port" />
</jdbc-additional-properties>
<working-dir>$ProjectFileDir$</working-dir>
</data-source>
</component>
</project>

View File

@@ -1,6 +0,0 @@
namespace Knots.DTO.Discussion;
public class CreateDiscussionDto
{
public int Id { get; set; }
}

View File

@@ -1,6 +0,0 @@
namespace Knots.DTO.Discussion;
public class DeleteDiscussionDto
{
public int Id { get; set; }
}

View File

@@ -1,6 +0,0 @@
namespace Knots.DTO.Discussion;
public class GetDiscussionDto
{
public int Id { get; set; }
}

View File

@@ -1,8 +0,0 @@
namespace Knots.DTO.Group;
public class CreateGroupDto
{
public string? Nom { get; set; }
public int NombreMembres { get; set; }
public string? ProfilePicture { get; set; }
}

View File

@@ -1,6 +0,0 @@
namespace Knots.DTO.Group;
public class DeleteGroupDto
{
public string? Id { get; set; }
}

View File

@@ -1,9 +0,0 @@
namespace Knots.DTO.Group;
public class GetGroupDetailsDto
{
public int Id { get; set; }
public string? Nom { get; set; }
public int NombreMembres { get; set; }
public string? ProfilePicture { get; set; }
}

View File

@@ -1,6 +0,0 @@
namespace Knots.DTO.Group;
public class GetGroupDto
{
public int Id { get; set; }
}

View File

@@ -1,9 +0,0 @@
namespace Knots.DTO.Group;
public class UpdateGroupDto
{
public int Id { get; set; }
public string? Nom { get; set; }
public int NombreMembres { get; set; }
public string? ProfilePicture { get; set; }
}

View File

@@ -1,6 +0,0 @@
namespace Knots.DTO.Group;
public class UpdateGroupNomDto
{
public string? Nom { get; set; }
}

View File

@@ -1,6 +0,0 @@
namespace Knots.DTO.Group;
public class UpdateGroupNombreMembresDto
{
public int NombreMembres { get; set; }
}

View File

@@ -1,6 +0,0 @@
namespace Knots.DTO.Group;
public class UpdateGroupProfilePictureDto
{
public string? ProfilePicture { get; set; }
}

View File

@@ -1,6 +0,0 @@
namespace Knots.DTO.Key;
public class CreateKeyDto
{
public string? EnKey { get; set; }
}

View File

@@ -1,6 +0,0 @@
namespace Knots.DTO.Key;
public class DeleteKeyDto
{
public int Id { get; set; }
}

View File

@@ -1,7 +0,0 @@
namespace Knots.DTO.Key;
public class GetKeyDetailsDto
{
public int Id { get; set; }
public string? EnKey { get; set; }
}

View File

@@ -1,6 +0,0 @@
namespace Knots.DTO.Key;
public class GetKeyDto
{
public int Id { get; set; }
}

View File

@@ -1,8 +0,0 @@
namespace Knots.DTO.Message;
public class CreateMessageDto
{
public string? Contenu { get; set; }
public DateTime Date { get; set; }
public Boolean Type { get; set; }
}

View File

@@ -1,6 +0,0 @@
namespace Knots.DTO.Message;
public class DeleteMessageDto
{
public int Id { get; set; }
}

View File

@@ -1,8 +0,0 @@
namespace Knots.DTO.Message;
public class GetMessageDetailsDto
{
public string? Contenu { get; set; }
public DateTime Date { get; set; }
public Boolean Type { get; set; }
}

View File

@@ -1,6 +0,0 @@
namespace Knots.DTO.Message;
public class GetMessageDto
{
public int Id { get; set; }
}

View File

@@ -1,7 +0,0 @@
namespace Knots.DTO.Message;
public class UpdateMessageDto
{
public string? Contenu { get; set; }
public DateTime Date { get; set; }
}

View File

@@ -1,6 +0,0 @@
namespace Knots.DTO.Role;
public class CreateRoleDto
{
public string? Libelle { get; set; }
}

View File

@@ -1,6 +0,0 @@
namespace Knots.DTO.Role;
public class DeleteRoleDto
{
public int Id { get; set; }
}

View File

@@ -1,6 +0,0 @@
namespace Knots.DTO.Role;
public class GetRoleDto
{
public string? Libelle { get; set; }
}

View File

@@ -1,11 +0,0 @@
namespace Knots.DTO.User;
public class CreateUserDto
{
public string? Username { get; set; }
public string? Description {get; set;}
public string? Password { get; set; }
public string? Email { get; set; }
public string? Tel { get; set; }
public string? ProfilePicture { get; set; }
}

View File

@@ -1,6 +0,0 @@
namespace Knots.DTO.User;
public class DeleteUserDto
{
public string? Username { get; set; }
}

View File

@@ -1,11 +0,0 @@
namespace Knots.DTO.User;
public class GetUserDetailsDto
{
public string? Username { get; set; }
public string? Description {get; set;}
public string? Password { get; set; }
public string? Email { get; set; }
public string? Tel { get; set; }
public string? ProfilePicture { get; set; }
}

View File

@@ -1,6 +0,0 @@
namespace Knots.DTO.User;
public class GetUserDto
{
public string? Username { get; set; }
}

View File

@@ -1,6 +0,0 @@
namespace Knots.DTO.User;
public class UpdateUserDescriptionDto
{
public string? Description {get; set;}
}

View File

@@ -1,11 +0,0 @@
namespace Knots.DTO.User;
public class UpdateUserDto
{
public string? Username { get; set; }
public string? Description {get; set;}
public string? Password { get; set; }
public string? Email { get; set; }
public string? Tel { get; set; }
public string? ProfilePicture { get; set; }
}

View File

@@ -1,6 +0,0 @@
namespace Knots.DTO.User;
public class UpdateUserEmailDto
{
public string? Email { get; set; }
}

View File

@@ -1,6 +0,0 @@
namespace Knots.DTO.User;
public class UpdateUserPasswordDto
{
public string? Password { get; set; }
}

View File

@@ -1,6 +0,0 @@
namespace Knots.DTO.User;
public class UpdateUserProfilePictureDto
{
public string? ProfilePicture { get; set; }
}

View File

@@ -1,6 +0,0 @@
namespace Knots.DTO.User;
public class UpdateUserTelDto
{
public string? Tel { get; set; }
}

View File

@@ -1,6 +0,0 @@
namespace Knots.DTO.User;
public class UpdateUsernameDto
{
public string? Username { get; set; }
}

View File

@@ -1,32 +0,0 @@
using FastEndpoints;
using Knots.DTO.Discussion;
using Knots.DTO.User;
namespace Knots.Endpoints.Discussion;
public class CreateUserEndpoint(KnotsDbContext knotsDbContext) : Endpoint<CreateDiscussionDto, GetDiscussionDto>
{
public override void Configure()
{
Post("/users");
AllowAnonymous();
}
public override async Task HandleAsync(CreateDiscussionDto req, CancellationToken ct)
{
Models.Discussion discussion = new()
{
};
knotsDbContext.Add(discussion);
await knotsDbContext.SaveChangesAsync(ct);
GetDiscussionDto response = new()
{
Id = discussion.Id,
};
await Send.OkAsync(response, ct);
}
}

View File

@@ -1,6 +0,0 @@
namespace Knots.Endpoints.Discussion;
public class DeleteDiscussionEndpoint
{
}

View File

@@ -1,6 +0,0 @@
namespace Knots.Endpoints.Discussion;
public class GetDiscussionEndpoint
{
}

View File

@@ -1,6 +0,0 @@
namespace Knots.Endpoints.Group;
public class CreateGroupEndpoint
{
}

View File

@@ -1,6 +0,0 @@
namespace Knots.Endpoints.Group;
public class DeleteGroupEndpoint
{
}

View File

@@ -1,6 +0,0 @@
namespace Knots.Endpoints.Group;
public class GetGroupEndpoint
{
}

View File

@@ -1,6 +0,0 @@
namespace Knots.Endpoints.Key;
public class CreateKeyEndpoint
{
}

View File

@@ -1,6 +0,0 @@
namespace Knots.Endpoints.Key;
public class DeleteKeyEndpoint
{
}

View File

@@ -1,6 +0,0 @@
namespace Knots.Endpoints.Key;
public class GetKeyEndpoint
{
}

View File

@@ -1,6 +0,0 @@
namespace Knots.Endpoints.Message;
public class CreateMessageEndpoint
{
}

View File

@@ -1,6 +0,0 @@
namespace Knots.Endpoints.Message;
public class DeleteMessageEndpoint
{
}

View File

@@ -1,6 +0,0 @@
namespace Knots.Endpoints.Message;
public class GetMessageEndpoint
{
}

View File

@@ -1,32 +0,0 @@
using FastEndpoints;
using Knots.DTO.Role;
using Knots.DTO.User;
namespace Knots.Endpoints.Role;
public class CreateRoleEndpoint(KnotsDbContext knotsDbContext) : Endpoint<CreateRoleDto, GetRoleDto>
{
public override void Configure()
{
Post("/roles");
AllowAnonymous();
}
public override async Task HandleAsync(CreateRoleDto req, CancellationToken ct)
{
Models.Role role = new()
{
Libelle = req.Libelle
};
knotsDbContext.Add(role);
await knotsDbContext.SaveChangesAsync(ct);
GetRoleDto response = new()
{
Libelle = role.Libelle
};
await Send.OkAsync(response, ct);
}
}

View File

@@ -1,33 +0,0 @@
using FastEndpoints;
using Knots.DTO.Role;
using Knots.DTO.User;
using Microsoft.EntityFrameworkCore;
namespace Knots.Endpoints.Role;
public class GetRoleEndpoint(KnotsDbContext knotsDbContext) : Endpoint <GetRoleDto>
{
public override void Configure()
{
Get ("/roles/{@Id}", x => new { x.Libelle });
AllowAnonymous();
}
public override async Task HandleAsync(GetRoleDto req, CancellationToken ct)
{
Models.Role? databaseRole = await knotsDbContext.Roles.SingleOrDefaultAsync(x => x.Libelle == req.Libelle, cancellationToken: ct);
if (databaseRole == null)
{
await Send.NotFoundAsync(ct);
return;
}
GetRoleDto dto = new()
{
Libelle = databaseRole.Libelle,
};
await Send.OkAsync(dto, ct);
}
}

View File

@@ -1,36 +0,0 @@
using FastEndpoints;
using Knots.DTO.User;
namespace Knots.Endpoints.User;
public class CreateUserEndpoint(KnotsDbContext knotsDbContext) : Endpoint<CreateUserDto, GetUserDto>
{
public override void Configure()
{
Post("/users");
AllowAnonymous();
}
public override async Task HandleAsync(CreateUserDto req, CancellationToken ct)
{
Models.User user = new()
{
Username = req.Username,
Description = req.Description,
Password = req.Password,
Email = req.Email,
Tel = req.Tel,
ProfilePicture = req.ProfilePicture
};
knotsDbContext.Add(user);
await knotsDbContext.SaveChangesAsync(ct);
GetUserDto response = new()
{
Username = user.Username
};
await Send.OkAsync(response, ct);
}
}

View File

@@ -1,28 +0,0 @@
using FastEndpoints;
using Knots.DTO.User;
using Microsoft.EntityFrameworkCore;
namespace Knots.Endpoints.User;
public class DeleteUserEndpoint(KnotsDbContext knotsDbContext) : Endpoint <GetUserDto, GetUserDetailsDto>
{
public override void Configure()
{
Delete ("/users/{@Id}", x => new { x.Username });
}
public override async Task HandleAsync(GetUserDto req, CancellationToken ct)
{
Models.User? databaseUser = await knotsDbContext.Users.SingleOrDefaultAsync(x => x.Username == req.Username, cancellationToken: ct);
if (databaseUser == null)
{
await Send.NotFoundAsync(ct);
return;
}
knotsDbContext.Users.Remove(databaseUser);
await knotsDbContext.SaveChangesAsync(ct);
await Send.NoContentAsync(ct);
}
}

View File

@@ -1,24 +0,0 @@
using FastEndpoints;
using Knots.DTO.User;
using Microsoft.EntityFrameworkCore;
namespace Knots.Endpoints.User;
public class GetAllUsersEndpoint(KnotsDbContext knotsDbContext) : EndpointWithoutRequest<List<GetUserDto>>
{
public override void Configure()
{
Get ("/users");
AllowAnonymous();
}
public override async Task HandleAsync(CancellationToken ct)
{
List<GetUserDto> users= await knotsDbContext.Users.Select(x => new GetUserDto()
{
Username = x.Username,
}).ToListAsync(ct);
await Send.OkAsync(users, ct);
}
}

View File

@@ -1,37 +0,0 @@
using FastEndpoints;
using Knots.DTO.User;
using Microsoft.EntityFrameworkCore;
namespace Knots.Endpoints.User;
public class GetUserEndpoint(KnotsDbContext knotsDbContext) : Endpoint <GetUserDto, GetUserDetailsDto>
{
public override void Configure()
{
Get ("/users/{@Id}", x => new { x.Username });
AllowAnonymous();
}
public override async Task HandleAsync(GetUserDto req, CancellationToken ct)
{
Models.User? databaseLogin = await knotsDbContext.Users.SingleOrDefaultAsync(x => x.Username == req.Username, cancellationToken: ct);
if (databaseLogin == null)
{
await Send.NotFoundAsync(ct);
return;
}
GetUserDetailsDto dto = new()
{
Username = databaseLogin.Username,
Description = databaseLogin.Description,
Password = databaseLogin.Password,
Email = databaseLogin.Email,
Tel = databaseLogin.Tel,
ProfilePicture = databaseLogin.ProfilePicture
};
await Send.OkAsync(dto, ct);
}
}

View File

@@ -1,46 +0,0 @@
using FastEndpoints;
using Knots.DTO.User;
using Microsoft.EntityFrameworkCore;
namespace Knots.Endpoints.User;
public class UpdateUserEndpoint(KnotsDbContext knotsDbContext) : Endpoint <UpdateUserDto, GetUserDetailsDto>
{
public override void Configure()
{
Put ("/users/{@Id}", x => new { x.Username });
}
public override async Task HandleAsync(UpdateUserDto req, CancellationToken ct)
{
Models.User? databaseUser = await knotsDbContext.Users.SingleOrDefaultAsync(x => x.Username == req.Username, cancellationToken: ct);
if (databaseUser == null)
{
await Send.NotFoundAsync(ct);
return;
}
else
{
databaseUser.Username = req.Username;
databaseUser.Password = req.Password;
databaseUser.Description = req.Description;
databaseUser.Tel = req.Tel;
databaseUser.Email = req.Email;
databaseUser.ProfilePicture = req.ProfilePicture;
}
await knotsDbContext.SaveChangesAsync(ct);
GetUserDetailsDto dto = new()
{
Username = databaseUser.Username,
Password = databaseUser.Password,
Description = databaseUser.Description,
Tel = databaseUser.Tel,
Email = databaseUser.Email,
ProfilePicture = databaseUser.ProfilePicture
};
await Send.OkAsync(dto, ct);
}
}

View File

@@ -1,26 +1,19 @@
<Project Sdk="Microsoft.NET.Sdk.Web"> <Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net8.0</TargetFramework> <TargetFramework>net9.0</TargetFramework>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="FastEndpoints" Version="8.0.1" /> <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.8"/>
<PackageReference Include="FastEndpoints.Swagger" Version="8.0.1" />
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="8.0.25" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.25" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.25">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.25" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Folder Include="DTO\" />
<Folder Include="Endpoints\" /> <Folder Include="Endpoints\" />
<Folder Include="Migrations\" /> <Folder Include="Validators\" />
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@@ -1,33 +0,0 @@
using Knots.Models;
using Microsoft.EntityFrameworkCore;
namespace Knots;
public class KnotsDbContext : DbContext
{
public DbSet<Discussion> Discussions { get; set; }
public DbSet<Group> Groups { get; set; }
public DbSet<Key> Keys { get; set; }
public DbSet<Message> Messages { get; set; }
public DbSet<Role> Roles { get; set; }
public DbSet<User> Users { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
//Infos de connexion à la base de données
string connectionString =
"Server=romaric-thibault.fr;" +
"Database=Knots;" +
"User Id=mathieu;" +
"Password=Onto9-Cage-Afflicted;" +
"TrustServerCertificate=true;";
optionsBuilder.UseSqlServer(connectionString);
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
//Données à insérer
}
}

View File

@@ -1,165 +0,0 @@
// <auto-generated />
using System;
using Knots;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace Knots.Migrations
{
[DbContext(typeof(KnotsDbContext))]
[Migration("20260312155557_Initial")]
partial class Initial
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "8.0.25")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("Knots.Models.Discussion", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.HasKey("Id");
b.ToTable("Discussions");
});
modelBuilder.Entity("Knots.Models.Group", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("Nom")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<int>("NombreMembres")
.HasColumnType("int");
b.Property<string>("ProfilePicture")
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.ToTable("Groups");
});
modelBuilder.Entity("Knots.Models.Key", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("EnKey")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.HasKey("Id");
b.ToTable("Keys");
});
modelBuilder.Entity("Knots.Models.Message", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("Contenu")
.IsRequired()
.HasMaxLength(1000)
.HasColumnType("nvarchar(1000)");
b.Property<DateTime>("Date")
.HasColumnType("datetime2");
b.Property<bool>("Type")
.HasColumnType("bit");
b.HasKey("Id");
b.ToTable("Messages");
});
modelBuilder.Entity("Knots.Models.Role", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("Libelle")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.HasKey("Id");
b.ToTable("Roles");
});
modelBuilder.Entity("Knots.Models.User", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("Description")
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.Property<string>("Email")
.IsRequired()
.HasMaxLength(70)
.HasColumnType("nvarchar(70)");
b.Property<string>("Password")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("ProfilePicture")
.HasColumnType("nvarchar(max)");
b.Property<string>("Tel")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("Username")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.HasKey("Id");
b.ToTable("Users");
});
#pragma warning restore 612, 618
}
}
}

View File

@@ -1,123 +0,0 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Knots.Migrations
{
/// <inheritdoc />
public partial class Initial : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Discussions",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1")
},
constraints: table =>
{
table.PrimaryKey("PK_Discussions", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Groups",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
Nom = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false),
NombreMembres = table.Column<int>(type: "int", nullable: false),
ProfilePicture = table.Column<string>(type: "nvarchar(max)", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Groups", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Keys",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
EnKey = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Keys", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Messages",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
Contenu = table.Column<string>(type: "nvarchar(1000)", maxLength: 1000, nullable: false),
Date = table.Column<DateTime>(type: "datetime2", nullable: false),
Type = table.Column<bool>(type: "bit", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Messages", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Roles",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
Libelle = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Roles", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Users",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
Username = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false),
Description = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true),
Password = table.Column<string>(type: "nvarchar(max)", nullable: false),
Email = table.Column<string>(type: "nvarchar(70)", maxLength: 70, nullable: false),
Tel = table.Column<string>(type: "nvarchar(max)", nullable: false),
ProfilePicture = table.Column<string>(type: "nvarchar(max)", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Users", x => x.Id);
});
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "Discussions");
migrationBuilder.DropTable(
name: "Groups");
migrationBuilder.DropTable(
name: "Keys");
migrationBuilder.DropTable(
name: "Messages");
migrationBuilder.DropTable(
name: "Roles");
migrationBuilder.DropTable(
name: "Users");
}
}
}

View File

@@ -1,162 +0,0 @@
// <auto-generated />
using System;
using Knots;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace Knots.Migrations
{
[DbContext(typeof(KnotsDbContext))]
partial class KnotsDbContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "8.0.25")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("Knots.Models.Discussion", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.HasKey("Id");
b.ToTable("Discussions");
});
modelBuilder.Entity("Knots.Models.Group", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("Nom")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.Property<int>("NombreMembres")
.HasColumnType("int");
b.Property<string>("ProfilePicture")
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.ToTable("Groups");
});
modelBuilder.Entity("Knots.Models.Key", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("EnKey")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.HasKey("Id");
b.ToTable("Keys");
});
modelBuilder.Entity("Knots.Models.Message", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("Contenu")
.IsRequired()
.HasMaxLength(1000)
.HasColumnType("nvarchar(1000)");
b.Property<DateTime>("Date")
.HasColumnType("datetime2");
b.Property<bool>("Type")
.HasColumnType("bit");
b.HasKey("Id");
b.ToTable("Messages");
});
modelBuilder.Entity("Knots.Models.Role", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("Libelle")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.HasKey("Id");
b.ToTable("Roles");
});
modelBuilder.Entity("Knots.Models.User", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("Description")
.HasMaxLength(200)
.HasColumnType("nvarchar(200)");
b.Property<string>("Email")
.IsRequired()
.HasMaxLength(70)
.HasColumnType("nvarchar(70)");
b.Property<string>("Password")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("ProfilePicture")
.HasColumnType("nvarchar(max)");
b.Property<string>("Tel")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("Username")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)");
b.HasKey("Id");
b.ToTable("Users");
});
#pragma warning restore 612, 618
}
}
}

View File

@@ -1,8 +0,0 @@
using System.ComponentModel.DataAnnotations;
namespace Knots.Models;
public class Discussion
{
[Key] public int Id { get; set; }
}

View File

@@ -1,12 +0,0 @@
using System.ComponentModel.DataAnnotations;
using System.Net.Mime;
namespace Knots.Models;
public class Group
{
[Key] public int Id { get; set; }
[Required, MaxLength(50)] public string? Nom { get; set; }
[Required] public int NombreMembres { get; set; }
public string? ProfilePicture { get; set; }
}

View File

@@ -1,9 +0,0 @@
using System.ComponentModel.DataAnnotations;
namespace Knots.Models;
public class Key
{
[Key] public int Id { get; set; }
[Required, MaxLength(50)] public string? EnKey { get; set; }
}

View File

@@ -1,11 +0,0 @@
using System.ComponentModel.DataAnnotations;
namespace Knots.Models;
public class Message
{
[Key] public int Id { get; set; }
[Required, MaxLength(1000)] public string? Contenu { get; set; }
[Required] public DateTime Date { get; set; }
[Required] public Boolean Type { get; set; }
}

View File

@@ -1,9 +0,0 @@
using System.ComponentModel.DataAnnotations;
namespace Knots.Models;
public class Role
{
public int Id { get; set; }
[Required, MaxLength(50)] public string? Libelle { get; set; }
}

View File

@@ -1,14 +0,0 @@
using System.ComponentModel.DataAnnotations;
namespace Knots.Models;
public class User
{
public int Id { get; set; }
[Required, MaxLength(50)] public string? Username { get; set; }
[MaxLength(200)] public string? Description {get; set;}
[Required, Length(12, 50)] public string? Password { get; set; }
[Required, MaxLength(70)] public string? Email { get; set; }
[Required, Length(10, 10)] public string? Tel { get; set; }
public string? ProfilePicture { get; set; }
}

View File

@@ -1,36 +1,23 @@
using Knots; var builder = WebApplication.CreateBuilder(args);
using FastEndpoints;
using FastEndpoints.Swagger;
WebApplicationBuilder builder = WebApplication.CreateBuilder(args); // Add services to the container.
// On ajoute ici la configuration de la base de données builder.Services.AddControllers();
builder.Services.AddDbContext<KnotsDbContext>(); // Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi
builder.Services.AddOpenApi();
//On ajoute le CORS au code var app = builder.Build();
builder.Services.AddCors(options =>
{ options.AddDefaultPolicy(policyBuilder =>
{
policyBuilder
.WithOrigins("http://localhost:4200")
.WithMethods("GET", "POST", "PUT", "PATCH", "DELETE")
.AllowAnyHeader();
});
});
// On construit l'application en lui donnant vie // Configure the HTTP request pipeline.
WebApplication app = builder.Build(); if (app.Environment.IsDevelopment())
app.UseAuthentication() {
.UseAuthorization() app.MapOpenApi();
.UseFastEndpoints(options => }
{
options.Endpoints.RoutePrefix = "API";
options.Endpoints.ShortNames = true;
}
).UseSwaggerGen();
app.UseHttpsRedirection(); app.UseHttpsRedirection();
app.UseCors(); app.UseAuthorization();
app.MapControllers();
app.Run(); app.Run();

View File

@@ -1,15 +0,0 @@
using FastEndpoints;
using FluentValidation;
using Knots.DTO.Discussion;
namespace Knots.Validators.Discussion;
public class CreateDiscussionDtoValidator : Validator<CreateDiscussionDto>
{
public CreateDiscussionDtoValidator()
{
RuleFor(x => x.Id)
.NotEmpty()
.WithMessage("Id is required");
}
}

View File

@@ -1,15 +0,0 @@
using FastEndpoints;
using FluentValidation;
using Knots.DTO.Discussion;
namespace Knots.Validators.Discussion;
public class DeleteDiscussionDtoValidator : Validator<DeleteDiscussionDto>
{
public DeleteDiscussionDtoValidator()
{
RuleFor(x => x.Id)
.NotEmpty()
.WithMessage("Id is required");
}
}

View File

@@ -1,21 +0,0 @@
using FastEndpoints;
using FluentValidation;
using Knots.DTO.Group;
namespace Knots.Validators.Group;
public class CreateGroupDtoValidator : Validator<CreateGroupDto>
{
public CreateGroupDtoValidator()
{
RuleFor(x => x.Nom)
.NotEmpty()
.WithMessage("You must enter a name for the group")
.MaximumLength(50)
.WithMessage("Maximum 50 character are required");
RuleFor(x => x.NombreMembres)
.NotEmpty()
.WithMessage("Members cannot be empty");
}
}

View File

@@ -1,15 +0,0 @@
using FastEndpoints;
using FluentValidation;
using Knots.DTO.Group;
namespace Knots.Validators.Group;
public class DeleteGroupDtoValidator : Validator<DeleteGroupDto>
{
public DeleteGroupDtoValidator()
{
RuleFor(x => x.Id)
.NotEmpty()
.WithMessage("Id is required");
}
}

View File

@@ -1,15 +0,0 @@
using FastEndpoints;
using FluentValidation;
using Knots.DTO.Group;
namespace Knots.Validators.Group;
public class GetGroupDtoValidator : Validator<GetGroupDto>
{
public GetGroupDtoValidator()
{
RuleFor(x => x.Id)
.NotEmpty()
.WithMessage("Id cannot be empty");
}
}

View File

@@ -1,9 +0,0 @@
using FastEndpoints;
using Knots.DTO.Group;
namespace Knots.Validators.Group;
public class UpdateGroupDtoValidator : Validator<UpdateGroupDto>
{
}

View File

@@ -1,6 +0,0 @@
namespace Knots.Validators.Key;
public class CreateKeyDtoValidator
{
}

View File

@@ -1,6 +0,0 @@
namespace Knots.Validators.Key;
public class DeleteKeyDtoValidator
{
}

View File

@@ -1,6 +0,0 @@
namespace Knots.Validators.Key;
public class GetKeyDtoValidator
{
}

View File

@@ -1,6 +0,0 @@
namespace Knots.Validators.Message;
public class CreateMessageDtoValidator
{
}

View File

@@ -1,6 +0,0 @@
namespace Knots.Validators.Message;
public class DeleteMessageDtoValidator
{
}

View File

@@ -1,6 +0,0 @@
namespace Knots.Validators.Message;
public class GetMessageDtoValidator
{
}

View File

@@ -1,6 +0,0 @@
namespace Knots.Validators.Message;
public class UpdateMessagesDto
{
}

View File

@@ -1,6 +0,0 @@
namespace Knots.Validators.Role;
public class CreateRoleDtoValidator
{
}

View File

@@ -1,6 +0,0 @@
namespace Knots.Validators.Role;
public class DeleteRoleDtoValidator
{
}

View File

@@ -1,6 +0,0 @@
namespace Knots.Validators.Role;
public class GetRoleDtoValidator
{
}

View File

@@ -1,6 +0,0 @@
namespace Knots.Validators.User;
public class CreateUserDtoValidator
{
}

View File

@@ -1,6 +0,0 @@
namespace Knots.Validators.User;
public class DeleteUserDtoValidator
{
}

View File

@@ -1,6 +0,0 @@
namespace Knots.Validators.User;
public class GetUserDtoValidator
{
}

View File

@@ -1,6 +0,0 @@
namespace Knots.Validators.User;
public class UpdateUserDtoValidator
{
}

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More