diff --git a/include/ircd/db.h b/include/ircd/db.h index 62ba740bf..716875437 100644 --- a/include/ircd/db.h +++ b/include/ircd/db.h @@ -110,6 +110,9 @@ enum class ircd::db::pos }; #include "db/delta.h" +#include "db/comparator.h" +#include "db/prefix.h" +#include "db/merge.h" #include "db/database.h" #include "db/opts.h" #include "db/column.h" @@ -120,11 +123,6 @@ enum class ircd::db::pos #include "db/where.h" #include "db/cursor.h" -namespace ircd::db -{ - std::string merge_operator(const string_view &, const std::pair &); -} - namespace ircd { using db::database; diff --git a/include/ircd/db/comparator.h b/include/ircd/db/comparator.h new file mode 100644 index 000000000..093f67d69 --- /dev/null +++ b/include/ircd/db/comparator.h @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2016 Charybdis Development Team + * Copyright (C) 2016 Jason Volk + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice is present in all copies. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + */ + +#pragma once +#define HAVE_IRCD_DB_COMPARATOR_H + +namespace ircd::db +{ + struct comparator; +} + +struct ircd::db::comparator +{ + std::string name; + std::function less; + std::function equal; +}; diff --git a/include/ircd/db/delta.h b/include/ircd/db/delta.h index 3aef824b0..3b1d7b998 100644 --- a/include/ircd/db/delta.h +++ b/include/ircd/db/delta.h @@ -35,17 +35,11 @@ namespace ircd::db SINGLE_DELETE, // (batch.SingleDelete) }; + struct delta; + // Indicates an op uses both a key and value for its operation. Some only use // a key name so an empty value argument in a delta is okay when false. bool value_required(const op &op); - - using merge_delta = std::pair; - using merge_closure = std::function; - using update_closure = std::function; - - struct delta; - struct comparator; - struct prefix_transform; } struct ircd::db::delta @@ -61,17 +55,3 @@ struct ircd::db::delta delta() = default; }; - -struct ircd::db::comparator -{ - std::string name; - std::function less; - std::function equal; -}; - -struct ircd::db::prefix_transform -{ - std::string name; - std::function has; - std::function get; -}; diff --git a/include/ircd/db/merge.h b/include/ircd/db/merge.h new file mode 100644 index 000000000..ba7cd151a --- /dev/null +++ b/include/ircd/db/merge.h @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2016 Charybdis Development Team + * Copyright (C) 2016 Jason Volk + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice is present in all copies. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + */ + +#pragma once +#define HAVE_IRCD_DB_MERGE_H + +namespace ircd::db +{ + using merge_delta = std::pair; + using merge_closure = std::function; + using update_closure = std::function; + + std::string merge_operator(const string_view &, const std::pair &); +} diff --git a/include/ircd/db/prefix.h b/include/ircd/db/prefix.h new file mode 100644 index 000000000..e0cdaeb41 --- /dev/null +++ b/include/ircd/db/prefix.h @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2016 Charybdis Development Team + * Copyright (C) 2016 Jason Volk + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice is present in all copies. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + */ + +#pragma once +#define HAVE_IRCD_DB_PREFIX_H + +namespace ircd::db +{ + struct prefix_transform; +} + +struct ircd::db::prefix_transform +{ + std::string name; + std::function has; + std::function get; +};