PreferencesStorageConfig.java

package com.taxonomy.preferences;

import com.taxonomy.preferences.storage.PreferencesGitRepository;
import org.hibernate.SessionFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.taxonomy.dsl.storage.jgit.HibernateRepository;

/**
 * Spring configuration for the preferences Git storage layer.
 *
 * <p>Wires a {@link PreferencesGitRepository} backed by the existing HSQLDB
 * {@link SessionFactory} via the {@code sandbox-jgit-storage-hibernate} pattern.
 * The preferences repository uses project name {@code "taxonomy-preferences"}, which
 * is <strong>separate</strong> from the Architecture DSL repository
 * ({@code "taxonomy-dsl"}). This ensures preferences history is completely
 * decoupled from DSL history.
 */
@Configuration
public class PreferencesStorageConfig {

    private static final Logger log = LoggerFactory.getLogger(PreferencesStorageConfig.class);

    @Bean
    public PreferencesGitRepository preferencesGitRepository(SessionFactory sessionFactory) {
        log.info("Creating PreferencesGitRepository (HibernateRepository → database-backed)");
        return new PreferencesGitRepository(sessionFactory);
    }
}