geolite
Version:
A lightweight geo data toolkit with countries, states, cities, timezones, currencies, and dialing codes. Works with Prisma and SQLite.
3 lines (2 loc) • 1.69 kB
JavaScript
"use server";var a=Object.defineProperty;var r=(e,t)=>a(e,"name",{value:t,configurable:!0});import o from"../utils/prisma";async function l(){return await o.timezone.findMany({select:{name:!0,offset:!0,offsetMinutes:!0},orderBy:{name:"asc"}})}r(l,"getAllTimezones");async function z(e){return e?await o.timezone.findUnique({where:{name:e},select:{name:!0,offset:!0,offsetMinutes:!0,countryTimezones:{select:{country:{select:{code:!0,name:!0}}}},stateTimezones:{select:{state:{select:{id:!0,name:!0}}}}}}):null}r(z,"getTimezoneByName");async function s(e){return e?(await o.country.findMany({where:{countryCode:e},select:{timezones:{select:{name:!0,offset:!0,offsetMinutes:!0}}}})).map(n=>n.timezones).sort((n,i)=>n.name.localeCompare(i.name)):[]}r(s,"getTimezonesOfCountry");async function m(e){if(!e)return[];const t=await o.state.findMany({where:{stateId:e},select:{timezones:{select:{name:!0,offset:!0,offsetMinutes:!0}}}});if(t.length>0)return t.map(i=>i.timezones).sort((i,u)=>i.name.localeCompare(u.name));const n=await o.state.findUnique({where:{id:parseInt(e.toString())},select:{countryCode:!0}});return n?.countryCode?await s(n.countryCode):[]}r(m,"getTimezonesOfState");async function y(e){if(!e)return null;const t=await o.city.findUnique({where:{id:parseInt(e.toString())},select:{timezone:{select:{name:!0,offset:!0,offsetMinutes:!0}},stateId:!0,countryCode:!0}});return t?.timezone?t.timezone:t?.stateId?(await m(t.stateId))[0]||null:t?.countryCode&&(await s(t.countryCode))[0]||null}r(y,"getTimezoneOfCity");export{l as getAllTimezones,z as getTimezoneByName,y as getTimezoneOfCity,s as getTimezonesOfCountry,m as getTimezonesOfState};
//# sourceMappingURL=timezone.js.map