VahidFarahmandian/Jinget
Jinget is a high-performance .NET 8.0 framework built with DDD + CQRS at its core. It's your Swiss Army knife for cutting through boilerplate code and supercharging productivity.
Some Improvements
📦 🔍 Expression Value Extractor
- Extract all constant and captured values from any `Expression<Func<T, bool>>` while preserving order.
✨ Features
- Extracts all values – Constants, captured variables, method results (`ToString`, `Convert.ToString`)
- Preserves order – Values appear in the same order as in the original expression
- Handles all operators – Works with `==`, `!=`, `Contains`, `StartsWith`, `EndsWith`, `Equals`
- Smart filtering – No compiler-generated garbage
📦 Example
- ```csharp
- string search = "hello";
- int page = 1;
- int size = 10;
- Expression<Func<Item, bool>> filter =
- x => x.Code == search
- || x.Name.Contains("peter")
- || x.Size == size.ToString()
- + 4 more
✨ 🚀 New Feature: `IDistributedCacheExtensions`
- We've eliminated the "I don't know the keys" problem. Now you can group, track, and batch-remove cache entries with zero headaches.
- ---
✨ What's New?
- | Method | What It Does | Why You Need It |
- |--------|--------------|-----------------|
- | `SaveKeySetAsync` | Stores a named set of related cache keys | Track all keys belonging to a feature/entity/user so you can find them later |
- | `RemoveAllAsync` | Deletes all cache entries whose keys belong to a saved key set | One call to nuke an entire feature's cache (e.g., all "jinget-*" keys) |
- | `RemoveRangeAsync` | Deletes a specific list of keys | Clean up exactly what you know, when you know it |
- ---
📦 Before This Release
- ```csharp
- // You had keys but no way to find them
- _cache.Remove("jinget-user-123"); // Works if you know the exact key
- _cache.Remove("jinget-user-456"); // But what about all 10,000 jinget keys?
- // Impossible without tracking them manually
📦 After This Release
- ```csharp
- // 1. Save related keys together
- await _cache.SaveKeySetAsync("jinget-users", new[]
- {
- "jinget-user-123",
- "jinget-user-456",
- "jinget-user-789"
- });
- + 5 more
Some improvements
📋 Changes
- `DateTimeUtility.ToSolarDate` now by default returns time part form datetime
- Now supports cancellation token.
📋 Changes
- Setting custom types for custom properties:
- Setting custom getter or setter to properties:
Some minor improvements
📋 Changes
- `StringCollectionValueObject` added: Value object used for storing `ICollection<String>` as Json column.
📋 Changes
- `FilterScoringGeneratorUtility` added: Utility class for generating scoring expressions from filter expressions. Converts boolean filter expressions into integer scoring expressions where higher scores indicate better matches.
- https://github.com/VahidFarahmandian/Jinget/issues/103
📋 Changes
- Trims leading/trailing whitespace
- Collapses multiple spaces, tabs, or newlines into a single space
📋 Changes
- Add support for `AppendAttributeToReadModelAttribute` and `AppendAttributeToPropertyAttribute`
- Using `AppendAttributeToReadModelAttribute` you can append custom attributes to final generated readonly model `class`.
- Using `AppendAttributeToPropertyAttribute` you can append custom attributes to final generated readonly model `property`.
Some Improvements
Some Improvements
Add support for `TemporalOptionModel` in `QueryOption`
Add support for nested generic statements like: ``` builder.Property(x => x.OtherAttibutes) .HasColumnType("nvarchar(max)") .HasConversion( v => JsonSerializer.Serialize(v, new JsonSerializerOptions()), v => JsonSerializer.Deserialize<ICollection<string>>(v, new JsonSerializerOptions()) ?? new List<string>() ); ``` in `ReadModelMappingConfigurationGenerator`
some bugs resolved
Some bugs resolved
Some improvements
Some improvements
Some bugs resolved
Some improvements
Some improvements
📦 What is included:
- Jinget.SourceGenerator
- Added Jinget.SourceGenerator
Some Improvements
Some improvements
Some Improvements
Some Improvements
Some Improvements
Some Improvements
