github Cysharp/MasterMemory 2.0.0
Ver 2.0.0

latest releases: 3.0.3, 3.0.2, 3.0.1...
5 years ago

2.0.0 is major jump up, some new features and has slightly breaking changes.
(some changes exists 12h after released, require to use 2.0.4)

New Features

Validator

New MemoryDatabase.Validate() method validates data is valid.
In default, check duplicate key in unique index table.
IValidatable<T> to make custom validator logic.

[MemoryTable("quest_master"), MessagePackObject(true)]
public class QuestMaster : IValidatable<QuestMaster>
{
    [PrimaryKey]
    public int QuestId { get; set; }
    public string Name { get; set; }
    public int RewardItemId { get; set; }
    public int Cost { get; set; }

    public void Validate(IValidator<QuestMaster> validator)
    {
        var itemMaster = validator.GetReferenceSet<ItemMaster>();

        // check external reference.
        itemMaster.Exists(x => x.RewardItemId, x => x.ItemId);

        // check value range
        validator.Validate(x => x.Cost >= 10);
        validator.Validate(x => x.Cost <= 50);

        // check all table data
        if (validator.CallOnce())
        {
            var quests = validator.GetTableSet();
            // check unique other than index keys
            quests.Unique(x => x.Name);
        }
    }
}

MetaMemoryDatabase
(2.0.4)
MemoryDatabase.GetMetaDatabase() to get meta data of database tables, properties and indexes.
You can use the data to make external data importer/exporter.

Breaking Changes

Unique key find methods(FindXxx) throws KeyNotFoundException when not found.
You can use new TryFindXxx instead.

Don't miss a new MasterMemory release

NewReleases is sending notifications on new releases.