valor-chave-db-csharp
Pacote leve para gerenciar, carregar, atualizar e salvar banco de dados de tipo de valor-chave de forma rápida e fácil
Os exemplos de casos de uso deste pacote são o carregamento de arquivo de configuração, arquivo de idioma e configuração de preferência em um aplicativo. Mais casos de uso podem ser vistos aqui.
O pacote não faz nenhuma operação de entrada e saída, pois existem várias maneiras de ler e gravar no arquivo e os métodos têm seus pontos fortes e fracos, portanto o desenvolvedor precisa encontrar a maneira eficiente de carregar e salvar localmente.
O nome do pacote é KeyValueDB.
Usando o Gerenciador de Pacotes:
Install-Package KeyValueDB -Version 1.2.0
Usando a CLI do .NET:
dotnet add package KeyValueDB --version 1.2.0
Usando a referência do Pakage:
< PackageReference Include = " KeyValueDB " Version = " 1.2.0 " />
Usando Pacote CLI:
paket add KeyValueDB --version 1.2.0
O exemplo a seguir carrega, atualiza, lê e remove um objeto de valor-chave simples
using System ;
using Io . Github . Thecarisma ;
namespace Sample
{
class Test
{
public static void Main ( string [ ] args )
{
//initialize the key-value
KeyValueDB keyValueDB = new KeyValueDB ( "Greet=Hello World,Project=KeyValueDB" , true , '=' , ',' , false ) ;
//get an object
Console . WriteLine ( keyValueDB . Get ( "Greet" ) ) ;
//remove an object
keyValueDB . Remove ( "Greet" ) ;
//add an object
keyValueDB . Add ( "What" , "i don't know what to write here" ) ;
//print all the objects
foreach ( var kvo in keyValueDB ) {
Console . WriteLine ( kvo ) ;
}
}
}
}
kvp - Key Value Pair
kvdb - Key value Database
pss - Possibly
kvo - Key Value Object
Apenas o tipo string é usado como chave e valor do kvo. Um kvo pode ser usado para substituir ou definir o valor de uma chave.
Você pode usar o pacote para atualizar e criar um banco de dados de valores-chave existente. Esta biblioteca não lê o banco de dados de um arquivo, o que significa que você precisa encontrar uma maneira de ler uma string do arquivo.
Crie um novo keyValueDB. O separador padrão entre a chave e o valor é =
e o delimitador entre o kvp é n
(nova linha).
KeyValueDB keyValueDB = new KeyValueDB ( ) ;
Para carregar KeyValueDB existente
KeyValueDB keyValueDB = new KeyValueDB (
"Greet=Hello World,Project=KeyValueDB" , //pss read string from file
true , //case sensitive is true
'=' , //the seperator from key and value
',' , //the delimeter for the key-value-pair
false //error tolerance if true no exception is thrown
) ;
O único tipo aceito que pode ser inserido é KeyValueObject
e String
válidos. O método Add
pode ser usado para adicionar um novo kvp ao objeto.
Adicione um kvp com chave e valor
keyValueDB . Add ( "Greet" , "Hello World" ) ;
Adicione um kvp usando a classe KeyValueObject
.
KeyValueObject keyValueObject = new KeyValueObject ( "Greet" , "Hello World" ) ;
keyValueDB . Add ( keyValueObject ) ;
Existem várias maneiras de encontrar e obter um valor do objeto kvdb. O valor ou KeyValueObject pode ser obtido usando os métodos abaixo
Você pode obter o kvo usando a chave ou o índice. Se o kvo correspondente não for encontrado, um kvo vazio será adicionado ao banco de dados e então retornado, mas não no caso quando solicitado com o índice inteiro. Se um kvo de fallback for enviado como segundo parâmetro, quando a solicitação kvo não for encontrada, o segundo parâmetro de fallback será adicionado ao kvdb e então retornado.
Obtenha o kvo usando seu índice inteiro
keyValueDB . GetKeyValueObject ( 0 ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Greet,Value=Hello World
Obtenha o kvo usando a chave
keyValueDB . GetKeyValueObject ( "Greet" ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Greet,Value=Hello World
Obtenha o kvo usando a chave com kvo substituto
KeyValueObject keyValueObject = new KeyValueObject ( "Name" , "Adewale Azeez" ) ;
keyValueDB . GetKeyValueObject ( "Name" , keyValueObject ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Name,Value=Adewale Azeez
Obtenha um kvo verificando o kvdb para o objeto kvo que contém uma parte da chave. Se um kvo de fallback for enviado como segundo parâmetro, quando a solicitação kvo não for encontrada, o segundo parâmetro de fallback será adicionado ao kvdb e então retornado.
Obtenha um kvo semelhante usando sua parte principal
keyValueDB . GetLikeKeyValueObject ( "eet" ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Greet,Value=Hello World
Obtenha um kvo semelhante usando sua parte principal com kvo substituto
KeyValueObject keyValueObject = new KeyValueObject ( "Name" , "Adewale Azeez" ) ;
keyValueDB . getKeyValueObject ( "Nam" , keyValueObject ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Name,Value=Adewale Azeez
Você pode obter um valor kvdb usando a chave ou o índice. Se o valor correspondente não for encontrado, uma string vazia será adicionada ao banco de dados e então retornada, mas não no caso quando solicitado com o índice inteiro.
Se um kvo de fallback for enviado como segundo parâmetro, quando a chave de solicitação não for encontrada, o segundo parâmetro de fallback será adicionado ao kvdb e o valor será retornado. Se um valor de string for enviado como o segundo valor, ele será retornado se a chave não for encontrada no kvdb.
Obtenha um valor usando seu índice inteiro
keyValueDB . Get ( 0 ) ;
//"Hello World"
Obtenha o valor usando a chave
keyValueDB . Get ( "Greet" ) ;
//"Hello World"
Obtenha o kvo usando a chave com valor substituto
keyValueDB . Get ( "Licence" , "The MIT Licence" ) ;
//"The MIT Licence"
Obtenha o kvo usando a chave com kvo substituto
KeyValueObject keyValueObject = new KeyValueObject ( "Licence" , "The MIT Licence" ) ;
keyValueDB . Get ( "Name" , keyValueObject ) ;
//"The MIT Licence"
Obtenha um valor verificando o kvdb para o objeto kvo que contém uma parte da chave.
Se um kvo de fallback for enviado como segundo parâmetro, quando a chave de solicitação não for encontrada, o segundo parâmetro de fallback será adicionado ao kvdb e o valor será retornado.
Obtenha um valor usando a parte principal
keyValueDB . GetLike ( "eet" ) ;
//"Hello World"
Obtenha um valor usando a parte principal com kvo substituto
KeyValueObject keyValueObject = new KeyValueObject ( "Licence" , "The MIT Licence" ) ;
keyValueDB . GetLike ( "Li" , keyValueObject ) ;
//"The MIT Licence"
Existem várias maneiras de atualizar um kvp no kvdb, o valor pode ser alterado diretamente ou definido como um novo KeyValueObject. Se você tentar definir um kvo que não existe no kvdb usando sua chave, ele será adicionado ao kvdb.
O método Set
é usado para alterar o valor do kvo usando o índice do kvo ou uma chave kvo.
Defina um valor kvo usando seu índice
keyValueDB . Set ( 0 , "Hello World from thecarisma" ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Greet,Value=Hello World from thecarisma
Defina um valor kvo usando a chave
keyValueDB . Set ( "Greet" , "Hello World from thecarisma" ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Greet,Value=Hello World from thecarisma
Altere completamente um KeyValueObject no kvdb usando seu índice ou sua chave. O kvo é completamente substituído, o que significa que campos exclusivos, como o código hash do kvo, são alterados. Quando o kvo é definido usando a chave, se o kvo correspondente não existir, ele é adicionado ao kvdb. Observe que este método altera completamente o kvo para que possa ser usado para substituir um kvo.
Defina um kvo usando seu índice
KeyValueObject keyValueObject = new KeyValueObject ( "Licence" , "The MIT Licence" ) ;
keyValueDB . SetKeyValueObject ( 0 , keyValueObject ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Licence,Value=The MIT Licence
Defina um valor kvo usando a chave
KeyValueObject keyValueObject = new KeyValueObject ( "Licence" , "The MIT Licence" ) ;
keyValueDB . SetKeyValueObject ( "Greet" , keyValueObject ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Licence,Value=The MIT Licence
Um novo kvp pode ser inserido invocando o método Add
. O kvp pode ser adicionado usando sua chave e valor ou adicionando diretamente o KeyValueObject ao kvdb.
Adicione um novo kvp usando a chave e o valor
keyValueDB . Add ( "Key" , "This is the value" ) ;
Adicione um novo kvp usando um novo KeyValueObject
KeyValueObject keyValueObject = new KeyValueObject ( "Key" , "This is the value" ) ;
keyValueDB . Add ( keyValueObject ) ;
Remova um kvp completamente do kvdb usando a chave do índice inteiro. O kvp removido é retornado do método. Se o índice não existir, ocorrerá um erro fora do limite e se um kvo com a chave não estiver presente, nada será feito, mas um kvo vazio será retornado.
Remova um kvp usando índice inteiro
keyValueDB . Remove ( 0 ) ;
//removes the first kvp in the kvdb
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Greet,Value=Hello World
Remova um kvp usando a chave
keyValueDB . Remove ( "Greet" ) ;
//removes the first kvp in the kvdb
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Greet,Value=Hello World
Obtenha o tamanho do kvo no kvdb.
keyValueDB . Size ( ) ;
//4
Remova todos os elementos e kvo do kvdb
keyValueDB . Clear ( ) ;
//keyValueDB.Size() = 0
Verifique se o kvdb contém algum kvo.
keyValueDB . IsEmpty ( ) ;
//False
A coleção kvp kvdb pode ser inspecionada como uma string usando o método ToString
. O valor retornado pode ser salvo localmente gravando em um armazenamento persistente ou em um arquivo de texto simples. A saída do método ToString
é determinada pelo kvos, pelo separador e pelo delimitador.
keyValueDB . ToString ( ) ;
// "Greet=Hello World,Project=KeyValueDB,Project=KeyValueDB,Licence=The MIT Licence"
O objeto KeyValueDB pode ser iterado nativamente usando a expressão de loop foreach..in
.
foreach ( var kvo in keyValueDB ) {
//operate on the KeyValueObject
}
A classe KeyValueObject contém o campo chave e valor e os campos setter e getter. O KeyValueObject é o principal tipo interno usado na classe KeyValueDB.
No KeyValueDB o par chave-valor é armazenado no tipo List
, toda pesquisa, atualização e remoção é feita nos keyValueObjects
da classe. A string enviada como primeiro parâmetro é analisada em um valor de chave válido usando os campos separador e delimitador. O método ToString
também analisa o conteúdo keyValueObjects
em uma string válida em relação ao separador e delimitador.
Antes de começar a contribuir, leia o guia de contribuição em CONTRIBUTING GUIDE
Você pode abrir o problema ou registrar uma solicitação que resolva apenas problemas nesta implementação neste repositório. Se o problema abordar os conceitos do pacote, crie um problema ou rfc aqui
Você pode apoiar alguns membros desta comunidade, pois eles causam grande impacto no desenvolvimento de pessoas para iniciar a engenharia de software.
Direitos autorais da licença do MIT (c) 2020 Adewale Azeez - keyvaluedb