Compare commits

..

3 Commits

Author SHA1 Message Date
gokhoal
42187ba088 commit de fichiers info 2026-04-03 09:06:35 +02:00
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
270 changed files with 102 additions and 8656 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.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? Id { 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,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.Endpoints.Discussion;
public class CreateDiscussionEndpoint
{
}

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,6 +0,0 @@
namespace Knots.Endpoints.Role;
public class CreateRoleEndpoint
{
}

View File

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

View File

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

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">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<TargetFramework>net9.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="FastEndpoints" Version="8.0.1" />
<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" />
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.8"/>
</ItemGroup>
<ItemGroup>
<Folder Include="DTO\" />
<Folder Include="Endpoints\" />
<Folder Include="Migrations\" />
<Folder Include="Validators\" />
</ItemGroup>
</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;
using FastEndpoints;
using FastEndpoints.Swagger;
var builder = WebApplication.CreateBuilder(args);
WebApplicationBuilder builder = WebApplication.CreateBuilder(args);
// Add services to the container.
// On ajoute ici la configuration de la base de données
builder.Services.AddDbContext<KnotsDbContext>();
builder.Services.AddControllers();
// Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi
builder.Services.AddOpenApi();
//On ajoute le CORS au code
builder.Services.AddCors(options =>
{ options.AddDefaultPolicy(policyBuilder =>
{
policyBuilder
.WithOrigins("http://localhost:4200")
.WithMethods("GET", "POST", "PUT", "PATCH", "DELETE")
.AllowAnyHeader();
});
});
var app = builder.Build();
// On construit l'application en lui donnant vie
WebApplication app = builder.Build();
app.UseAuthentication()
.UseAuthorization()
.UseFastEndpoints(options =>
{
options.Endpoints.RoutePrefix = "API";
options.Endpoints.ShortNames = true;
}
).UseSwaggerGen();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.MapOpenApi();
}
app.UseHttpsRedirection();
app.UseCors();
app.UseAuthorization();
app.MapControllers();
app.Run();

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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 GetKeyDetailsDtoValidator
{
}

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 GetMessageDetailsDto
{
}

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 GetUserDetailsDtoValidator
{
}

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

Binary file not shown.

Binary file not shown.

View File

@@ -1,20 +0,0 @@
{
"runtimeOptions": {
"tfm": "net8.0",
"frameworks": [
{
"name": "Microsoft.NETCore.App",
"version": "8.0.0"
},
{
"name": "Microsoft.AspNetCore.App",
"version": "8.0.0"
}
],
"configProperties": {
"System.GC.Server": true,
"System.Reflection.NullabilityInfoContext.IsSupported": true,
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
}
}
}

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