// This file is part of the happyDomain (R) project. // Copyright (c) 2020-2024 happyDomain // Authors: Pierre-Olivier Mercier, et al. // // This program is offered under a commercial and under the AGPL license. // For commercial licensing, contact us at . // // For AGPL licensing: // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . package storage // import "git.happydns.org/happyDomain/internal/storage" import ( "git.happydns.org/happyDomain/internal/usecase/authuser" "git.happydns.org/happyDomain/internal/usecase/domain" "git.happydns.org/happyDomain/internal/usecase/domain_log" "git.happydns.org/happyDomain/internal/usecase/insight" "git.happydns.org/happyDomain/internal/usecase/provider" "git.happydns.org/happyDomain/internal/usecase/session" "git.happydns.org/happyDomain/internal/usecase/user" "git.happydns.org/happyDomain/internal/usecase/zone" "git.happydns.org/happyDomain/model" ) type ProviderAndDomainStorage interface { provider.ProviderStorage domain.DomainStorage } type Storage interface { authuser.AuthUserStorage domain.DomainStorage domainlog.DomainLogStorage insight.InsightStorage provider.ProviderStorage session.SessionStorage user.UserStorage zone.ZoneStorage // SchemaVersion returns the version of the migration currently in use. SchemaVersion() int // DoMigration is the first function called. MigrateSchema() error // Close shutdown the connection with the database and releases all structure. Close() error } type Iterator interface { Release() Next() bool Valid() bool Key() string Value() any Err() error } type KVStorage interface { Close() error DecodeData(i any, v any) error Has(key string) (bool, error) Get(key string, v any) error Put(key string, v any) error FindIdentifierKey(prefix string) (key string, id happydns.Identifier, err error) Delete(key string) error Search(prefix string) Iterator }