{{{
  exports({ to: app.configPath('cache.ts') })
}}}
import env from '#start/env'
{{#if driver === 'file'}}
import app from '@adonisjs/core/services/app'
{{/if}}
import { defineConfig, store, drivers } from '@adonisjs/cache'

const cacheConfig = defineConfig({
  default: 'default',

  stores: {
    memoryOnly: store().useL1Layer(drivers.memory()),

    default: store()
      .useL1Layer(drivers.memory())
    {{#if driver === 'database'}}
      .useL2Layer(drivers.database({
        connectionName: 'primary',
        autoCreateTable: false,
        tableName: 'cache',
      }))
    {{#elif driver === 'redis'}}
      .useL2Layer(drivers.redis({
        connectionName: 'main',
      }))
    {{#elif driver === 'file'}}
      .useL2Layer(drivers.file({
        directory: app.tmpPath('cache')
      }))
    {{#elif driver === 'dynamodb'}}
      .useL2Layer(drivers.dynamodb({
        table: { name: 'cache' },
        credentials: {
          accessKeyId: env.get('AWS_ACCESS_KEY_ID'),
          secretAccessKey: env.get('AWS_SECRET_ACCESS_KEY')
        },
        region: env.get('AWS_REGION'),
        endpoint: env.get('DYNAMODB_ENDPOINT')
      }))
    {{/if}}
  }
})

export default cacheConfig

declare module '@adonisjs/cache/types' {
  interface CacheStores extends InferStores<typeof cacheConfig> {}
}
