Skip to content

Commit 437c648

Browse files
committed
use uuidv7
1 parent acbd2cb commit 437c648

File tree

11 files changed

+265
-251
lines changed

11 files changed

+265
-251
lines changed

docs/llm/dump.txt

Lines changed: 130 additions & 130 deletions
Large diffs are not rendered by default.

docs/llm/gemini.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3073,7 +3073,7 @@ else
30733073
}
30743074
30753075
// Generate unique slug
3076-
var baseSlug = SlugService.GenerateSlug(_title);
3076+
var baseSlug = SlugService.GenerateSlugOrUuid(_title);
30773077
var finalSlug = baseSlug;
30783078
var counter = 1;
30793079
@@ -5095,7 +5095,7 @@ else
50955095
_content = await ProcessImagesForDimensions(_content);
50965096
50975097
// Generate unique slug
5098-
var baseSlug = SlugService.GenerateSlug(_title);
5098+
var baseSlug = SlugService.GenerateSlugOrUuid(_title);
50995099
var finalSlug = baseSlug;
51005100
var counter = 1;
51015101

docs/llm/output/0017.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -754,7 +754,7 @@ else
754754
}
755755

756756
// Generate unique slug
757-
var baseSlug = SlugService.GenerateSlug(_title);
757+
var baseSlug = SlugService.GenerateSlugOrUuid(_title);
758758
var finalSlug = baseSlug;
759759
var counter = 1;
760760

docs/llm/source.txt

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ FILE: src/Directory.Build.props
9292
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
9393
<AnalysisLevel>latest</AnalysisLevel>
9494
</PropertyGroup>
95-
95+
9696
<PropertyGroup Condition="$(MSBuildProjectName.Contains('.Tests'))">
9797
<IsPackable>false</IsPackable>
9898
<OutputType>Exe</OutputType>
@@ -653,7 +653,7 @@ namespace MyBlog.Core.Services;
653653

654654
/// <summary>
655655
/// Custom Markdown to HTML renderer.
656-
/// Supports: headings, bold, italic, links, images, code blocks, blockquotes,
656+
/// Supports: headings, bold, italic, links, images, code blocks, blockquotes,
657657
/// unordered lists, ordered lists, horizontal rules.
658658
/// </summary>
659659
public sealed partial class MarkdownService : IMarkdownService
@@ -1082,13 +1082,13 @@ FILE: src/MyBlog.Infrastructure/MyBlog.Infrastructure.csproj
10821082
<PropertyGroup>
10831083
<RootNamespace>MyBlog.Infrastructure</RootNamespace>
10841084
</PropertyGroup>
1085-
1085+
10861086
<ItemGroup>
10871087
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" />
10881088
<PackageReference Include="Microsoft.AspNetCore.Identity" />
10891089
<PackageReference Include="OpenTelemetry" />
10901090
</ItemGroup>
1091-
1091+
10921092
<ItemGroup>
10931093
<ProjectReference Include="..\MyBlog.Core\MyBlog.Core.csproj" />
10941094
</ItemGroup>
@@ -2989,14 +2989,14 @@ FILE: src/MyBlog.Tests/MyBlog.Tests.csproj
29892989
<RootNamespace>MyBlog.Tests</RootNamespace>
29902990
<IsTestProject>true</IsTestProject>
29912991
</PropertyGroup>
2992-
2992+
29932993
<ItemGroup>
29942994
<PackageReference Include="Microsoft.NET.Test.Sdk" />
29952995
<PackageReference Include="xunit.v3" />
29962996
<PackageReference Include="Microsoft.Testing.Extensions.TrxReport" />
29972997
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" />
29982998
</ItemGroup>
2999-
2999+
30003000
<ItemGroup>
30013001
<ProjectReference Include="..\MyBlog.Core\MyBlog.Core.csproj" />
30023002
<ProjectReference Include="..\MyBlog.Web\MyBlog.Web.csproj" />
@@ -3425,62 +3425,62 @@ public class SlugServiceTests
34253425
[Fact]
34263426
public void GenerateSlug_WithSimpleTitle_ReturnsLowercaseWithHyphens()
34273427
{
3428-
var result = _sut.GenerateSlug("Hello World");
3428+
var result = _sut.GenerateSlugOrUuid("Hello World");
34293429
Assert.Equal("hello-world", result);
34303430
}
34313431

