function doGet(e) {
return HtmlService.createHtmlOutputFromFile('Index')
.setTitle('Retro Bowl Hub')
.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL)
.addMetaTag('viewport', 'width=device-width, initial-scale=1');
}
// Google Sheets Database API Replacement for Drizzle/Postgres
function getDb() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ['members', 'tickets', 'giveaways'];
sheets.forEach(function(s) {
if (!ss.getSheetByName(s)) {
var sheet = ss.insertSheet(s);
if (s === 'members') sheet.appendRow(['id', 'username', 'token', 'rank', 'lastSeen']);
if (s === 'tickets') sheet.appendRow(['id', 'username', 'subject', 'category', 'status', 'messages']);
if (s === 'giveaways') sheet.appendRow(['id', 'username', 'displayName', 'timestamp']);
}
});
return ss;
}
function apiRegisterUser(username) {
var ss = getDb();
var sheet = ss.getSheetByName('members');
var data = sheet.getDataRange().getValues();
for (var i = 1; i < data.length; i++) {
if (data[i][1].toString().toLowerCase() === username.toLowerCase()) {
return { success: false, error: 'Username taken' };
}
}
var token = Utilities.getUuid();
var id = data.length;
sheet.appendRow([id, username, token, 'Member', new Date()]);
return { success: true, user: { id: id, username: username, rank: 'Member', token: token } };
}