chore: setup supabase cli and pull baseline migration
This commit is contained in:
parent
1724a80426
commit
72a85b0ff6
5
.gitignore
vendored
5
.gitignore
vendored
|
|
@ -37,3 +37,8 @@ Thumbs.db
|
|||
# Temporary directories
|
||||
temp_git/
|
||||
scratch/
|
||||
|
||||
# Supabase CLI binaries
|
||||
supabase.exe
|
||||
supabase-go.exe
|
||||
|
||||
|
|
|
|||
|
|
@ -26,7 +26,8 @@
|
|||
"react-native-web": "~0.19.13"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.25.2"
|
||||
"@babel/core": "^7.25.2",
|
||||
"supabase": "^2.106.0"
|
||||
},
|
||||
"private": true
|
||||
}
|
||||
|
|
|
|||
8
supabase/.gitignore
vendored
Normal file
8
supabase/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
# Supabase
|
||||
.branches
|
||||
.temp
|
||||
|
||||
# dotenvx
|
||||
.env.keys
|
||||
.env.local
|
||||
.env.*.local
|
||||
308
supabase/config.toml
Normal file
308
supabase/config.toml
Normal file
|
|
@ -0,0 +1,308 @@
|
|||
# For detailed configuration reference documentation, visit:
|
||||
# https://supabase.com/docs/guides/local-development/cli/config
|
||||
# A string used to distinguish different Supabase projects on the same host. Defaults to the
|
||||
# working directory name when running `supabase init`.
|
||||
project_id = "SolorPower"
|
||||
|
||||
[api]
|
||||
enabled = true
|
||||
# Port to use for the API URL.
|
||||
port = 54321
|
||||
# Schemas to expose in your API. Tables, views and stored procedures in this schema will get API
|
||||
# endpoints. `public` and `graphql_public` schemas are included by default.
|
||||
schemas = ["public", "graphql_public"]
|
||||
# Extra schemas to add to the search_path of every request.
|
||||
extra_search_path = ["public", "extensions"]
|
||||
# The maximum number of rows returns from a view, table, or stored procedure. Limits payload size
|
||||
# for accidental or malicious requests.
|
||||
max_rows = 1000
|
||||
|
||||
[api.tls]
|
||||
# Enable HTTPS endpoints locally using a self-signed certificate.
|
||||
enabled = false
|
||||
|
||||
[db]
|
||||
# Port to use for the local database URL.
|
||||
port = 54322
|
||||
# Port used by db diff command to initialize the shadow database.
|
||||
shadow_port = 54320
|
||||
# The database major version to use. This has to be the same as your remote database's. Run `SHOW
|
||||
# server_version;` on the remote database to check.
|
||||
major_version = 15
|
||||
|
||||
[db.pooler]
|
||||
enabled = false
|
||||
# Port to use for the local connection pooler.
|
||||
port = 54329
|
||||
# Specifies when a server connection can be reused by other clients.
|
||||
# Configure one of the supported pooler modes: `transaction`, `session`.
|
||||
pool_mode = "transaction"
|
||||
# How many server connections to allow per user/database pair.
|
||||
default_pool_size = 20
|
||||
# Maximum number of client connections allowed.
|
||||
max_client_conn = 100
|
||||
|
||||
# [db.vault]
|
||||
# secret_key = "env(SECRET_VALUE)"
|
||||
|
||||
[db.migrations]
|
||||
# Specifies an ordered list of schema files that describe your database.
|
||||
# Supports glob patterns relative to supabase directory: "./schemas/*.sql"
|
||||
schema_paths = []
|
||||
|
||||
[db.seed]
|
||||
# If enabled, seeds the database after migrations during a db reset.
|
||||
enabled = true
|
||||
# Specifies an ordered list of seed files to load during db reset.
|
||||
# Supports glob patterns relative to supabase directory: "./seeds/*.sql"
|
||||
sql_paths = ["./seed.sql"]
|
||||
|
||||
[realtime]
|
||||
enabled = true
|
||||
# Bind realtime via either IPv4 or IPv6. (default: IPv4)
|
||||
# ip_version = "IPv6"
|
||||
# The maximum length in bytes of HTTP request headers. (default: 4096)
|
||||
# max_header_length = 4096
|
||||
|
||||
[studio]
|
||||
enabled = true
|
||||
# Port to use for Supabase Studio.
|
||||
port = 54323
|
||||
# External URL of the API server that frontend connects to.
|
||||
api_url = "http://127.0.0.1"
|
||||
# OpenAI API Key to use for Supabase AI in the Supabase Studio.
|
||||
openai_api_key = "env(OPENAI_API_KEY)"
|
||||
|
||||
# Email testing server. Emails sent with the local dev setup are not actually sent - rather, they
|
||||
# are monitored, and you can view the emails that would have been sent from the web interface.
|
||||
[inbucket]
|
||||
enabled = true
|
||||
# Port to use for the email testing server web interface.
|
||||
port = 54324
|
||||
# Uncomment to expose additional ports for testing user applications that send emails.
|
||||
# smtp_port = 54325
|
||||
# pop3_port = 54326
|
||||
# admin_email = "admin@email.com"
|
||||
# sender_name = "Admin"
|
||||
|
||||
[storage]
|
||||
enabled = true
|
||||
# The maximum file size allowed (e.g. "5MB", "500KB").
|
||||
file_size_limit = "50MiB"
|
||||
|
||||
# Image transformation API is available to Supabase Pro plan.
|
||||
# [storage.image_transformation]
|
||||
# enabled = true
|
||||
|
||||
# Uncomment to configure local storage buckets
|
||||
# [storage.buckets.images]
|
||||
# public = false
|
||||
# file_size_limit = "50MiB"
|
||||
# allowed_mime_types = ["image/png", "image/jpeg"]
|
||||
# objects_path = "./images"
|
||||
|
||||
[auth]
|
||||
enabled = true
|
||||
# The base URL of your website. Used as an allow-list for redirects and for constructing URLs used
|
||||
# in emails.
|
||||
site_url = "http://127.0.0.1:3000"
|
||||
# A list of *exact* URLs that auth providers are permitted to redirect to post authentication.
|
||||
additional_redirect_urls = ["https://127.0.0.1:3000"]
|
||||
# How long tokens are valid for, in seconds. Defaults to 3600 (1 hour), maximum 604,800 (1 week).
|
||||
jwt_expiry = 3600
|
||||
# If disabled, the refresh token will never expire.
|
||||
enable_refresh_token_rotation = true
|
||||
# Allows refresh tokens to be reused after expiry, up to the specified interval in seconds.
|
||||
# Requires enable_refresh_token_rotation = true.
|
||||
refresh_token_reuse_interval = 10
|
||||
# Allow/disallow new user signups to your project.
|
||||
enable_signup = true
|
||||
# Allow/disallow anonymous sign-ins to your project.
|
||||
enable_anonymous_sign_ins = false
|
||||
# Allow/disallow testing manual linking of accounts
|
||||
enable_manual_linking = false
|
||||
# Passwords shorter than this value will be rejected as weak. Minimum 6, recommended 8 or more.
|
||||
minimum_password_length = 6
|
||||
# Passwords that do not meet the following requirements will be rejected as weak. Supported values
|
||||
# are: `letters_digits`, `lower_upper_letters_digits`, `lower_upper_letters_digits_symbols`
|
||||
password_requirements = ""
|
||||
|
||||
[auth.rate_limit]
|
||||
# Number of emails that can be sent per hour. Requires auth.email.smtp to be enabled.
|
||||
email_sent = 2
|
||||
# Number of SMS messages that can be sent per hour. Requires auth.sms to be enabled.
|
||||
sms_sent = 30
|
||||
# Number of anonymous sign-ins that can be made per hour per IP address. Requires enable_anonymous_sign_ins = true.
|
||||
anonymous_users = 30
|
||||
# Number of sessions that can be refreshed in a 5 minute interval per IP address.
|
||||
token_refresh = 150
|
||||
# Number of sign up and sign-in requests that can be made in a 5 minute interval per IP address (excludes anonymous users).
|
||||
sign_in_sign_ups = 30
|
||||
# Number of OTP / Magic link verifications that can be made in a 5 minute interval per IP address.
|
||||
token_verifications = 30
|
||||
|
||||
# Configure one of the supported captcha providers: `hcaptcha`, `turnstile`.
|
||||
# [auth.captcha]
|
||||
# enabled = true
|
||||
# provider = "hcaptcha"
|
||||
# secret = ""
|
||||
|
||||
[auth.email]
|
||||
# Allow/disallow new user signups via email to your project.
|
||||
enable_signup = true
|
||||
# If enabled, a user will be required to confirm any email change on both the old, and new email
|
||||
# addresses. If disabled, only the new email is required to confirm.
|
||||
double_confirm_changes = true
|
||||
# If enabled, users need to confirm their email address before signing in.
|
||||
enable_confirmations = false
|
||||
# If enabled, users will need to reauthenticate or have logged in recently to change their password.
|
||||
secure_password_change = false
|
||||
# Controls the minimum amount of time that must pass before sending another signup confirmation or password reset email.
|
||||
max_frequency = "1s"
|
||||
# Number of characters used in the email OTP.
|
||||
otp_length = 6
|
||||
# Number of seconds before the email OTP expires (defaults to 1 hour).
|
||||
otp_expiry = 3600
|
||||
|
||||
# Use a production-ready SMTP server
|
||||
# [auth.email.smtp]
|
||||
# enabled = true
|
||||
# host = "smtp.sendgrid.net"
|
||||
# port = 587
|
||||
# user = "apikey"
|
||||
# pass = "env(SENDGRID_API_KEY)"
|
||||
# admin_email = "admin@email.com"
|
||||
# sender_name = "Admin"
|
||||
|
||||
# Uncomment to customize email template
|
||||
# [auth.email.template.invite]
|
||||
# subject = "You have been invited"
|
||||
# content_path = "./supabase/templates/invite.html"
|
||||
|
||||
[auth.sms]
|
||||
# Allow/disallow new user signups via SMS to your project.
|
||||
enable_signup = false
|
||||
# If enabled, users need to confirm their phone number before signing in.
|
||||
enable_confirmations = false
|
||||
# Template for sending OTP to users
|
||||
template = "Your code is {{ .Code }}"
|
||||
# Controls the minimum amount of time that must pass before sending another sms otp.
|
||||
max_frequency = "5s"
|
||||
|
||||
# Use pre-defined map of phone number to OTP for testing.
|
||||
# [auth.sms.test_otp]
|
||||
# 4152127777 = "123456"
|
||||
|
||||
# Configure logged in session timeouts.
|
||||
# [auth.sessions]
|
||||
# Force log out after the specified duration.
|
||||
# timebox = "24h"
|
||||
# Force log out if the user has been inactive longer than the specified duration.
|
||||
# inactivity_timeout = "8h"
|
||||
|
||||
# This hook runs before a token is issued and allows you to add additional claims based on the authentication method used.
|
||||
# [auth.hook.custom_access_token]
|
||||
# enabled = true
|
||||
# uri = "pg-functions://<database>/<schema>/<hook_name>"
|
||||
|
||||
# Configure one of the supported SMS providers: `twilio`, `twilio_verify`, `messagebird`, `textlocal`, `vonage`.
|
||||
[auth.sms.twilio]
|
||||
enabled = false
|
||||
account_sid = ""
|
||||
message_service_sid = ""
|
||||
# DO NOT commit your Twilio auth token to git. Use environment variable substitution instead:
|
||||
auth_token = "env(SUPABASE_AUTH_SMS_TWILIO_AUTH_TOKEN)"
|
||||
|
||||
# Multi-factor-authentication is available to Supabase Pro plan.
|
||||
[auth.mfa]
|
||||
# Control how many MFA factors can be enrolled at once per user.
|
||||
max_enrolled_factors = 10
|
||||
|
||||
# Control MFA via App Authenticator (TOTP)
|
||||
[auth.mfa.totp]
|
||||
enroll_enabled = false
|
||||
verify_enabled = false
|
||||
|
||||
# Configure MFA via Phone Messaging
|
||||
[auth.mfa.phone]
|
||||
enroll_enabled = false
|
||||
verify_enabled = false
|
||||
otp_length = 6
|
||||
template = "Your code is {{ .Code }}"
|
||||
max_frequency = "5s"
|
||||
|
||||
# Configure MFA via WebAuthn
|
||||
# [auth.mfa.web_authn]
|
||||
# enroll_enabled = true
|
||||
# verify_enabled = true
|
||||
|
||||
# Use an external OAuth provider. The full list of providers are: `apple`, `azure`, `bitbucket`,
|
||||
# `discord`, `facebook`, `github`, `gitlab`, `google`, `keycloak`, `linkedin_oidc`, `notion`, `twitch`,
|
||||
# `twitter`, `slack`, `spotify`, `workos`, `zoom`.
|
||||
[auth.external.apple]
|
||||
enabled = false
|
||||
client_id = ""
|
||||
# DO NOT commit your OAuth provider secret to git. Use environment variable substitution instead:
|
||||
secret = "env(SUPABASE_AUTH_EXTERNAL_APPLE_SECRET)"
|
||||
# Overrides the default auth redirectUrl.
|
||||
redirect_uri = ""
|
||||
# Overrides the default auth provider URL. Used to support self-hosted gitlab, single-tenant Azure,
|
||||
# or any other third-party OIDC providers.
|
||||
url = ""
|
||||
# If enabled, the nonce check will be skipped. Required for local sign in with Google auth.
|
||||
skip_nonce_check = false
|
||||
|
||||
# Use Firebase Auth as a third-party provider alongside Supabase Auth.
|
||||
[auth.third_party.firebase]
|
||||
enabled = false
|
||||
# project_id = "my-firebase-project"
|
||||
|
||||
# Use Auth0 as a third-party provider alongside Supabase Auth.
|
||||
[auth.third_party.auth0]
|
||||
enabled = false
|
||||
# tenant = "my-auth0-tenant"
|
||||
# tenant_region = "us"
|
||||
|
||||
# Use AWS Cognito (Amplify) as a third-party provider alongside Supabase Auth.
|
||||
[auth.third_party.aws_cognito]
|
||||
enabled = false
|
||||
# user_pool_id = "my-user-pool-id"
|
||||
# user_pool_region = "us-east-1"
|
||||
|
||||
# Use Clerk as a third-party provider alongside Supabase Auth.
|
||||
[auth.third_party.clerk]
|
||||
enabled = false
|
||||
# Obtain from https://clerk.com/setup/supabase
|
||||
# domain = "example.clerk.accounts.dev"
|
||||
|
||||
[edge_runtime]
|
||||
enabled = true
|
||||
# Configure one of the supported request policies: `oneshot`, `per_worker`.
|
||||
# Use `oneshot` for hot reload, or `per_worker` for load testing.
|
||||
policy = "oneshot"
|
||||
# Port to attach the Chrome inspector for debugging edge functions.
|
||||
inspector_port = 8083
|
||||
# The Deno major version to use.
|
||||
deno_version = 1
|
||||
|
||||
# [edge_runtime.secrets]
|
||||
# secret_key = "env(SECRET_VALUE)"
|
||||
|
||||
[analytics]
|
||||
enabled = true
|
||||
port = 54327
|
||||
# Configure one of the supported backends: `postgres`, `bigquery`.
|
||||
backend = "postgres"
|
||||
|
||||
# Experimental features may be deprecated any time
|
||||
[experimental]
|
||||
# Configures Postgres storage engine to use OrioleDB (S3)
|
||||
orioledb_version = ""
|
||||
# Configures S3 bucket URL, eg. <bucket_name>.s3-<region>.amazonaws.com
|
||||
s3_host = "env(S3_HOST)"
|
||||
# Configures S3 bucket region, eg. us-east-1
|
||||
s3_region = "env(S3_REGION)"
|
||||
# Configures AWS_ACCESS_KEY_ID for S3 bucket
|
||||
s3_access_key = "env(S3_ACCESS_KEY)"
|
||||
# Configures AWS_SECRET_ACCESS_KEY for S3 bucket
|
||||
s3_secret_key = "env(S3_SECRET_KEY)"
|
||||
615
supabase/migrations/20260615044204_remote_schema.sql
Normal file
615
supabase/migrations/20260615044204_remote_schema.sql
Normal file
|
|
@ -0,0 +1,615 @@
|
|||
|
||||
|
||||
|
||||
SET statement_timeout = 0;
|
||||
SET lock_timeout = 0;
|
||||
SET idle_in_transaction_session_timeout = 0;
|
||||
SET client_encoding = 'UTF8';
|
||||
SET standard_conforming_strings = on;
|
||||
SELECT pg_catalog.set_config('search_path', '', false);
|
||||
SET check_function_bodies = false;
|
||||
SET xmloption = content;
|
||||
SET client_min_messages = warning;
|
||||
SET row_security = off;
|
||||
|
||||
|
||||
COMMENT ON SCHEMA "public" IS 'standard public schema';
|
||||
|
||||
|
||||
|
||||
CREATE EXTENSION IF NOT EXISTS "pg_stat_statements" WITH SCHEMA "extensions";
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
CREATE EXTENSION IF NOT EXISTS "pgcrypto" WITH SCHEMA "extensions";
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
CREATE EXTENSION IF NOT EXISTS "supabase_vault" WITH SCHEMA "vault";
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
CREATE EXTENSION IF NOT EXISTS "uuid-ossp" WITH SCHEMA "extensions";
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
SET default_tablespace = '';
|
||||
|
||||
SET default_table_access_method = "heap";
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "public"."companies" (
|
||||
"id" bigint NOT NULL,
|
||||
"name" "text" NOT NULL,
|
||||
"created_at" timestamp with time zone DEFAULT "now"()
|
||||
);
|
||||
|
||||
|
||||
ALTER TABLE "public"."companies" OWNER TO "postgres";
|
||||
|
||||
|
||||
ALTER TABLE "public"."companies" ALTER COLUMN "id" ADD GENERATED BY DEFAULT AS IDENTITY (
|
||||
SEQUENCE NAME "public"."companies_id_seq"
|
||||
START WITH 1
|
||||
INCREMENT BY 1
|
||||
NO MINVALUE
|
||||
NO MAXVALUE
|
||||
CACHE 1
|
||||
);
|
||||
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "public"."daily_stats" (
|
||||
"id" bigint NOT NULL,
|
||||
"plant_id" "text" NOT NULL,
|
||||
"date" "date" NOT NULL,
|
||||
"total_generation" double precision DEFAULT 0.0,
|
||||
"peak_kw" double precision DEFAULT 0.0,
|
||||
"generation_hours" double precision DEFAULT 0.0,
|
||||
"created_at" timestamp with time zone DEFAULT "now"()
|
||||
);
|
||||
|
||||
|
||||
ALTER TABLE "public"."daily_stats" OWNER TO "postgres";
|
||||
|
||||
|
||||
COMMENT ON TABLE "public"."daily_stats" IS '일일 발전 통계 요약 테이블';
|
||||
|
||||
|
||||
|
||||
COMMENT ON COLUMN "public"."daily_stats"."total_generation" IS '당일 총 발전량 (kWh)';
|
||||
|
||||
|
||||
|
||||
COMMENT ON COLUMN "public"."daily_stats"."peak_kw" IS '당일 최고 출력 (kW)';
|
||||
|
||||
|
||||
|
||||
COMMENT ON COLUMN "public"."daily_stats"."generation_hours" IS '발전 시간 = 발전량 / 설비용량';
|
||||
|
||||
|
||||
|
||||
ALTER TABLE "public"."daily_stats" ALTER COLUMN "id" ADD GENERATED BY DEFAULT AS IDENTITY (
|
||||
SEQUENCE NAME "public"."daily_stats_id_seq"
|
||||
START WITH 1
|
||||
INCREMENT BY 1
|
||||
NO MINVALUE
|
||||
NO MAXVALUE
|
||||
CACHE 1
|
||||
);
|
||||
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "public"."monthly_stats" (
|
||||
"id" bigint NOT NULL,
|
||||
"plant_id" "text" NOT NULL,
|
||||
"month" "text" NOT NULL,
|
||||
"total_generation" double precision DEFAULT 0,
|
||||
"currnet_last_date" "text",
|
||||
"updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()) NOT NULL
|
||||
);
|
||||
|
||||
|
||||
ALTER TABLE "public"."monthly_stats" OWNER TO "postgres";
|
||||
|
||||
|
||||
ALTER TABLE "public"."monthly_stats" ALTER COLUMN "id" ADD GENERATED BY DEFAULT AS IDENTITY (
|
||||
SEQUENCE NAME "public"."monthly_stats_id_seq"
|
||||
START WITH 1
|
||||
INCREMENT BY 1
|
||||
NO MINVALUE
|
||||
NO MAXVALUE
|
||||
CACHE 1
|
||||
);
|
||||
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "public"."plants" (
|
||||
"id" "text" NOT NULL,
|
||||
"company_id" bigint,
|
||||
"name" "text" NOT NULL,
|
||||
"type" "text",
|
||||
"created_at" timestamp with time zone DEFAULT "now"(),
|
||||
"capacity" double precision DEFAULT 100.0,
|
||||
"initial_cumulative_kwh" double precision DEFAULT 0.0,
|
||||
"constructed_at" "date",
|
||||
"alerts_enabled" boolean DEFAULT true
|
||||
);
|
||||
|
||||
|
||||
ALTER TABLE "public"."plants" OWNER TO "postgres";
|
||||
|
||||
|
||||
COMMENT ON COLUMN "public"."plants"."initial_cumulative_kwh" IS '시스템 도입 이전의 누적 발전량 (기초 자산)';
|
||||
|
||||
|
||||
|
||||
COMMENT ON COLUMN "public"."plants"."alerts_enabled" IS '발전소 이상 감지 알림 활성화 여부 (true: 알림 켬, false: 알림 끔)';
|
||||
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "public"."solar_logs" (
|
||||
"id" bigint NOT NULL,
|
||||
"plant_id" "text",
|
||||
"current_kw" double precision,
|
||||
"today_kwh" double precision,
|
||||
"status" "text",
|
||||
"created_at" timestamp with time zone DEFAULT "now"()
|
||||
);
|
||||
|
||||
|
||||
ALTER TABLE "public"."solar_logs" OWNER TO "postgres";
|
||||
|
||||
|
||||
ALTER TABLE "public"."solar_logs" ALTER COLUMN "id" ADD GENERATED BY DEFAULT AS IDENTITY (
|
||||
SEQUENCE NAME "public"."solar_logs_id_seq"
|
||||
START WITH 1
|
||||
INCREMENT BY 1
|
||||
NO MINVALUE
|
||||
NO MAXVALUE
|
||||
CACHE 1
|
||||
);
|
||||
|
||||
|
||||
|
||||
ALTER TABLE ONLY "public"."companies"
|
||||
ADD CONSTRAINT "companies_pkey" PRIMARY KEY ("id");
|
||||
|
||||
|
||||
|
||||
ALTER TABLE ONLY "public"."daily_stats"
|
||||
ADD CONSTRAINT "daily_stats_pkey" PRIMARY KEY ("id");
|
||||
|
||||
|
||||
|
||||
ALTER TABLE ONLY "public"."daily_stats"
|
||||
ADD CONSTRAINT "daily_stats_plant_date_unique" UNIQUE ("plant_id", "date");
|
||||
|
||||
|
||||
|
||||
ALTER TABLE ONLY "public"."monthly_stats"
|
||||
ADD CONSTRAINT "monthly_stats_pkey" PRIMARY KEY ("id");
|
||||
|
||||
|
||||
|
||||
ALTER TABLE ONLY "public"."monthly_stats"
|
||||
ADD CONSTRAINT "monthly_stats_plant_month_key" UNIQUE ("plant_id", "month");
|
||||
|
||||
|
||||
|
||||
ALTER TABLE ONLY "public"."plants"
|
||||
ADD CONSTRAINT "plants_pkey" PRIMARY KEY ("id");
|
||||
|
||||
|
||||
|
||||
ALTER TABLE ONLY "public"."solar_logs"
|
||||
ADD CONSTRAINT "solar_logs_pkey" PRIMARY KEY ("id");
|
||||
|
||||
|
||||
|
||||
CREATE INDEX "idx_daily_stats_date" ON "public"."daily_stats" USING "btree" ("date");
|
||||
|
||||
|
||||
|
||||
CREATE INDEX "idx_daily_stats_plant_date" ON "public"."daily_stats" USING "btree" ("plant_id", "date");
|
||||
|
||||
|
||||
|
||||
CREATE INDEX "idx_daily_stats_plant_id" ON "public"."daily_stats" USING "btree" ("plant_id");
|
||||
|
||||
|
||||
|
||||
ALTER TABLE ONLY "public"."daily_stats"
|
||||
ADD CONSTRAINT "daily_stats_plant_id_fkey" FOREIGN KEY ("plant_id") REFERENCES "public"."plants"("id") ON DELETE CASCADE;
|
||||
|
||||
|
||||
|
||||
ALTER TABLE ONLY "public"."plants"
|
||||
ADD CONSTRAINT "plants_company_id_fkey" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id");
|
||||
|
||||
|
||||
|
||||
ALTER TABLE ONLY "public"."solar_logs"
|
||||
ADD CONSTRAINT "solar_logs_plant_id_fkey" FOREIGN KEY ("plant_id") REFERENCES "public"."plants"("id");
|
||||
|
||||
|
||||
|
||||
CREATE POLICY "Allow anon insert update" ON "public"."daily_stats" TO "anon" USING (true) WITH CHECK (true);
|
||||
|
||||
|
||||
|
||||
CREATE POLICY "Allow anonymous read access on daily_stats" ON "public"."daily_stats" FOR SELECT TO "anon" USING (true);
|
||||
|
||||
|
||||
|
||||
CREATE POLICY "Allow anonymous read access on monthly_stats" ON "public"."monthly_stats" FOR SELECT TO "anon" USING (true);
|
||||
|
||||
|
||||
|
||||
CREATE POLICY "Allow anonymous read access on plants" ON "public"."plants" FOR SELECT TO "anon" USING (true);
|
||||
|
||||
|
||||
|
||||
CREATE POLICY "Allow anonymous read access on solar_logs" ON "public"."solar_logs" FOR SELECT TO "anon" USING (true);
|
||||
|
||||
|
||||
|
||||
CREATE POLICY "Allow authenticated full access on daily_stats" ON "public"."daily_stats" TO "authenticated" USING (true) WITH CHECK (true);
|
||||
|
||||
|
||||
|
||||
CREATE POLICY "Allow authenticated full access on monthly_stats" ON "public"."monthly_stats" TO "authenticated" USING (true) WITH CHECK (true);
|
||||
|
||||
|
||||
|
||||
CREATE POLICY "Allow authenticated full access on plants" ON "public"."plants" TO "authenticated" USING (true) WITH CHECK (true);
|
||||
|
||||
|
||||
|
||||
CREATE POLICY "Allow authenticated full access on solar_logs" ON "public"."solar_logs" TO "authenticated" USING (true) WITH CHECK (true);
|
||||
|
||||
|
||||
|
||||
CREATE POLICY "Allow public read access" ON "public"."companies" FOR SELECT TO "authenticated", "anon" USING (true);
|
||||
|
||||
|
||||
|
||||
CREATE POLICY "Allow service_role full access on daily_stats" ON "public"."daily_stats" TO "service_role" USING (true) WITH CHECK (true);
|
||||
|
||||
|
||||
|
||||
CREATE POLICY "Allow service_role full access on monthly_stats" ON "public"."monthly_stats" TO "service_role" USING (true) WITH CHECK (true);
|
||||
|
||||
|
||||
|
||||
CREATE POLICY "Allow service_role full access on solar_logs" ON "public"."solar_logs" TO "service_role" USING (true) WITH CHECK (true);
|
||||
|
||||
|
||||
|
||||
CREATE POLICY "Public Select" ON "public"."monthly_stats" FOR SELECT USING (true);
|
||||
|
||||
|
||||
|
||||
CREATE POLICY "Service Role Insert" ON "public"."monthly_stats" FOR INSERT WITH CHECK (true);
|
||||
|
||||
|
||||
|
||||
CREATE POLICY "Service Role Update" ON "public"."monthly_stats" FOR UPDATE USING (true);
|
||||
|
||||
|
||||
|
||||
ALTER TABLE "public"."companies" ENABLE ROW LEVEL SECURITY;
|
||||
|
||||
|
||||
ALTER TABLE "public"."daily_stats" ENABLE ROW LEVEL SECURITY;
|
||||
|
||||
|
||||
ALTER TABLE "public"."monthly_stats" ENABLE ROW LEVEL SECURITY;
|
||||
|
||||
|
||||
ALTER TABLE "public"."plants" ENABLE ROW LEVEL SECURITY;
|
||||
|
||||
|
||||
ALTER TABLE "public"."solar_logs" ENABLE ROW LEVEL SECURITY;
|
||||
|
||||
|
||||
|
||||
|
||||
ALTER PUBLICATION "supabase_realtime" OWNER TO "postgres";
|
||||
|
||||
|
||||
GRANT USAGE ON SCHEMA "public" TO "postgres";
|
||||
GRANT USAGE ON SCHEMA "public" TO "anon";
|
||||
GRANT USAGE ON SCHEMA "public" TO "authenticated";
|
||||
GRANT USAGE ON SCHEMA "public" TO "service_role";
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
GRANT ALL ON TABLE "public"."companies" TO "anon";
|
||||
GRANT ALL ON TABLE "public"."companies" TO "authenticated";
|
||||
GRANT ALL ON TABLE "public"."companies" TO "service_role";
|
||||
|
||||
|
||||
|
||||
GRANT ALL ON SEQUENCE "public"."companies_id_seq" TO "anon";
|
||||
GRANT ALL ON SEQUENCE "public"."companies_id_seq" TO "authenticated";
|
||||
GRANT ALL ON SEQUENCE "public"."companies_id_seq" TO "service_role";
|
||||
|
||||
|
||||
|
||||
GRANT ALL ON TABLE "public"."daily_stats" TO "anon";
|
||||
GRANT ALL ON TABLE "public"."daily_stats" TO "authenticated";
|
||||
GRANT ALL ON TABLE "public"."daily_stats" TO "service_role";
|
||||
|
||||
|
||||
|
||||
GRANT ALL ON SEQUENCE "public"."daily_stats_id_seq" TO "anon";
|
||||
GRANT ALL ON SEQUENCE "public"."daily_stats_id_seq" TO "authenticated";
|
||||
GRANT ALL ON SEQUENCE "public"."daily_stats_id_seq" TO "service_role";
|
||||
|
||||
|
||||
|
||||
GRANT ALL ON TABLE "public"."monthly_stats" TO "anon";
|
||||
GRANT ALL ON TABLE "public"."monthly_stats" TO "authenticated";
|
||||
GRANT ALL ON TABLE "public"."monthly_stats" TO "service_role";
|
||||
|
||||
|
||||
|
||||
GRANT ALL ON SEQUENCE "public"."monthly_stats_id_seq" TO "anon";
|
||||
GRANT ALL ON SEQUENCE "public"."monthly_stats_id_seq" TO "authenticated";
|
||||
GRANT ALL ON SEQUENCE "public"."monthly_stats_id_seq" TO "service_role";
|
||||
|
||||
|
||||
|
||||
GRANT ALL ON TABLE "public"."plants" TO "anon";
|
||||
GRANT ALL ON TABLE "public"."plants" TO "authenticated";
|
||||
GRANT ALL ON TABLE "public"."plants" TO "service_role";
|
||||
|
||||
|
||||
|
||||
GRANT ALL ON TABLE "public"."solar_logs" TO "anon";
|
||||
GRANT ALL ON TABLE "public"."solar_logs" TO "authenticated";
|
||||
GRANT ALL ON TABLE "public"."solar_logs" TO "service_role";
|
||||
|
||||
|
||||
|
||||
GRANT ALL ON SEQUENCE "public"."solar_logs_id_seq" TO "anon";
|
||||
GRANT ALL ON SEQUENCE "public"."solar_logs_id_seq" TO "authenticated";
|
||||
GRANT ALL ON SEQUENCE "public"."solar_logs_id_seq" TO "service_role";
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON SEQUENCES TO "postgres";
|
||||
ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON SEQUENCES TO "anon";
|
||||
ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON SEQUENCES TO "authenticated";
|
||||
ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON SEQUENCES TO "service_role";
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON FUNCTIONS TO "postgres";
|
||||
ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON FUNCTIONS TO "anon";
|
||||
ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON FUNCTIONS TO "authenticated";
|
||||
ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON FUNCTIONS TO "service_role";
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON TABLES TO "postgres";
|
||||
ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON TABLES TO "anon";
|
||||
ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON TABLES TO "authenticated";
|
||||
ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON TABLES TO "service_role";
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user