34323432
[Fact]
34333433
public void GenerateSlug_WithSpecialCharacters_RemovesThem()
34343434
{
3435-
var result = _sut.GenerateSlug("Hello, World! How's it going?");
3435+
var result = _sut.GenerateSlugOrUuid("Hello, World! How's it going?");
34363436
Assert.Equal("hello-world-hows-it-going", result);
34373437
}
34383438

34393439
[Fact]
34403440
public void GenerateSlug_WithMultipleSpaces_CollapsesToSingleHyphen()
34413441
{
3442-
var result = _sut.GenerateSlug("Hello World");
3442+
var result = _sut.GenerateSlugOrUuid("Hello World");
34433443
Assert.Equal("hello-world", result);
34443444
}
34453445

34463446
[Fact]
34473447
public void GenerateSlug_WithUnicode_RemovesDiacritics()
34483448
{
3449-
var result = _sut.GenerateSlug("Café résumé");
3449+
var result = _sut.GenerateSlugOrUuid("Café résumé");
34503450
Assert.Equal("cafe-resume", result);
34513451
}
34523452

34533453
[Fact]
34543454
public void GenerateSlug_WithLeadingTrailingSpaces_TrimsHyphens()
34553455
{
3456-
var result = _sut.GenerateSlug(" Hello World ");
3456+
var result = _sut.GenerateSlugOrUuid(" Hello World ");
34573457
Assert.Equal("hello-world", result);
34583458
}
34593459

34603460
[Fact]
34613461
public void GenerateSlug_WithNumbers_PreservesNumbers()
34623462
{
3463-
var result = _sut.GenerateSlug("Top 10 Tips for 2024");
3463+
var result = _sut.GenerateSlugOrUuid("Top 10 Tips for 2024");
34643464
Assert.Equal("top-10-tips-for-2024", result);
34653465
}
34663466

34673467
[Fact]
34683468
public void GenerateSlug_WithUnderscores_ConvertsToHyphens()
34693469
{
3470-
var result = _sut.GenerateSlug("hello_world_test");
3470+
var result = _sut.GenerateSlugOrUuid("hello_world_test");
34713471
Assert.Equal("hello-world-test", result);
34723472
}
34733473

34743474
[Fact]
34753475
public void GenerateSlug_WithEmptyString_ThrowsArgumentException()
34763476
{
3477-
Assert.Throws<ArgumentException>(() => _sut.GenerateSlug(""));
3477+
Assert.Throws<ArgumentException>(() => _sut.GenerateSlugOrUuid(""));
34783478
}
34793479

34803480
[Fact]
34813481
public void GenerateSlug_WithWhitespaceOnly_ThrowsArgumentException()
34823482
{
3483-
Assert.Throws<ArgumentException>(() => _sut.GenerateSlug(" "));
3483+
Assert.Throws<ArgumentException>(() => _sut.GenerateSlugOrUuid(" "));
34843484
}
34853485
}
34863486

