< Summary

Information
Class: Api.Works.Models.WorkTag
Assembly: Api
File(s): /home/runner/work/ProjectRead.ing/ProjectRead.ing/Api/Works/Models/WorkTag.cs
Line coverage
100%
Covered lines: 4
Uncovered lines: 0
Coverable lines: 4
Total lines: 69
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_IdPostfix()100%11100%
.ctor()100%11100%

File(s)

/home/runner/work/ProjectRead.ing/ProjectRead.ing/Api/Works/Models/WorkTag.cs

#LineLine coverage
 1// SPDX-FileCopyrightText: 2026 Alper Çelik <[email protected]>
 2//
 3// SPDX-License-Identifier: AGPL-3.0-or-later
 4
 5using System.ComponentModel.DataAnnotations;
 6using System.ComponentModel.DataAnnotations.Schema;
 7using Api.Auth.Models;
 8using Microsoft.EntityFrameworkCore;
 9using Microsoft.EntityFrameworkCore.Metadata.Builders;
 10using Riok.Mapperly.Abstractions;
 11
 12namespace Api.Works.Models;
 13
 14[Table("work_tags")]
 15[Index(nameof(OwnerId), nameof(TagNamespace), nameof(TagName), IsUnique = true)]
 16public class WorkTag : IDbEntityMetadata
 17{
 118    public static byte IdPostfix => (byte)IdPostfixes.WorkTag;
 19
 20    [Key]
 21    public Guid Id { get; set; }
 22    public int RowVersion { get; set; }
 23    public NodaTime.Instant MetadataAddedAt { get; set; }
 24    public NodaTime.Instant MetadataUpdatedAt { get; set; }
 25
 26    [MapperIgnore]
 27    [ForeignKey(nameof(Owner))]
 28    public Guid OwnerId { get; set; }
 29
 30    public required string[] TagNamespace { get; set; }
 31
 32    public required string TagName { get; set; }
 33
 34    // Navigation Properties
 135    public List<WorkTag_Work> WorkTagWorks { get; set; } = null!;
 136    public List<Work> Works { get; set; } = null!;
 137    public UserEF Owner { get; set; } = null!;
 38}
 39
 40[Table("work_tag___tag")]
 41[PrimaryKey(nameof(WorkId), nameof(WorkTagId))]
 42public class WorkTag_Work
 43{
 44    public WorkTag_Work(Guid workId, Guid tagId)
 45    {
 46        WorkId = workId;
 47        WorkTagId = tagId;
 48    }
 49
 50    public WorkTag_Work() { }
 51
 52    public Guid WorkId { get; set; }
 53    public Guid WorkTagId { get; set; }
 54
 55    // Navigation Properties
 56    public Work Work { get; set; } = null!;
 57    public WorkTag WorkTag { get; set; } = null!;
 58}
 59
 60public class WorkTagTypeConfiguration : IEntityTypeConfiguration<WorkTag>
 61{
 62    void IEntityTypeConfiguration<WorkTag>.Configure(EntityTypeBuilder<WorkTag> builder)
 63    {
 64        builder
 65            .HasMany(wt => wt.Works)
 66            .WithMany(w => w.WorkTags)
 67            .UsingEntity(typeof(WorkTag_Work));
 68    }
 69}

Methods/Properties

get_IdPostfix()
.ctor()