1/*2Maddy Mail Server - Composable all-in-one email server.3Copyright © 2019-2020 Max Mazurov <fox.cpp@disroot.org>, Maddy Mail Server contributors45This program is free software: you can redistribute it and/or modify6it under the terms of the GNU General Public License as published by7the Free Software Foundation, either version 3 of the License, or8(at your option) any later version.910This program is distributed in the hope that it will be useful,11but WITHOUT ANY WARRANTY; without even the implied warranty of12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the13GNU General Public License for more details.1415You should have received a copy of the GNU General Public License16along with this program. If not, see <https://www.gnu.org/licenses/>.17*/1819package module2021import "context"2223// Table is the interface implemented by module that implementation string-to-string24// translation.25//26// Modules implementing this interface should be registered with prefix27// "table." in name.28type Table interface {29 Lookup(ctx context.Context, s string) (string, bool, error)30}3132// MultiTable is the interface that module can implement in addition to Table33// if it can provide multiple values as a lookup result.34type MultiTable interface {35 LookupMulti(ctx context.Context, s string) ([]string, error)36}3738type MutableTable interface {39 Table40 Keys() ([]string, error)41 RemoveKey(k string) error42 SetKey(k, v string) error43}