{"id":24084501,"url":"https://github.com/techliam/packdb.filesystem","last_synced_at":"2026-05-15T02:46:35.342Z","repository":{"id":53503245,"uuid":"346461073","full_name":"TechLiam/PackDB.FileSystem","owner":"TechLiam","description":"PackDB was created to provide a .Net implementation of a data access layer that uses MessagePack as the data Serializer on the backend. The solution was built with extensibility in mind and should allow for other storage systems to be used.","archived":false,"fork":false,"pushed_at":"2021-08-04T19:57:06.000Z","size":156,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-10T00:38:01.723Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TechLiam.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null}},"created_at":"2021-03-10T18:58:43.000Z","updated_at":"2021-08-04T19:55:51.000Z","dependencies_parsed_at":"2022-08-31T16:22:04.177Z","dependency_job_id":null,"html_url":"https://github.com/TechLiam/PackDB.FileSystem","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TechLiam%2FPackDB.FileSystem","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TechLiam%2FPackDB.FileSystem/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TechLiam%2FPackDB.FileSystem/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TechLiam%2FPackDB.FileSystem/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TechLiam","download_url":"https://codeload.github.com/TechLiam/PackDB.FileSystem/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240964489,"owners_count":19885752,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-10T00:37:26.959Z","updated_at":"2026-05-15T02:46:35.076Z","avatar_url":"https://github.com/TechLiam.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PackDB File System [![Built and Tested](https://github.com/TechLiam/PackDB.FileSystem/actions/workflows/BuildAndTestAction.yml/badge.svg)](https://github.com/TechLiam/PackDB.FileSystem/actions/workflows/BuildAndTestAction.yml) [![CodeQL](https://github.com/TechLiam/PackDB.FileSystem/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/TechLiam/PackDB.FileSystem/actions/workflows/codeql-analysis.yml)\n\nPackDB File System is an extention on [PackDB Core](https://github.com/TechLiam/PackDB.Core) and added in the an implmentation that allows for data to be stored in a file system.\n\nThis project allows for data to be stored and optionally allows for data to be audited when created, update, deleted and restored. As well as allowing for indexing of the data for faster look ups of data in large data sets.\n\nThe data is stored with the file extention of ```.data``` and a file name of the id of the data.\nThe audit data is stored with the file extention of ```.audit``` and a file name of the id of the data matching the data file name.\nThe indexs are stored with the file extention of ```.index``` and a file name of the property name of the property used to index the data.\n\nFor each type of data a folder is created in a top level folder so an example of a database that stores school data would look like this:\n- Data\n  - Student\n    - 1.data\n    - 1.audit\n    - 2.data\n    - 2.audit\n    - 3.data\n    - 3.audit\n    - Name.index\n    - Age.index\n  - Teachers\n    - 1.data\n    - 1.audit\n    - 2.data\n    - 2.audit\n  - Classes\n    - 1.data\n    - 2.data\n  - StudentToClasses\n    - 1.data\n    - 2.data\n\nIn the above example you can see how data is stored the top level folder can be configured.\n\n# Get started\nTo get started is simple install the NuGet package and then create a data manager using the following:\n``` csharp\nDataManagerFactory.CreateFileSystemDataManager()\n```\nThis default data manager is all setup and should work out of the box.\n\n# What do my data models need\nWhen creating data models such as Studen from the example above you need to inherit from the \n``` csharp \nDataEntity \n```\nclass this will give your data an Id property is a key of 1\n\n## What is a key\nA key is the way that MessagePack identified what property to put data back into when loading it back from the disk each property to be stored needs a key.\nTo add a key to a property you can simple add an attriute of\n``` csharp\n[Key(#)]\n```\nAs you need to inherit from DataEntity you will need to start your keys at 2\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechliam%2Fpackdb.filesystem","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftechliam%2Fpackdb.filesystem","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechliam%2Fpackdb.filesystem/lists"}