clave-valor-db-csharp
Paquete liviano para administrar, cargar, actualizar y guardar rápida y fácilmente una base de datos de tipo clave-valor
Los casos de uso de muestra de este paquete son la carga de archivos de configuración, archivos de idioma y configuración de preferencias en una aplicación. Se pueden ver más casos de uso aquí.
El paquete no realiza ninguna operación de entrada y salida, ya que hay varias formas de leer y escribir en un archivo y los métodos tienen sus puntos fuertes y débiles, por lo que el desarrollador debe encontrar la manera eficiente de cargar y guardar localmente.
El nombre del paquete es KeyValueDB.
Usando el Administrador de paquetes:
Install-Package KeyValueDB -Version 1.2.0
Usando la CLI de .NET:
dotnet add package KeyValueDB --version 1.2.0
Usando la referencia del paquete:
< PackageReference Include = " KeyValueDB " Version = " 1.2.0 " />
Usando CLI de paquetes:
paket add KeyValueDB --version 1.2.0
El siguiente ejemplo carga, actualiza, lee y elimina un objeto de valor clave simple
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
Solo se utiliza el tipo de cadena como clave y valor del kvo. Se puede utilizar un kvo para reemplazar o establecer el valor de una clave.
Puede utilizar el paquete para actualizar y crear una base de datos de valores clave existente. Esta biblioteca no lee la base de datos de un archivo, lo que significa que debe encontrar una manera de leer una cadena del archivo.
Cree un nuevo keyValueDB. El separador predeterminado entre la clave y el valor es =
y el delimitador entre el kvp es n
(nueva línea).
KeyValueDB keyValueDB = new KeyValueDB ( ) ;
Para cargar 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
) ;
El único tipo aceptado que se puede insertar es un KeyValueObject
y String
válidos. El método Add
se puede utilizar para agregar un nuevo kvp al objeto.
Agregue un kvp con su clave y valor.
keyValueDB . Add ( "Greet" , "Hello World" ) ;
Agregue un kvp usando la clase KeyValueObject
.
KeyValueObject keyValueObject = new KeyValueObject ( "Greet" , "Hello World" ) ;
keyValueDB . Add ( keyValueObject ) ;
Hay varias formas de buscar y obtener un valor del objeto kvdb. El valor o KeyValueObject se puede obtener utilizando los métodos siguientes
Puede obtener el kvo usando la clave o el índice. Si no se encuentra el kvo correspondiente, se agrega un kvo vacío a la base de datos y luego se devuelve, pero no en el caso de que se solicite con el índice entero. Si se envía un kvo de reserva como segundo parámetro, cuando no se encuentra la solicitud kvo, el segundo parámetro de reserva se agrega al kvdb y luego se devuelve.
Obtenga el kvo usando su índice entero
keyValueDB . GetKeyValueObject ( 0 ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Greet,Value=Hello World
Obtener el kvo usando su clave
keyValueDB . GetKeyValueObject ( "Greet" ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Greet,Value=Hello World
Obtenga el kvo usando su clave con kvo alternativo
KeyValueObject keyValueObject = new KeyValueObject ( "Name" , "Adewale Azeez" ) ;
keyValueDB . GetKeyValueObject ( "Name" , keyValueObject ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Name,Value=Adewale Azeez
Obtenga un kvo comprobando en kvdb el objeto kvo que contiene una parte de la clave. Si se envía un kvo de reserva como segundo parámetro, cuando no se encuentra la solicitud kvo, el segundo parámetro de reserva se agrega al kvdb y luego se devuelve.
Obtenga un kvo similar usando su parte clave
keyValueDB . GetLikeKeyValueObject ( "eet" ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Greet,Value=Hello World
Obtenga un kvo similar usando su parte clave con kvo alternativo
KeyValueObject keyValueObject = new KeyValueObject ( "Name" , "Adewale Azeez" ) ;
keyValueDB . getKeyValueObject ( "Nam" , keyValueObject ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Name,Value=Adewale Azeez
Puede obtener un valor de kvdb utilizando la clave o el índice. Si no se encuentra el valor correspondiente, se agrega una cadena vacía a la base de datos y luego se devuelve, pero no en el caso de que se solicite con el índice entero.
Si se envía un kvo de reserva como segundo parámetro, cuando no se encuentra la clave de solicitud, el segundo parámetro de reserva se agrega al kvdb y luego se devuelve el valor. Si se envía un valor de cadena como segundo valor, se devuelve si la clave no se encuentra en el kvdb.
Obtener un valor usando su índice entero
keyValueDB . Get ( 0 ) ;
//"Hello World"
Obtenga el valor usando su clave
keyValueDB . Get ( "Greet" ) ;
//"Hello World"
Obtenga el kvo usando su clave con valor alternativo
keyValueDB . Get ( "Licence" , "The MIT Licence" ) ;
//"The MIT Licence"
Obtenga el kvo usando su clave con kvo alternativo
KeyValueObject keyValueObject = new KeyValueObject ( "Licence" , "The MIT Licence" ) ;
keyValueDB . Get ( "Name" , keyValueObject ) ;
//"The MIT Licence"
Obtenga un valor comprobando en kvdb el objeto kvo que contiene una parte de la clave.
Si se envía un kvo de reserva como segundo parámetro, cuando no se encuentra la clave de solicitud, el segundo parámetro de reserva se agrega al kvdb y luego se devuelve el valor.
Obtenga un valor usando su parte clave
keyValueDB . GetLike ( "eet" ) ;
//"Hello World"
Obtenga un valor usando su parte clave con kvo alternativo
KeyValueObject keyValueObject = new KeyValueObject ( "Licence" , "The MIT Licence" ) ;
keyValueDB . GetLike ( "Li" , keyValueObject ) ;
//"The MIT Licence"
Hay varias formas de actualizar un kvp en kvdb, el valor se puede cambiar directamente o establecer en un nuevo KeyValueObject. Si intenta configurar un kvo que no existe en el kvdb usando su clave, se agrega al kvdb.
El método Set
se utiliza para cambiar el valor del kvo usando el índice del kvo o una clave kvo.
Establecer un valor kvo usando su índice
keyValueDB . Set ( 0 , "Hello World from thecarisma" ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Greet,Value=Hello World from thecarisma
Establezca un valor kvo usando la tecla it
keyValueDB . Set ( "Greet" , "Hello World from thecarisma" ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Greet,Value=Hello World from thecarisma
Cambie completamente un KeyValueObject en kvdb usando su índice o su clave. El kvo se reemplaza por completo, lo que significa que cambian campos únicos como el código hash del kvo. Cuando el kvo se configura usando su clave, si el kvo correspondiente no existe, se agrega al kvdb. Tenga en cuenta que este método cambia completamente el kvo por lo que puede usarse para reemplazar un kvo.
Establecer un kvo usándolo índice
KeyValueObject keyValueObject = new KeyValueObject ( "Licence" , "The MIT Licence" ) ;
keyValueDB . SetKeyValueObject ( 0 , keyValueObject ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Licence,Value=The MIT Licence
Establezca un valor kvo usando la tecla it
KeyValueObject keyValueObject = new KeyValueObject ( "Licence" , "The MIT Licence" ) ;
keyValueDB . SetKeyValueObject ( "Greet" , keyValueObject ) ;
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Licence,Value=The MIT Licence
Se puede insertar un nuevo kvp invocando el método Add
. El kvp se puede agregar usando su clave y valor o agregando directamente KeyValueObject al kvdb.
Agregue un nuevo kvp usando la clave y el valor
keyValueDB . Add ( "Key" , "This is the value" ) ;
Agregue un nuevo kvp usando un nuevo KeyValueObject
KeyValueObject keyValueObject = new KeyValueObject ( "Key" , "This is the value" ) ;
keyValueDB . Add ( keyValueObject ) ;
Elimine un kvp completamente del kvdb usando la clave it del índice entero. El kvp que se eliminó se devuelve del método. Si el índice no existe, se produce un error fuera de límite y si un kvo con la clave no está presente, no se hace nada, pero se devuelve un kvo vacío.
Eliminar un kvp usando un índice entero
keyValueDB . Remove ( 0 ) ;
//removes the first kvp in the kvdb
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Greet,Value=Hello World
Eliminar un kvp usando su clave
keyValueDB . Remove ( "Greet" ) ;
//removes the first kvp in the kvdb
//Io.Github.Thecarisma.KeyValueObject@55915408:Key=Greet,Value=Hello World
Obtenga el tamaño del kvo en el kvdb.
keyValueDB . Size ( ) ;
//4
Elimina todos los elementos y kvo del kvdb.
keyValueDB . Clear ( ) ;
//keyValueDB.Size() = 0
Compruebe si el kvdb contiene algún kvo.
keyValueDB . IsEmpty ( ) ;
//False
La colección kvp kvdb se puede inspeccionar como una cadena utilizando el método ToString
. El valor devuelto se puede guardar localmente escribiendo en un almacenamiento persistente o en un archivo de texto sin formato. La salida del método ToString
está determinada por los kvos, el separador y el delimitador.
keyValueDB . ToString ( ) ;
// "Greet=Hello World,Project=KeyValueDB,Project=KeyValueDB,Licence=The MIT Licence"
El objeto KeyValueDB se puede iterar de forma nativa utilizando la expresión de bucle foreach..in
.
foreach ( var kvo in keyValueDB ) {
//operate on the KeyValueObject
}
La clase KeyValueObject contiene el campo clave y valor y los campos definidor y captador. KeyValueObject es el tipo interno principal utilizado en la clase KeyValueDB.
En KeyValueDB, el par clave-valor se almacena en el tipo List
, toda la búsqueda, actualización y eliminación se realiza en los keyValueObjects
de la clase. La cadena enviada como primer parámetro si se analiza en un valor de clave válido utilizando los campos separador y delimitador. El método ToString
también analiza el contenido keyValueObjects
en una cadena válida con respecto al separador y el delimitador.
Antes de comenzar a contribuir, lea la guía de contribución en GUÍA DE CONTRIBUCIÓN.
Puede abrir un problema o presentar una solicitud que solo aborde problemas en esta implementación en este repositorio. Si el problema aborda los conceptos del paquete, cree un problema o rfc aquí.
Puede apoyar a algunos miembros de esta comunidad, ya que tienen un gran impacto en el desarrollo de las personas para iniciarse en la ingeniería de software.
Licencia MIT Copyright (c) 2020 Adewale Azeez - keyvaluedb