Files
supabase/apps/studio/components/interfaces/Storage/Storage.constants.ts
Danny White bf3f26d0a6 feat(studio): list existing analytics buckets (#39500)
* specialized dialog for analytics (and vector) bucket creation

* handle missing wrapper extension and iceberg wrapper integration

* bucket creation improvements

* extension and integration checks

* dialog header consistency

* simplify bucket dialog creation button trigger

* fix subtitle ternary

* example bucket without dynamic route

* create dynamic segment

* fancy connection table

* improve bucket page

* connection table polish

* polish

* delete bucket modal

* improve missing installations design

* new table modal

* fix copy icon

* copy all env button placeholder

* list all analytics buckets

* specialised bucket modal

* shared installer hooks and components

* make iceberg wrapper not dependent on wrapper extension

There are cases where the Iceberg Wrapper can be installed but the Wrapper extension has since been removed

* better admonition copywriting

* todo

* remove later features

* more removal of later work

* remove old comment

* remove unused content

* Nits and hook up create analytics bucket logic

* Nit

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2025-10-15 11:48:14 +11:00

93 lines
2.3 KiB
TypeScript

import { DOCS_URL } from 'lib/constants'
// Original storage constants
export enum URL_EXPIRY_DURATION {
WEEK = 60 * 60 * 24 * 7,
MONTH = 60 * 60 * 24 * 30,
YEAR = 60 * 60 * 24 * 365,
}
export enum STORAGE_VIEWS {
COLUMNS = 'COLUMNS',
LIST = 'LIST',
}
export enum STORAGE_SORT_BY {
NAME = 'name',
UPDATED_AT = 'updated_at',
CREATED_AT = 'created_at',
LAST_ACCESSED_AT = 'last_accessed_at',
}
export enum STORAGE_BUCKET_SORT {
ALPHABETICAL = 'alphabetical',
CREATED_AT = 'created_at',
}
export enum STORAGE_SORT_BY_ORDER {
ASC = 'asc',
DESC = 'desc',
}
export enum STORAGE_ROW_TYPES {
BUCKET = 'BUCKET',
FILE = 'FILE',
FOLDER = 'FOLDER',
}
export enum STORAGE_ROW_STATUS {
READY = 'READY',
LOADING = 'LOADING',
EDITING = 'EDITING',
}
export const STORAGE_CLIENT_LIBRARY_MAPPINGS = {
upload: ['INSERT'],
download: ['SELECT'],
list: ['SELECT'],
update: ['SELECT', 'UPDATE'],
move: ['SELECT', 'UPDATE'],
copy: ['SELECT', 'INSERT'],
remove: ['SELECT', 'DELETE'],
createSignedUrl: ['SELECT'],
createSignedUrls: ['SELECT'],
getPublicUrl: [],
}
export const CONTEXT_MENU_KEYS = {
STORAGE_COLUMN: 'STORAGE_COLUMN',
STORAGE_ITEM: 'STORAGE_ITEM',
STORAGE_FOLDER: 'STORAGE_FOLDER',
}
// New bucket types configuration
export const BUCKET_TYPES = {
files: {
displayName: 'Files',
singularName: 'file',
article: 'a',
description: 'General file storage for most types of digital content.',
valueProp: 'Store images, videos, documents, and any other file type.',
docsUrl: `${DOCS_URL}/guides/storage/buckets/fundamentals`,
},
analytics: {
displayName: 'Analytics',
singularName: 'analytics',
article: 'an',
description: 'Purpose-built storage for analytical workloads.',
valueProp: 'Store large datasets for analytics and reporting.',
docsUrl: `${DOCS_URL}/guides/storage/analytics/introduction`,
},
vectors: {
displayName: 'Vectors',
singularName: 'vector',
article: 'a',
description: 'Purpose-built storage for vector data.',
valueProp: 'Store, index, and query your vector embeddings at scale.',
docsUrl: `${DOCS_URL}/guides/storage/vectors`,
},
}
export const BUCKET_TYPE_KEYS = Object.keys(BUCKET_TYPES) as Array<keyof typeof BUCKET_TYPES>
export const DEFAULT_BUCKET_TYPE: keyof typeof BUCKET_TYPES = 'files'