@@ -4464,7 +4464,7 @@ FILE: src/MyBlog.Web/Components/Pages/Admin/ChangePassword.razor
44644464
// Get current user ID
44654465
var context = HttpContextAccessor.HttpContext;
44664466
var userIdClaim = context?.User?.FindFirst(ClaimTypes.NameIdentifier)?.Value;
4467-
4467+
44684468
if (string.IsNullOrEmpty(userIdClaim) || !Guid.TryParse(userIdClaim, out var userId))
44694469
{
44704470
_errorMessage = "Unable to identify current user. Please log in again.";
@@ -4659,7 +4659,7 @@ else
46594659

46604660
var authState = await AuthStateProvider.GetAuthenticationStateAsync();
46614661
var userIdClaim = authState.User.FindFirst(ClaimTypes.NameIdentifier);
4662-
4662+
46634663
if (userIdClaim is null || !Guid.TryParse(userIdClaim.Value, out var userId))
46644664
{
46654665
_uploadStatus = "Unable to identify current user. Please log in again.";
@@ -4841,7 +4841,7 @@ else
48414841
}
48424842

48434843
// Generate unique slug
4844-
var baseSlug = SlugService.GenerateSlug(_title);
4844+
var baseSlug = SlugService.GenerateSlugOrUuid(_title);
48454845
var finalSlug = baseSlug;
48464846
var counter = 1;
48474847

@@ -5021,7 +5021,7 @@ FILE: src/MyBlog.Web/Components/Pages/Admin/UserEditor.razor
50215021
<div class="form-group">
50225022
<label for="password">Password @(IsEdit ? "(Leave blank to keep current)" : "")</label>
50235023
<input type="password" id="password" @bind="_password" required="@(!IsEdit)" />
5024-
@if (!IsEdit)
5024+
@if (!IsEdit)
50255025
{
50265026
<small>Required for new users.</small>
50275027
}
@@ -5239,7 +5239,7 @@ FILE: src/MyBlog.Web/Components/Pages/Admin/UserList.razor
52395239
if (id == _currentUserId) return;
52405240

52415241
var confirm = await JsRuntime.InvokeAsync<bool>("confirm", "Are you sure you want to delete this user?");
5242-
5242+
52435243
if (confirm)
52445244
{
52455245
await UserRepository.DeleteAsync(id);
@@ -5296,7 +5296,7 @@ else
52965296

52975297
var pageSize = Configuration.GetValue("Application:PostsPerPage", 10);
52985298
var (posts, totalCount) = await PostRepository.GetPublishedPostsAsync(_currentPage, pageSize);
5299-
5299+
53005300
_posts = posts;
53015301
_totalPages = (int)Math.Ceiling(totalCount / (double)pageSize);
53025302
}
@@ -5327,7 +5327,7 @@ FILE: src/MyBlog.Web/Components/Pages/Login.razor
53275327

53285328
<form method="post" @onsubmit="HandleLogin" @formname="login">
53295329
<AntiforgeryToken />
5330-
5330+
53315331
<div class="form-group">
53325332
<label for="username">Username</label>
53335333
<input type="text" id="username" name="username" @bind="_username" required />
@@ -5380,15 +5380,15 @@ FILE: src/MyBlog.Web/Components/Pages/Login.razor
53805380
new(ClaimTypes.NameIdentifier, user.Id.ToString()),
53815381
new(ClaimTypes.Name, user.Username),
53825382
new("DisplayName", user.DisplayName),
5383-
new(ClaimTypes.Role, AppConstants.AdminRole)
5383+
new(ClaimTypes.Role, AppConstants.AdminRole)
53845384
};
53855385

53865386
var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
53875387
var principal = new ClaimsPrincipal(identity);
53885388

53895389
var context = HttpContextAccessor.HttpContext!;
53905390
await context.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, principal);
5391-
5391+
53925392
Navigation.NavigateTo(ReturnUrl ?? "/admin", forceLoad: true);
53935393
}
53945394
}
@@ -5547,9 +5547,9 @@ FILE: src/MyBlog.Web/Components/Shared/Pagination.razor
55475547
{
55485548
<a href="@GetPageUrl(CurrentPage - 1)" class="page-link">← Previous</a>
55495549
}
5550-
5550+
55515551
<span class="page-info">Page @CurrentPage of @TotalPages</span>
5552-
5552+
55535553
@if (CurrentPage < TotalPages)
55545554
{
55555555
<a href="@GetPageUrl(CurrentPage + 1)" class="page-link">Next →</a>
@@ -5874,14 +5874,14 @@ FILE: src/MyBlog.Web/MyBlog.Web.csproj
58745874
<PropertyGroup>
58755875
<RootNamespace>MyBlog.Web</RootNamespace>
58765876
</PropertyGroup>
5877-
5877+
58785878
<ItemGroup>
58795879
<PackageReference Include="OpenTelemetry.Extensions.Hosting" />
58805880
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" />
58815881
<PackageReference Include="OpenTelemetry.Exporter.Console" />
58825882
<PackageReference Include="OpenTelemetry.Instrumentation.Http" />
58835883
</ItemGroup>
5884-
5884+
58855885
<ItemGroup>
58865886
<ProjectReference Include="..\MyBlog.Infrastructure\MyBlog.Infrastructure.csproj" />
58875887
</ItemGroup>

0 commit comments

Comments
 (0)